fix backports and system modules

- Refactored `is_backports_enabled()` to dynamically detect backports using `DEBIAN_CODENAME` instead of hardcoded strings, improving script portability.
- Added support for standalone classic backports files (`/etc/apt/sources.list.d/debian-backports.list`) and deb822 format (`*.sources`) to ensure consistent detection across different repository configurations.
- Resolved Mesa and Kernel backports detection bugs, ensuring correct dialogue prompts and preventing false error messages during installation.
- Implemented smart rounding for zram memory allocation to the nearest Gigabyte for optimized performance.
- Enhanced Whiptail manual input validation for zram to block empty, non-numeric, or zero values.
- Introduced a dedicated `software_centers.sh` module for the modular and clean installation of GNOME Software and Plasma Discover.
- Added smart desktop environment detection (GTK/QT) to automatically suggest and install the optimal software center.
- Implemented a two-phase installation flow for software centers (Base Store -> Optional Flatpak support) with static consistency warnings based on the detected desktop environment.
- update README.md
This commit is contained in:
stornic56
2026-06-14 22:01:56 -05:00
committed by GitHub
parent 872f92d6b4
commit 23301f98b3
7 changed files with 161 additions and 45 deletions
+12 -7
View File
@@ -49,16 +49,16 @@ After running the script:
|--------|-------------|--------------| |--------|-------------|--------------|
| **1** | System Info | Show detected OS, CPU, RAM, GPU and hardware details | | **1** | System Info | Show detected OS, CPU, RAM, GPU and hardware details |
| **2** | [User Privileges & Feedback](#user-privileges--feedback) | Configure sudo group membership, enable passwordless sudo for frequent tasks, repair home directory ownership issues, and toggle visual password feedback (asterisks) in terminal | | **2** | [User Privileges & Feedback](#user-privileges--feedback) | Configure sudo group membership, enable passwordless sudo for frequent tasks, repair home directory ownership issues, and toggle visual password feedback (asterisks) in terminal |
| **3** | Configure Repositories | Setup official repos with/without backports (deb822 or classic format)| | **3** | Configure Repositories | Setup official repos with/without backports (deb822 or classic format) and non-free/contrib|
| **4** | Setup Wireless & Firmware | Install WiFi firmware for Broadcom, Intel, and other chipsets| | **4** | Setup Wireless & Firmware | Install WiFi firmware for Broadcom, Intel, and other chipsets|
| **5** | Configure Graphics Stack | AMD/Intel/NVIDIA drivers + monitoring tools | | **5** | Configure Graphics Stack | AMD/Intel/NVIDIA drivers + monitoring tools |
| **6** | Update Kernel to Backports | Install latest stable kernel from Debian backports| | **6** | Update Kernel to Backports | Install latest kernel from Debian backports|
| **7** | Gaming Setup and Performance | Steam, Heroic Games Launcher, GameMode, MangoHud, Java JRE (Temurin 8/17/21) | | **7** | Gaming Setup and Performance | Steam, Heroic Games Launcher, GameMode, MangoHud, Java JRE (Temurin 8/17/21) |
| **8** | Install ZRAM (compressed swap) | Configure compressed RAM for memory optimization| | **8** | Install ZRAM (compressed swap) | Configure compressed RAM for memory optimization|
| **9** | Install Programs and Software | Selection across 10 categories (Dev, Themes, System, etc.) | | **9** | Install Programs and Software | Selection from several categories (Development, Themes, System, etc.) |
| **10** | Exit | Return to terminal | | **10** | Exit | Return to terminal |
### Extra Applications Categories (Option 9) ### Install Programs and Software (Option 9)
The submenu offers the next categories: The submenu offers the next categories:
@@ -73,9 +73,10 @@ The submenu offers the next categories:
| **6** | Code Editors & IDEs | vim, vim-gtk3, Neovim, Helix, nano, Emacs, Kate, Mousepad, Gedit, Geany, GNOME Text Editor, and VSCodium (VS Code open-source) | | **6** | Code Editors & IDEs | vim, vim-gtk3, Neovim, Helix, nano, Emacs, Kate, Mousepad, Gedit, Geany, GNOME Text Editor, and VSCodium (VS Code open-source) |
| **7** | Servers & Dev Tools | Web servers (Nginx/Apache), databases (PostgreSQL/MariaDB), Java Development Kit (Temurin 17/21/25 JDK), Docker, Python, SSH tools, fail2ban, and essential utilities | | **7** | Servers & Dev Tools | Web servers (Nginx/Apache), databases (PostgreSQL/MariaDB), Java Development Kit (Temurin 17/21/25 JDK), Docker, Python, SSH tools, fail2ban, and essential utilities |
| **8** | Security & Networking | Wireshark, tcpdump, Zenmap, ClamAV, UFW, Fail2ban | | **8** | Security & Networking | Wireshark, tcpdump, Zenmap, ClamAV, UFW, Fail2ban |
| **9** | System Tools | htop/btop, ncdu, Timeshift, tmux/screen, Flatpak support, extension repository manager, and qemu/virtmanager | | **9** | Software Centers | Choose a software store to install |
| **10** | Fetch / System Info | fastfetch/neofetch, hyfetch, Linux logo and screenfetch | | **10** | System Tools | htop/btop, ncdu, Timeshift, tmux/screen, Flatpak support, extension repository manager, and qemu/virtmanager |
| **11** | Back to Main Menu | Return directly to the main Debianito menu (exit submenu) | | **11** | Fetch / System Info | fastfetch/neofetch, hyfetch, Linux logo and screenfetch |
| **12** | Back to Main Menu | Return directly to the main Debianito menu (exit submenu) |
--- ---
@@ -135,6 +136,7 @@ By default, Debians terminal hides your password (no asterisks or feedback).
│   │   ├── security │   │   ├── security
│   │   │   └── security.sh │   │   │   └── security.sh
│   │   ├── system │   │   ├── system
│   │   │   ├── software_centers.sh
│   │   │   └── system.sh │   │   │   └── system.sh
│   │   └── themes │   │   └── themes
│   │   ├── cursors │   │   ├── cursors
@@ -160,11 +162,14 @@ By default, Debians terminal hides your password (no asterisks or feedback).
│   │   └── nvidia.sh │   │   └── nvidia.sh
│   ├── gpu.sh │   ├── gpu.sh
│   ├── kernel.sh │   ├── kernel.sh
│   ├── repos
│   │   └── repo_detect.sh
│   ├── repos.sh │   ├── repos.sh
│   ├── sudo_config.sh │   ├── sudo_config.sh
│   ├── utils.sh │   ├── utils.sh
│   └── zram.sh │   └── zram.sh
└── README.md └── README.md
``` ```
--- ---
+38 -6
View File
@@ -534,9 +534,10 @@ install_extras_bullseye() {
"6" "Code Editors & IDEs" \ "6" "Code Editors & IDEs" \
"7" "Servers & Dev Tools" \ "7" "Servers & Dev Tools" \
"8" "Security & Networking" \ "8" "Security & Networking" \
"9" "System Tools" \ "9" "Software Centers" \
"10" "Fetch / System Info" \ "10" "System Tools" \
"11" "Back to main menu" \ "11" "Fetch / System Info" \
"12" "Back to main menu" \
3>&1 1>&2 2>&3) 3>&1 1>&2 2>&3)
[ -z "$cat_choice" ] && return [ -z "$cat_choice" ] && return
@@ -552,10 +553,41 @@ install_extras_bullseye() {
6) _cat_programming_bullseye ;; 6) _cat_programming_bullseye ;;
7) _cat_dev_bullseye ;; 7) _cat_dev_bullseye ;;
8) _cat_security_bullseye ;; 8) _cat_security_bullseye ;;
9) _cat_general_bullseye ;; 9) _cat_software_centers_bullseye ;;
10) _cat_fetch_bullseye ;; 10) _cat_general_bullseye ;;
11) return ;; 11) _cat_fetch_bullseye ;;
12) return ;;
esac esac
clear clear
done done
} }
_cat_software_centers_bullseye() {
local sc_choice
sc_choice=$(whiptail --title "Software Centers" --menu \
"Choose a software store to install:" 12 65 2 \
"gnome-software" "Software Center for GNOME" \
"plasma-discover" "Software manager for Plasma" \
3>&1 1>&2 2>&3)
[ -z "$sc_choice" ] && return
_run_cmd "Install" "sudo apt install -y $sc_choice" "Installing ${sc_choice}..."
if _confirm "Flatpak Support" "Do you want to enable Flatpak support for this software center?"; then
local bpkg
if [ "$sc_choice" = "gnome-software" ]; then
bpkg="gnome-software-plugin-flatpak"
else
bpkg="plasma-discover-backend-flatpak"
fi
if ! is_installed "flatpak"; then
_run_cmd "Flatpak" "sudo apt install -y flatpak" "Installing Flatpak..."
fi
_run_cmd "Plugin" "sudo apt install -y $bpkg" "Installing $bpkg..."
flatpak remote-add --if-not-exists flathub \
https://dl.flathub.org/repo/flathub.flatpakrepo
echo "Flathub repository added."
fi
echo -e "${GREEN}Software store installed.${NC}"
}
+8 -6
View File
@@ -38,9 +38,10 @@ install_extras() {
"6" "Code Editors & IDEs" \ "6" "Code Editors & IDEs" \
"7" "Servers & Dev Tools" \ "7" "Servers & Dev Tools" \
"8" "Security & Networking" \ "8" "Security & Networking" \
"9" "System Tools" \ "9" "Software Centers" \
"10" "Fetch / System Info" \ "10" "System Tools" \
"11" "Back to main menu" \ "11" "Fetch / System Info" \
"12" "Back to main menu" \
3>&1 1>&2 2>&3) 3>&1 1>&2 2>&3)
[ -z "$cat_choice" ] && return [ -z "$cat_choice" ] && return
@@ -56,9 +57,10 @@ install_extras() {
6) _cat_programming ;; 6) _cat_programming ;;
7) _cat_dev ;; 7) _cat_dev ;;
8) _cat_security ;; 8) _cat_security ;;
9) _cat_general ;; 9) _cat_software_centers ;;
10) _cat_fetch ;; 10) _cat_general ;;
11) return ;; 11) _cat_fetch ;;
12) return ;;
esac esac
clear clear
done done
+40
View File
@@ -0,0 +1,40 @@
# software_centers.sh — Standalone Software Center installer
_cat_software_centers() {
local de_type
de_type=$(_detect_desktop_type)
local sc_choice
sc_choice=$(whiptail --title "Software Centers" --menu \
"Choose a software store to install:" 12 65 2 \
"gnome-software" "Software Center for GNOME" \
"plasma-discover" "Software manager for Plasma" \
3>&1 1>&2 2>&3)
[ -z "$sc_choice" ] && return
if { [ "$de_type" = "qt" ] && [ "$sc_choice" = "gnome-software" ]; } || \
{ [ "$de_type" = "gtk" ] && [ "$sc_choice" = "plasma-discover" ]; }; then
_msg "Warning" "Warning: This store requires extra background libraries \
and may look visually inconsistent with your current desktop environment."
! _confirm "Continue?" "Install anyway?" && return
fi
_run_cmd "Install" "sudo apt install -y $sc_choice" "Installing ${sc_choice}..."
if _confirm "Flatpak Support" "Do you want to enable Flatpak support for this software center?"; then
local bpkg
if [ "$sc_choice" = "gnome-software" ]; then
bpkg="gnome-software-plugin-flatpak"
else
bpkg="plasma-discover-backend-flatpak"
fi
if ! is_installed "flatpak"; then
_run_cmd "Flatpak" "sudo apt install -y flatpak" "Installing Flatpak..."
fi
_run_cmd "Plugin" "sudo apt install -y $bpkg" "Installing $bpkg..."
flatpak remote-add --if-not-exists flathub \
https://dl.flathub.org/repo/flathub.flatpakrepo
echo "Flathub repository added."
fi
echo -e "${GREEN}Software store installed.${NC}"
}
+42 -7
View File
@@ -1,6 +1,21 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# system.sh — System Tools (extrepo moved here from Dev & Servers) # system.sh — System Tools (extrepo moved here from Dev & Servers)
_detect_desktop_type() {
local desktop
desktop="${XDG_CURRENT_DESKTOP:-${DESKTOP_SESSION:-}}"
desktop="${desktop,,}"
case "$desktop" in
*kde*|*lxqt*|*razor*|*plasma*)
echo "qt"; return ;;
*gnome*|*xfce*|*cinnamon*|*mate*|*lxde*|*budgie*|*sway*|*hyprland*|*i3*|*bspwm*|*openbox*|*fluxbox*)
echo "gtk"; return ;;
esac
echo "gtk"
}
_cat_general() { _cat_general() {
local headless=false local headless=false
_is_headless && headless=true _is_headless && headless=true
@@ -113,19 +128,38 @@ _cat_general() {
flatpak) flatpak)
if ! is_installed "flatpak"; then if ! is_installed "flatpak"; then
_run_cmd "Flatpak" "sudo apt install -y flatpak" "Installing Flatpak..." _run_cmd "Flatpak" "sudo apt install -y flatpak" "Installing Flatpak..."
if command -v plasma-discover &>/dev/null; then
_run_cmd "Flatpak" "sudo apt install -y plasma-discover-backend-flatpak" "Installing Flatpak backend..."
echo "Flatpak backend for Discover installed."
elif command -v gnome-software &>/dev/null; then
_run_cmd "Flatpak" "sudo apt install -y gnome-software-plugin-flatpak" "Installing Flatpak plugin..."
echo "Flatpak plugin for GNOME Software installed."
fi
else else
echo "Flatpak already installed." echo "Flatpak already installed."
fi fi
flatpak remote-add --if-not-exists flathub \ flatpak remote-add --if-not-exists flathub \
https://dl.flathub.org/repo/flathub.flatpakrepo https://dl.flathub.org/repo/flathub.flatpakrepo
echo "Flathub repository added." echo "Flathub repository added."
if command -v plasma-discover &>/dev/null; then
if ! is_installed "plasma-discover-backend-flatpak" 2>/dev/null; then
if _confirm "Discover Backend" "Install Flatpak backend for Plasma Discover?"; then
_run_cmd "Backend" "sudo apt install -y plasma-discover-backend-flatpak" "Installing Flatpak backend..."
fi
fi
elif command -v gnome-software &>/dev/null; then
if ! is_installed "gnome-software-plugin-flatpak" 2>/dev/null; then
if _confirm "GNOME Plugin" "Install Flatpak plugin for GNOME Software?"; then
_run_cmd "Plugin" "sudo apt install -y gnome-software-plugin-flatpak" "Installing Flatpak plugin..."
fi
fi
else
local de_type
de_type=$(_detect_desktop_type)
if [ "$de_type" = "qt" ]; then
if _confirm "Software Center" "Install Plasma Discover for Flatpak management?"; then
_run_cmd "Discover" "sudo apt install -y plasma-discover plasma-discover-backend-flatpak" "Installing Discover..."
fi
else
if _confirm "Software Center" "Install GNOME Software for Flatpak management?"; then
_run_cmd "GNOME Software" "sudo apt install -y gnome-software gnome-software-plugin-flatpak" "Installing GNOME Software..."
fi
fi
fi
echo -e "${GREEN}A reboot is recommended.${NC}" echo -e "${GREEN}A reboot is recommended.${NC}"
;; ;;
fwupd) fwupd)
@@ -191,3 +225,4 @@ _cat_general() {
echo -e "${GREEN}System tools installed.${NC}" echo -e "${GREEN}System tools installed.${NC}"
} }
+17 -15
View File
@@ -265,24 +265,26 @@ get_intel_generation() {
# Check if backports repository is enabled (active line without #) # Check if backports repository is enabled (active line without #)
# ---------------------------------------------------------------------- # ----------------------------------------------------------------------
is_backports_enabled() { is_backports_enabled() {
# Check classic sources.list local codename="${DEBIAN_CODENAME:-}"
if [ -f /etc/apt/sources.list ]; then [ -z "$codename" ] && { echo false; return; }
if grep -Eq '^[^#]*[ \t]+bookworm-backports[ \t]+' /etc/apt/sources.list 2>/dev/null; then
echo true local c_pattern="^[^#]*${codename}-backports[[:space:]]+"
return local d_pattern="Suites:.*${codename}-backports"
fi
if grep -Eq '^[^#]*[ \t]+trixie-backports[ \t]+' /etc/apt/sources.list 2>/dev/null; then # Classic embedded (sources.list)
echo true if [ -f /etc/apt/sources.list ] && grep -Eq "$c_pattern" /etc/apt/sources.list 2>/dev/null; then
return echo true; return
fi
fi fi
# Check deb822 .sources files # Classic standalone (new — debian-backports.list)
if [ -d /etc/apt/sources.list.d ]; then if [ -f /etc/apt/sources.list.d/debian-backports.list ] && \
if grep -qr 'Suites:.*-backports' /etc/apt/sources.list.d/*.sources 2>/dev/null; then grep -Eq "$c_pattern" /etc/apt/sources.list.d/debian-backports.list 2>/dev/null; then
echo true echo true; return
return
fi fi
# Deb822 any .sources file
if grep -qr "$d_pattern" /etc/apt/sources.list.d/*.sources 2>/dev/null; then
echo true; return
fi fi
echo false echo false
+3 -3
View File
@@ -9,7 +9,7 @@ install_zram() {
return 1 return 1
fi fi
local half_ram_mb=$((RAM_KB / 2 / 1024)) local half_ram_mb=$(( ((RAM_KB / 1024 / 1024 + 1) / 2) * 1024 ))
local algo local algo
algo=$(whiptail --title "ZRAM Compression" --menu \ algo=$(whiptail --title "ZRAM Compression" --menu \
@@ -31,12 +31,12 @@ Choose compression algorithm:" \
fi fi
local zram_size local zram_size
if _confirm "ZRAM Size" "Use 50% of RAM for ZRAM? (${half_ram_mb} MB out of ${RAM_SUMMARY})"; then if _confirm "ZRAM Size" "Use recommended size for ZRAM? (${half_ram_mb} MB out of ${RAM_SUMMARY})"; then
zram_size=$half_ram_mb zram_size=$half_ram_mb
else else
zram_size=$(whiptail --title "ZRAM Size" --inputbox \ zram_size=$(whiptail --title "ZRAM Size" --inputbox \
"Enter ZRAM size in MB:" 8 60 "$half_ram_mb" 3>&1 1>&2 2>&3) "Enter ZRAM size in MB:" 8 60 "$half_ram_mb" 3>&1 1>&2 2>&3)
if [ -z "$zram_size" ] || ! [[ "$zram_size" =~ ^[0-9]+$ ]]; then if [ -z "$zram_size" ] || ! [[ "$zram_size" =~ ^[0-9]+$ ]] || [ "$zram_size" -eq 0 ]; then
echo "ZRAM configuration cancelled." echo "ZRAM configuration cancelled."
return 0 return 0
fi fi