System Refactor, GPU & Terminal Overhaul

- Bug Fixes: Rewrote `install_gaming_bullseye()` in `modules/bullseye/legacy.sh` to use a unified `_checklist` flow (matching Debian 12/13) with automatic i386 architecture detection and driver installation. Fixed greetd "Back" menu crash on Debian 11 by adding version-specific conditional logic in `desktop_display.sh`. Corrected ZRAM text overflow in `zram.sh` using `\n` line breaks for terminal wrapping. Updated Kernel Backports warning message in `debianito.sh` to clarify Bullseye limitations.

- Architecture & Repositories: Refactored Debian 11 repository configuration (`configure_repos_bullseye`) to reuse modern submenus (`_repos_enable_components`, `_branch_migration`), eliminating ~44 lines of hardcoded logic and duplicate source list management. Restricted `non-free-firmware` component availability to Debian 12+ in `modules/repos.sh`. Implemented mandatory `apt autoremove -y` and `apt autoclean` execution immediately after enabling non-free/contrib components (`_repos_enable_components`).

- UI & Menus: Added a new "Communication" menu (Option 4) between Internet and Media Players, featuring Signal, Telegram (with Trixie backports warning), and Hexchat. Moved all terminal emulators from System Tools to the "Customization System" -> Terminals submenu (`modules/extras/terminals/terminals.sh`) with version-specific logic (Alacritty 12+, Blackbox/Ptyxis 13+). Added Joplin installer in Office & Productivity for Debian 12/13 only. Integrated Synaptic into Software Centers menu alongside GNOME and Plasma stores. Unified Essential Pack UI across versions, switching between `fastfetch` (Trixie) and `neofetch` (Bookworm/Bullseye).

- Hardware Drivers: Replaced deprecated `install_gpu_drivers()` in `modules/gpu.sh` with `_install_amd_intel_stack()` and `_install_nvidia_stack()`. Implemented specific logic for Debian 13 (Trixie): Blackwell GPUs now enable the official NVIDIA CUDA repository; Maxwell/Pascal on Backports forces a stable kernel path to ensure driver compatibility. Deprecated `install_nvidia_driver()` in favor of new stack functions while preserving global state variables (`NVIDIA_DRIVER_MODE`).

- Utilities & Cleanup: Added `gdebi` and `bleachbit` to System Tools (GUI-only). Standardized menu headers across 15 files using a centralized `SCROLL_HINT` variable. Ensured VLC installation is conditional on headless status checks in Essential Pack modules.
This commit is contained in:
stornic56
2026-07-19 00:57:57 -05:00
committed by GitHub
parent d8878b67e1
commit 92d0eb7467
19 changed files with 442 additions and 261 deletions
@@ -0,0 +1,86 @@
#!/usr/bin/env bash
# communication.sh — Signal, Telegram, HexChat
_install_signal() {
_ensure_extrepo
if [ ! -f /etc/apt/sources.list.d/extrepo_signal.sources ]; then
_run_cmd "Signal" "sudo extrepo enable signal" "Enabling Signal repository..."
fi
_run_cmd "APT Update" "sudo apt update" "Updating package lists..."
if ! is_installed "signal-desktop"; then
_run_cmd "Signal" "sudo apt install -y signal-desktop" "Installing Signal..."
echo -e "${GREEN}Signal installed.${NC}"
else
echo "Signal already installed."
fi
}
_install_telegram() {
if [ "$DEBIAN_VERSION" = "13" ]; then
if ! is_backports_enabled; then
_msg "telegram-desktop" \
"telegram-desktop is only available in Trixie-backports.\n\n\
Please enable backports first via:\n Main Menu → 3 Configure Repositories" 12 65
echo -e "${YELLOW}Skipping telegram-desktop.${NC}"
return
fi
if ! is_installed "telegram-desktop"; then
_run_cmd "Telegram" "sudo apt install -y -t ${DEBIAN_CODENAME}-backports telegram-desktop" \
"Installing telegram-desktop from backports..."
echo -e "${GREEN}telegram-desktop installed.${NC}"
else
echo "telegram-desktop already installed."
fi
else
if ! is_installed "telegram-desktop"; then
_run_install "telegram-desktop"
echo -e "${GREEN}telegram-desktop installed.${NC}"
else
echo "telegram-desktop already installed."
fi
fi
}
_cat_communication() {
local headless=false
_is_headless && headless=true
if $headless; then
echo "Communication apps require a GUI — skipping."
return
fi
local -a items=()
local signal_state; signal_state=$(_state "signal-desktop")
local telegram_state; telegram_state=$(_state "telegram-desktop")
local hexchat_state; hexchat_state=$(_state "hexchat")
items+=(
"signal-desktop" "Signal Private Messenger (extrepo)" "$signal_state"
"telegram-desktop" "Telegram Desktop messaging" "$telegram_state"
"hexchat" "IRC client (HexChat)" "$hexchat_state"
)
local item_count=${#items[@]}
local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count))
local choices
choices=$(_checklist "Communication" "Select communication apps${SCROLL_HINT}:" \
$TUI_ALTO $TUI_ANCHO $lista_alto "${items[@]}")
clear
[ -z "$choices" ] && return
local cleaned; cleaned=$(echo "$choices" | tr -d '"')
for pkg in $cleaned; do
case $pkg in
signal-desktop) _install_signal ;;
telegram-desktop) _install_telegram ;;
hexchat)
if ! is_installed "hexchat"; then
_run_install "hexchat"
echo -e "${GREEN}hexchat installed.${NC}"
else
echo "hexchat already installed."
fi
;;
esac
done
echo -e "${GREEN}Communication tools installed.${NC}"
}
+15 -6
View File
@@ -3,18 +3,27 @@
_quick_install() {
local fetch_pkg
if [ "$DEBIAN_CODENAME" = "bookworm" ]; then
fetch_pkg="neofetch"
else
if [ "$DEBIAN_CODENAME" = "trixie" ]; then
fetch_pkg="fastfetch"
else
fetch_pkg="neofetch"
fi
local comp_pkgs
if [ "$DEBIAN_CODENAME" = "trixie" ]; then
comp_pkgs="7zip 7zip-rar"
else
comp_pkgs="p7zip-full p7zip-rar"
fi
_msg "Essential Pack" \
"Install basic programs:\n\n - Compression (zip, unrar, 7z)\n - System tools (htop, inxi, ${fetch_pkg}, $(_is_headless || echo "VLC"))\n - Microsoft fonts" 13 60
"Install basic programs:\n\n - Compression (zip, unrar, 7z)\n - System tools (htop, inxi, ${fetch_pkg})\n - Networking (curl, wget, ufw)\n - CA certs & GPG\n - VLC media player" 13 60
local quick_pkgs=(
zip unzip rar unrar p7zip-full p7zip-rar
"$fetch_pkg" htop inxi ttf-mscorefonts-installer
zip unzip rar unrar
$comp_pkgs
"$fetch_pkg" htop inxi curl wget ufw
ca-certificates gnupg lsb-release
)
_is_headless || quick_pkgs+=(vlc)
_run_install_batch "${quick_pkgs[@]}"
+25
View File
@@ -26,6 +26,25 @@ Version: ${ver:-unknown}"; then
fi
}
# ── Joplin (extrepo, solo Debian 12+) ──
install_joplin() {
if [ "$DEBIAN_VERSION" != "12" ] && [ "$DEBIAN_VERSION" != "13" ]; then
_msg "Joplin" "Joplin via extrepo is only available on\nDebian 12 (Bookworm) and 13 (Trixie)." 10 60
return 1
fi
_ensure_extrepo
if [ ! -f /etc/apt/sources.list.d/extrepo_joplin.sources ]; then
_run_cmd "Joplin" "sudo extrepo enable joplin" "Enabling Joplin repository..."
fi
_run_cmd "APT Update" "sudo apt update" "Updating package lists..."
if ! is_installed "joplin"; then
_run_cmd "Joplin" "sudo apt install -y joplin" "Installing Joplin..."
echo -e "${GREEN}Joplin installed.${NC}"
else
echo "Joplin already installed."
fi
}
# ── LibreOffice (backports) ──
install_libreoffice_bpo() {
if [ "$DEBIAN_VERSION" != "12" ] && [ "$DEBIAN_VERSION" != "13" ]; then
@@ -68,6 +87,11 @@ _cat_office() {
"onlyoffice" "OnlyOffice Desktop Editors (extrepo)" OFF
"libreoffice" "LibreOffice (backports on Bookworm/Trixie)" OFF
)
if [ "$DEBIAN_VERSION" = "12" ] || [ "$DEBIAN_VERSION" = "13" ]; then
items+=(
"joplin" "Joplin note-taking (extrepo)" OFF
)
fi
fi
local item_count=${#items[@]}
@@ -84,6 +108,7 @@ _cat_office() {
case $pkg in
onlyoffice) install_onlyoffice ;;
libreoffice) install_libreoffice_bpo ;;
joplin) install_joplin ;;
esac
done
}
+8 -1
View File
@@ -10,12 +10,19 @@ _cat_software_centers() {
local de_type
de_type=$(_detect_desktop_type)
local sc_choice
sc_choice=$(_menu "Software Centers" "Choose a software store to install:" 12 65 2 \
sc_choice=$(_menu "Software Centers" "Choose a software store to install:" 12 65 3 \
"gnome-software" "Software Center for GNOME" \
"plasma-discover" "Software manager for Plasma" \
"synaptic" "Classic APT package manager (GTK)" \
)
[ -z "$sc_choice" ] && return
if [ "$sc_choice" = "synaptic" ]; then
_run_cmd "Install" "sudo apt install -y synaptic" "Installing synaptic..."
echo -e "${GREEN}synaptic installed.${NC}"
return
fi
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 \
+6 -4
View File
@@ -40,6 +40,7 @@ _cat_general() {
local fwupd_state; fwupd_state=$(_state "fwupd")
local htop_state; htop_state=$(_state "htop")
local inxi_state; inxi_state=$(_state "inxi")
local jq_state; jq_state=$(_state "jq")
local kvm_state; kvm_state=$(_state "virt-manager")
local lshw_state; lshw_state=$(_state "lshw")
local mc_state; mc_state=$(_state "mc")
@@ -59,6 +60,7 @@ _cat_general() {
"fwupd" "Firmware update daemon" "$fwupd_state"
"htop" "Interactive process viewer" "$htop_state"
"inxi" "System information tool" "$inxi_state"
"jq" "JSON command-line processor" "$jq_state"
"kvm" "QEMU/KVM virtualization" "$kvm_state"
"lshw" "List hardware details" "$lshw_state"
"mc" "Midnight Commander (file manager)" "$mc_state"
@@ -69,27 +71,27 @@ _cat_general() {
"wine" "Windows compatibility layer" "$wine_state"
)
if ! $headless; then
local alacritty_state; alacritty_state=$(_state "alacritty")
local bleachbit_state; bleachbit_state=$(_state "bleachbit")
local conky_state; conky_state=$(_state "conky")
local gdebi_state; gdebi_state=$(_state "gdebi")
local corectrl_state; corectrl_state=$(_state "corectrl")
local dcgtk_state; dcgtk_state=$(_state "doublecmd-gtk")
local dcqt_state; dcqt_state=$(_state "doublecmd-qt")
local disks_state; disks_state=$(_state "gnome-disk-utility")
local gparted_state; gparted_state=$(_state "gparted")
local hardinfo_state; hardinfo_state=$(_state "hardinfo")
local kitty_state; kitty_state=$(_state "kitty")
local psensor_state; psensor_state=$(_state "psensor")
local timeshift_state; timeshift_state=$(_state "timeshift")
items+=(
"alacritty" "GPU-accelerated terminal" "$alacritty_state"
"bleachbit" "System cleaner (GUI)" "$bleachbit_state"
"conky" "System monitor for desktop" "$conky_state"
"gdebi" "Install .deb packages with deps" "$gdebi_state"
"corectrl" "AMD GPU control (CoreCtrl)" "$corectrl_state"
"doublecmd-gtk" "Dual-panel file manager (GTK)" "$dcgtk_state"
"doublecmd-qt" "Dual-panel file manager (Qt)" "$dcqt_state"
"gnome-disk-utility" "Disk management GUI" "$disks_state"
"gparted" "GNOME partition editor" "$gparted_state"
"hardinfo" "Graphical system profiler" "$hardinfo_state"
"kitty" "GPU-based terminal emulator" "$kitty_state"
"psensor" "Hardware temperature monitor" "$psensor_state"
"timeshift" "System restore snapshots" "$timeshift_state"
)
+43
View File
@@ -0,0 +1,43 @@
#!/usr/bin/env bash
# terminals.sh — Terminal emulators
_cat_terminals() {
local headless=false
_is_headless && headless=true
if $headless; then
echo "Terminals require a GUI — skipping."
return
fi
local -a items=()
for t in kitty deepin-terminal gnome-terminal lxterminal mate-terminal \
qterminal xfce4-terminal konsole terminator guake cool-retro-term \
tilix yakuake terminology rxvt-unicode xterm; do
items+=("$t" "" "$(_state "$t")")
done
if [ "$DEBIAN_VERSION" = "12" ] || [ "$DEBIAN_VERSION" = "13" ]; then
items+=("alacritty" "" "$(_state alacritty)")
fi
if [ "$DEBIAN_VERSION" = "13" ]; then
items+=("blackbox-terminal" "" "$(_state blackbox-terminal)")
items+=("ptyxis" "" "$(_state ptyxis)")
fi
local item_count=${#items[@]}
local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count))
local choices
choices=$(_checklist "Terminals" "Select terminal emulators${SCROLL_HINT}:" \
$TUI_ALTO $TUI_ANCHO $lista_alto "${items[@]}")
clear
[ -z "$choices" ] && return
for pkg in $(echo "$choices" | tr -d '"'); do
if ! is_installed "$pkg"; then
_run_install "$pkg"
else
echo "$pkg already installed."
fi
done
echo -e "${GREEN}Terminals installed.${NC}"
}
+2
View File
@@ -8,6 +8,7 @@ _cat_customization() {
"2" "Icon Themes" \
"3" "Cursor Themes" \
"4" "Fonts" \
"5" "Terminals" \
)
[ -z "$sub" ] && return
case $sub in
@@ -15,5 +16,6 @@ _cat_customization() {
2) _cat_icons ;;
3) _cat_cursors ;;
4) _cat_fonts ;;
5) _cat_terminals ;;
esac
}