From fa81a9f1aa5ba2f669f802b96b0b61c359b60b8b Mon Sep 17 00:00:00 2001 From: stornic56 <71296607+stornic56@users.noreply.github.com> Date: Thu, 23 Jul 2026 00:18:24 -0500 Subject: [PATCH] amd gcn legacy support & kernel overhaul - Fixed Mesa 32-bit dependency conflicts by removing mesa-va-drivers from gaming setup; mesa-libgallium now includes VA-API for Mesa >= 25.3.3, resolving solver errors with backports (Mesa 26.x). - Removed corectrl detection and installation from AMD tools in gpu/amd_intel.sh (retained in System Tools checklist only). - Added zutty terminal emulator option alongside alacritty for Debian 12+ in terminals.sh. - Overhauled Kernel menu: replaced "Backports Kernel" with "Kernel" submenu offering Stable, RT, Cloud, and Backports options; removed hardcoded Debian 11 restriction (backports hidden only on Bullseye); headers now installed automatically with all kernel variants; NVIDIA warnings added for Backports (DKMS required) and RT (driver compatibility note). - Implemented AMD GCN legacy driver migration: is_amd_legacy_gcn() function detects GCN 1.0/1.1 GPUs via whitelist of 85 PCI IDs; offers user prompt to force amdgpu module with GRUB parameters (radeon.si_support=0, radeon.cik_support=0, amdgpu.si_support=1, amdgpu.cik_support=1); safe sed-based injection into GRUB_CMDLINE_LINUX_DEFAULT with backup and idempotency check. - Standardized UI across 27 checklist locations: unified text to "Check [*] the packages you want installed/updated on your system."; removed SCROLL_HINT variable entirely from all code; changed OK button to "Apply" in _checklist() and _inputbox() only (not in _msg/_menu). - Reordered gaming menu checklists: i386 moved to top position, steam/mangohud positioned immediately after for better dependency flow. - Enhanced kernel installation prompts: all variants (Stable, RT, Cloud, Backports) now display candidate version numbers in parentheses using apt-cache policy and madison queries. - update readme --- README.md | 137 ++++++++++++++++++ debianito.sh | 12 +- modules/bullseye/extras.sh | 28 ++-- modules/bullseye/legacy.sh | 8 +- modules/desktop_display.sh | 6 +- modules/extras.sh | 2 +- modules/extras/communication/communication.sh | 2 +- modules/extras/design/design.sh | 2 +- modules/extras/dev/dev.sh | 2 +- modules/extras/download/download.sh | 4 +- modules/extras/internet/internet.sh | 2 +- modules/extras/office/office.sh | 2 +- modules/extras/programming/programming.sh | 2 +- modules/extras/security/security.sh | 2 +- modules/extras/system/system.sh | 2 +- modules/extras/terminals/terminals.sh | 3 +- modules/extras/themes/cursors/cursors.sh | 2 +- .../themes/desktop-themes/desktop-themes.sh | 2 +- modules/extras/themes/fonts/fonts.sh | 2 +- modules/extras/themes/icons/icons.sh | 2 +- modules/gaming.sh | 8 +- modules/gaming/_helpers.sh | 1 - modules/gpu.sh | 42 ++++++ modules/gpu/_helpers.sh | 15 ++ modules/gpu/amd_intel.sh | 22 +-- modules/kernel.sh | 86 ++++++++--- modules/repos.sh | 3 +- modules/rescue.sh | 4 +- modules/utils.sh | 7 +- 29 files changed, 312 insertions(+), 100 deletions(-) diff --git a/README.md b/README.md index b72f193..010d975 100644 --- a/README.md +++ b/README.md @@ -85,6 +85,136 @@ The submenu offers the next categories: --- +## Quick Start — Recommended Setup Order + +This section shows the recommended order to configure a fresh Debian installation for maximum performance and usability. Follow these steps in order — each step builds on the previous one. + +--- + +### Step 1 — Know Your System +**Menu:** `1 System Information` + +Check your hardware before installing anything. The script detects your CPU, RAM, GPU vendor and generation, network adapters, and display server. Write down what you see — especially the GPU line (Intel/AMD/NVIDIA) and any WiFi chipset. You'll need this info for steps 4 and 5. + +> 💡 If no GPU is detected, you're likely on a VM or headless server — skip step 5. + +--- + +### Step 2 — Enable Password Feedback +**Menu:** `2 User Privileges & Feedback` → select option for Sudo Password Feedback + +Enable asterisks (`****`) when typing your sudo password. This prevents typos during the many installation steps that follow. Toggle it on now, disable it later if you prefer hidden input. + +--- + +### Step 3 — Configure Repositories +**Menu:** `3 Configure Repositories` + +This is the foundation — all subsequent installations depend on correct repos. + +1. **Enable Contrib & Non-Free Components** (required for firmware, drivers, Steam) +2. **Setup/Update Backports repositories** (recommended — gives you newer kernels, Mesa drivers, and firmware for modern hardware) + +> ⚠️ Without non-free enabled, steps 4 and 5 will fail. Do not skip this. + +--- + +### Step 4 — Install Firmware & Wireless Drivers +**Menu:** `4 Firmware, Wireless & Bluetooth` + +The script scans ALL network hardware (PCI + USB) and installs exactly the firmware your system needs. Accept the plan it shows — it's based on your actual hardware. + +This step also sets up Bluetooth if your system has Bluetooth hardware (KDE gets bluedevil, XFCE gets blueman, GNOME uses built-in). + +> ⚠️ You need internet for this step. If WiFi isn't working after firmware install, reboot first — the driver needs a fresh load. + +--- + +### Step 5 — Install Graphics Drivers +**Menu:** `5 Graphics Drivers & Mesa Stack` + +The script auto-detects your GPU and installs the correct driver: + +- **NVIDIA:** The script chooses the best path automatically (CUDA repo, backports, or stable) based on your GPU generation and kernel. Just confirm the plan. +- **AMD/Intel:** Installs firmware + Mesa stack + Vulkan drivers. Also installs 32-bit libraries if gaming is planned. +- **Hybrid (laptop):** Installs Intel/AMD firmware first, then NVIDIA driver. + +> 💡 After installation, reboot before testing. NVIDIA drivers need a fresh kernel load to activate. + +--- + +### Step 6 — Kernel Configuration +**Menu:** `6 Kernel` + +If you enabled backports in step 3, you can install a newer kernel (e.g., 7.x) for better hardware support. The script offers stable vs backports: + +| Choice | Best for | +|--------|----------| +| Stable (default) | Maximum stability, older hardware | +| Backports | Modern CPUs (Intel Arrow Lake, AMD Zen 5), new GPUs, better power management | + +> ⚠️ If you installed NVIDIA drivers in step 5, the backports kernel may require DKMS recompilation. The script warns about this — it's usually fine. + +--- + +### Step 7 — Gaming Setup (Optional) +**Menu:** `7 Gaming Setup` + +If you plan to game on Debian: + +1. **Enable i386 architecture** when prompted — this is REQUIRED for Steam/Proton and 32-bit game libraries +2. Select your launchers: Steam, Heroic Games Launcher, Lutris +3. Select performance tools: GameMode, MangoHud, GOverlay +4. Select RetroArch if you want retro emulation (pre-installed with GBA, SNES, NES, GB cores) + +> ⚠️ Steam requires the contrib repository (step 3) and i386 architecture. The script warns if either is missing. + +--- + +### Step 8 — ZRAM Compressed Swap (Optional) +**Menu:** `8 ZRAM` + +ZRAM compresses memory pages in RAM instead of writing to disk. This is especially useful on systems with limited RAM (8GB or less). The script automatically sets ZRAM to ~50% of your physical RAM with priority 100 (used before disk swap). + +Choose **LZ4** for gaming (fastest compression) or **ZSTD** for general use (better compression ratio). + +> 💡 If you also use disk-based swap (Option 9), ZRAM is used first. Disk swap only kicks in after ZRAM fills up. + +--- + +### Step 9 — Essential Software +**Menu:** `10 Install Programs and Software` → option `0 Essential Pack` + +One-click install of the most common tools: + +| Package | What you get | +|---------|--------------| +| htop, inxi | System monitoring | +| neofetch / fastfetch | System info display | +| vlc | Media player | +| ufw | Firewall| +| zip, unrar, p7zip | Compression tools | + +After this, browse the other categories (browsers, editors, dev tools) as needed. + +--- + +### Complete Flow Summary + +1. System Information ← Know your hardware +2. User Privileges & Feedback ← Enable password asterisks +3. Configure Repositories ← Enable contrib + non-free + backports +4. Firmware, Wireless & Bluetooth ← Install WiFi/BT firmware +5. Graphics Drivers & Mesa Stack ← Install GPU drivers +6. Kernel ← Optional: newer kernel (Backports) +7. Gaming Setup ← Optional: Steam + tools +8. ZRAM ← Optional: compressed swap +9. Install Programs → 0 Essential ← Common tools + +**Estimated time:** 15-20 minutes for a full setup (steps 1-5 + 9). Steps 6-8 are optional and depend on your use case. + + +--- ## File Structure | Directory/File | Description | @@ -101,12 +231,15 @@ The submenu offers the next categories: ```bash ├── debianito.sh ├── docs +│   ├── boot.md +│   ├── desktops_display.md │   ├── firmware.md │   ├── gaming.md │   ├── gpu.md │   ├── kernel.md │   ├── repos_config.md │   ├── retroarch.md +│   ├── swap.md │   ├── system_info.md │   ├── user_priv_feed.md │   └── zram.md @@ -121,6 +254,8 @@ The submenu offers the next categories: │   │   └── repos.sh │   ├── desktop_display.sh │   ├── extras +│   │   ├── communication +│   │   │   └── communication.sh │   │   ├── design │   │   │   └── design.sh │   │   ├── dev @@ -147,6 +282,8 @@ The submenu offers the next categories: │   │   ├── system │   │   │   ├── software_centers.sh │   │   │   └── system.sh +│   │   ├── terminals +│   │   │   └── terminals.sh │   │   └── themes │   │   ├── cursors │   │   │   └── cursors.sh diff --git a/debianito.sh b/debianito.sh index e23efa5..2f96dba 100644 --- a/debianito.sh +++ b/debianito.sh @@ -62,7 +62,7 @@ main_menu() { "3" "Configure Repositories" \ "4" "Firmware, Wireless & Bluetooth" \ "5" "Graphics Drivers & Mesa Stack" \ - "6" "Backports Kernel" \ + "6" "Kernel" \ "7" "Gaming Setup" \ "8" "ZRAM" \ "9" "Swap Management" \ @@ -104,15 +104,7 @@ main_menu() { esac STATE_REFRESHED=true ;; - 6) - if [ "$DEBIAN_VERSION" = "11" ]; then - _msg "Not Available" \ - "Backports Kernel is not available on Debian 11 Bullseye.\n\nThe stable kernel provided by Bullseye is the only option." 10 60 - else - install_kernel_backports || true - fi - STATE_REFRESHED=true - ;; + 6) show_kernel_menu || true ;; 7) if [ "$DEBIAN_VERSION" = "11" ] && type install_gaming_bullseye &>/dev/null; then install_gaming_bullseye || true diff --git a/modules/bullseye/extras.sh b/modules/bullseye/extras.sh index 7bf0a18..39efd96 100644 --- a/modules/bullseye/extras.sh +++ b/modules/bullseye/extras.sh @@ -82,7 +82,7 @@ _cat_themes_bullseye() { local item_count=6 local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Desktop Themes (Bullseye)" "Select desktop themes${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "Desktop Themes (Bullseye)" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "arc-theme" "Arc GTK theme" "$(_state arc-theme)" \ "blackbird-gtk-theme" "Blackbird GTK theme" "$(_state blackbird-gtk-theme)" \ "bluebird-gtk-theme" "Bluebird GTK theme" "$(_state bluebird-gtk-theme)" \ @@ -114,7 +114,7 @@ _cat_icons_bullseye() { local item_count=${#items[@]} local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Icon Themes (Bullseye)" "Select icon themes${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "Icon Themes (Bullseye)" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "${items[@]}" ) clear [ -z "$choices" ] && return @@ -129,7 +129,7 @@ _cat_cursors_bullseye() { local item_count=5 local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Cursor Themes (Bullseye)" "Select cursor themes${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "Cursor Themes (Bullseye)" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "breeze-cursor-theme" "Breeze cursors (KDE)" "$(_state breeze-cursor-theme)" \ "chameleon-cursor-theme" "Chameleon cursors" "$(_state chameleon-cursor-theme)" \ "dmz-cursor-theme" "DMZ cursors" "$(_state dmz-cursor-theme)" \ @@ -149,7 +149,7 @@ _cat_fonts_bullseye() { local item_count=4 local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Fonts (Bullseye)" "Available fonts${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "Fonts (Bullseye)" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "fonts-firacode" "Fira Code monospace font" "$(_state fonts-firacode)" \ "fonts-noto" "Noto fonts (Google)" "$(_state fonts-noto)" \ "fonts-dejavu-core" "DejaVu core fonts" "$(_state fonts-dejavu-core)" \ @@ -169,7 +169,7 @@ _cat_download_bullseye() { local item_count1=2 local lista_alto1=$((item_count1 > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count1)) - choices1=$(_checklist "Downloaders" "Select download tools:" $TUI_ALTO $TUI_ANCHO $lista_alto1 \ + choices1=$(_checklist "Downloaders" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto1 \ "aria2" "Multiprotocol downloader (CLI)" "$(_state aria2)" \ "filezilla" "FTP/SFTP client (GUI)" "$(_state filezilla)" \ ) @@ -177,7 +177,7 @@ _cat_download_bullseye() { local item_count2=8 local lista_alto2=$((item_count2 > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count2)) - choices2=$(_checklist "Torrent Clients" "Select torrent clients${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto2 \ + choices2=$(_checklist "Torrent Clients" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto2 \ "deluge" "BitTorrent client (GTK)" "$(_state deluge)" \ "deluged" "BitTorrent daemon/server" "$(_state deluged)" \ "mktorrent" "Torrent metainfo creator (CLI)" "$(_state mktorrent)" \ @@ -207,7 +207,7 @@ _cat_internet_bullseye() { local item_count=11 local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Internet (Bullseye)" "Select browsers, email${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "Internet (Bullseye)" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "chromium" "Chromium web browser" "$(_state chromium)" \ "dillo" "Lightweight graphical browser" "$(_state dillo)" \ "elinks" "Text-mode web browser" "$(_state elinks)" \ @@ -249,7 +249,7 @@ _cat_players_bullseye() { local item_count=2 local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Media Players (Bullseye)" "Select media players${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "Media Players (Bullseye)" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "mpv" "Lightweight media player" "$(_state mpv)" \ "vlc" "VLC media player" "$(_state vlc)" \ ) @@ -270,7 +270,7 @@ _cat_design_bullseye() { local item_count=13 local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Multimedia & Design (Bullseye)" "Select multimedia and design tools${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "Multimedia & Design (Bullseye)" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "ardour" "Digital audio workstation" "$(_state ardour)" \ "audacity" "Audio editor/recorder" "$(_state audacity)" \ "blender" "3D modeling/animation suite" "$(_state blender)" \ @@ -302,7 +302,7 @@ _cat_programming_bullseye() { local item_count=9 local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Code Editors & IDEs (Bullseye)" "Select editors and IDEs${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "Code Editors & IDEs (Bullseye)" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "vim" "Classic terminal editor" "$(_state vim)" \ "vim-gtk3" "Vim with GTK3 GUI" "$(_state vim-gtk3)" \ "neovim" "Modern vim fork" "$(_state neovim)" \ @@ -330,7 +330,7 @@ _cat_dev_bullseye() { local item_count=14 local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Servers & Dev Tools (Bullseye)" "Select development tools and servers${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "Servers & Dev Tools (Bullseye)" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "apache2" "Apache web server" "$(_state apache2)" \ "build-essential" "C/C++ build tools (gcc, make)" "$(_state build-essential)" \ "docker" "Docker container runtime" "$(_state docker.io)" \ @@ -394,7 +394,7 @@ _cat_security_bullseye() { local item_count=5 local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Security & Networking (Bullseye)" "Select security and networking tools${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "Security & Networking (Bullseye)" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "wireshark" "Network protocol analyzer (GUI)" "$(_state wireshark)" \ "tcpdump" "Command-line packet analyzer" "$(_state tcpdump)" \ "fail2ban" "Brute-force protection daemon" "$(_state fail2ban)" \ @@ -425,7 +425,7 @@ _cat_general_bullseye() { local item_count=22 local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "System Tools (Bullseye)" "Select system utilities${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "System Tools (Bullseye)" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "compress" "Compression tools (zip, unrar, p7zip)" "$(_state zip)" \ "conky" "System monitor for desktop" "$(_state conky)" \ "cpu-x" "CPU-X (alternative to CPU-Z)" "$(_state cpu-x)" \ @@ -562,7 +562,7 @@ install_extras_bullseye() { while true; do local cat_choice - cat_choice=$(_menu "Extra Software — Bullseye" "Select a category${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \ + cat_choice=$(_menu "Extra Software — Bullseye" "Select a category:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \ "0" "Essential Pack" \ "1" "Customization System" \ "2" "Download & Network" \ diff --git a/modules/bullseye/legacy.sh b/modules/bullseye/legacy.sh index 49e6133..4523511 100644 --- a/modules/bullseye/legacy.sh +++ b/modules/bullseye/legacy.sh @@ -107,15 +107,15 @@ install_gaming_bullseye() { local choices choices=$(_checklist "Gaming Setup — Bullseye" \ - "Select gaming packages to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \ + "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \ + "i386" "Enable 32-bit (i386) architecture" ON \ "steam" "Steam (requires 32-bit support)" ON \ - "gamemode" "Game performance optimization" OFF \ "mangohud" "Performance overlay (Vulkan/OpenGL)" ON \ + "gamemode" "Game performance optimization" OFF \ "goverlay" "MangoHud config GUI" ON \ "java" "Minecraft Java Runtime" OFF \ "lutris" "Lutris + Wine (requires 32-bit support)" OFF \ - "retroarch" "RetroArch Emulator Frontend" OFF \ - "i386" "Enable 32-bit (i386) architecture" ON) + "retroarch" "RetroArch Emulator Frontend" OFF) if [ -z "$choices" ]; then echo "No gaming packages selected." diff --git a/modules/desktop_display.sh b/modules/desktop_display.sh index 146cfe4..7b65e23 100644 --- a/modules/desktop_display.sh +++ b/modules/desktop_display.sh @@ -115,7 +115,7 @@ configure_greetd() { fi local choice choice=$(_menu "greetd Configuration" \ - "Select an option${SCROLL_HINT}:" \ + "Select an option:" \ $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \ "${gd_items[@]}") [ -z "$choice" ] && return @@ -179,7 +179,7 @@ configure_gdm3() { fi local choice choice=$(_checklist "GDM3 Configuration" \ - "Select options to apply${SCROLL_HINT}:" \ + "Select options to apply:" \ $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \ "${items_enabled[@]}") [ -z "$choice" ] && return @@ -243,7 +243,7 @@ configure_sddm() { while true; do local choice choice=$(_menu "SDDM Configuration" \ - "Select an option${SCROLL_HINT}:" \ + "Select an option:" \ $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \ "1" "Install SDDM (Set as default)" \ "2" "Enable Autologin" \ diff --git a/modules/extras.sh b/modules/extras.sh index a31dcf0..959f42a 100644 --- a/modules/extras.sh +++ b/modules/extras.sh @@ -28,7 +28,7 @@ install_extras() { while true; do local cat_choice cat_choice=$(_menu "Install Programs and Software" \ - "Select a category${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \ + "Select a category:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \ "0" "Essential Pack" \ "1" "Customization System" \ "2" "Download & Network" \ diff --git a/modules/extras/communication/communication.sh b/modules/extras/communication/communication.sh index 1287672..6b59662 100644 --- a/modules/extras/communication/communication.sh +++ b/modules/extras/communication/communication.sh @@ -62,7 +62,7 @@ _cat_communication() { 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}:" \ + choices=$(_checklist "Communication" "Check [*] the packages you want installed/updated on your system.\n" \ $TUI_ALTO $TUI_ANCHO $lista_alto "${items[@]}") clear [ -z "$choices" ] && return diff --git a/modules/extras/design/design.sh b/modules/extras/design/design.sh index f2d550c..b003307 100644 --- a/modules/extras/design/design.sh +++ b/modules/extras/design/design.sh @@ -39,7 +39,7 @@ _cat_design() { local item_count=${#items[@]} local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Multimedia & Design" "Select multimedia and design tools${SCROLL_HINT}:" \ + choices=$(_checklist "Multimedia & Design" "Check [*] the packages you want installed/updated on your system.\n" \ $TUI_ALTO $TUI_ANCHO $lista_alto "${items[@]}") clear diff --git a/modules/extras/dev/dev.sh b/modules/extras/dev/dev.sh index 5275f31..904cb2d 100644 --- a/modules/extras/dev/dev.sh +++ b/modules/extras/dev/dev.sh @@ -41,7 +41,7 @@ _cat_dev() { local item_count=${#items[@]} local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Development & Servers" "Select development tools and servers${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "Development & Servers" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "${items[@]}" \ ) clear diff --git a/modules/extras/download/download.sh b/modules/extras/download/download.sh index 224b586..b38ba05 100644 --- a/modules/extras/download/download.sh +++ b/modules/extras/download/download.sh @@ -45,14 +45,14 @@ _cat_download() { local lista_alto1=$((item_count1 > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count1)) local choices1 choices2="" - choices1=$(_checklist "Downloaders" "Select download tools:" $TUI_ALTO $TUI_ANCHO $lista_alto1 \ + choices1=$(_checklist "Downloaders" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto1 \ "${items1[@]}" \ ) clear local item_count2=${#items2[@]} local lista_alto2=$((item_count2 > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count2)) - choices2=$(_checklist "Torrent Clients" "Select torrent clients:" $TUI_ALTO $TUI_ANCHO $lista_alto2 \ + choices2=$(_checklist "Torrent Clients" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto2 \ "${items2[@]}" \ ) clear diff --git a/modules/extras/internet/internet.sh b/modules/extras/internet/internet.sh index 0e4f43d..d1179fc 100644 --- a/modules/extras/internet/internet.sh +++ b/modules/extras/internet/internet.sh @@ -174,7 +174,7 @@ _cat_internet() { local item_count=${#items[@]} local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Internet" "Select browsers, email, and VPN tools${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "Internet" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "${items[@]}" \ ) clear diff --git a/modules/extras/office/office.sh b/modules/extras/office/office.sh index 2936ba8..8b2df49 100644 --- a/modules/extras/office/office.sh +++ b/modules/extras/office/office.sh @@ -97,7 +97,7 @@ _cat_office() { local item_count=${#items[@]} local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Office & Productivity" "Select office applications${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "Office & Productivity" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "${items[@]}" \ ) diff --git a/modules/extras/programming/programming.sh b/modules/extras/programming/programming.sh index 801d68b..b9fb854 100644 --- a/modules/extras/programming/programming.sh +++ b/modules/extras/programming/programming.sh @@ -42,7 +42,7 @@ _cat_programming() { local item_count=${#items[@]} local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Programming Applications" "Select editors and IDEs${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "Programming Applications" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "${items[@]}" \ ) clear diff --git a/modules/extras/security/security.sh b/modules/extras/security/security.sh index da6da54..3bb55a0 100644 --- a/modules/extras/security/security.sh +++ b/modules/extras/security/security.sh @@ -27,7 +27,7 @@ _cat_security() { local item_count=${#items[@]} local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Security & Networking" "Select security and networking tools${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "Security & Networking" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "${items[@]}" \ ) clear diff --git a/modules/extras/system/system.sh b/modules/extras/system/system.sh index 8dc19dc..8bf7988 100644 --- a/modules/extras/system/system.sh +++ b/modules/extras/system/system.sh @@ -100,7 +100,7 @@ _cat_general() { local item_count=${#items[@]} local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "System Tools" "Select system utilities to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "System Tools" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "${items[@]}" \ ) clear diff --git a/modules/extras/terminals/terminals.sh b/modules/extras/terminals/terminals.sh index 9476ba4..16df4f6 100644 --- a/modules/extras/terminals/terminals.sh +++ b/modules/extras/terminals/terminals.sh @@ -18,6 +18,7 @@ _cat_terminals() { if [ "$DEBIAN_VERSION" = "12" ] || [ "$DEBIAN_VERSION" = "13" ]; then items+=("alacritty" "" "$(_state alacritty)") + items+=("zutty" "" "$(_state zutty)") fi if [ "$DEBIAN_VERSION" = "13" ]; then items+=("blackbox-terminal" "" "$(_state blackbox-terminal)") @@ -27,7 +28,7 @@ _cat_terminals() { 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}:" \ + choices=$(_checklist "Terminals" "Check [*] the packages you want installed/updated on your system.\n" \ $TUI_ALTO $TUI_ANCHO $lista_alto "${items[@]}") clear [ -z "$choices" ] && return diff --git a/modules/extras/themes/cursors/cursors.sh b/modules/extras/themes/cursors/cursors.sh index b10cc0e..c0fcd7c 100644 --- a/modules/extras/themes/cursors/cursors.sh +++ b/modules/extras/themes/cursors/cursors.sh @@ -25,7 +25,7 @@ _cat_cursors() { local item_count=${#items[@]} local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Cursor Themes" "Select cursor themes to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "Cursor Themes" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "${items[@]}" \ ) clear diff --git a/modules/extras/themes/desktop-themes/desktop-themes.sh b/modules/extras/themes/desktop-themes/desktop-themes.sh index 794a388..cb5d3fb 100644 --- a/modules/extras/themes/desktop-themes/desktop-themes.sh +++ b/modules/extras/themes/desktop-themes/desktop-themes.sh @@ -27,7 +27,7 @@ _cat_themes() { local item_count=${#items[@]} local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Desktop Themes (GTK/KDE)" "Select desktop themes to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "Desktop Themes (GTK/KDE)" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "${items[@]}" \ ) clear diff --git a/modules/extras/themes/fonts/fonts.sh b/modules/extras/themes/fonts/fonts.sh index 498c9af..194b2b6 100644 --- a/modules/extras/themes/fonts/fonts.sh +++ b/modules/extras/themes/fonts/fonts.sh @@ -29,7 +29,7 @@ _cat_fonts() { local item_count=${#items[@]} local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Fonts" "Select fonts to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "Fonts" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "${items[@]}" \ ) clear diff --git a/modules/extras/themes/icons/icons.sh b/modules/extras/themes/icons/icons.sh index 65b66dc..1cfeadd 100644 --- a/modules/extras/themes/icons/icons.sh +++ b/modules/extras/themes/icons/icons.sh @@ -44,7 +44,7 @@ _cat_icons() { local item_count=${#items[@]} local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count)) local choices - choices=$(_checklist "Icon Themes" "Select icon themes to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $lista_alto \ + choices=$(_checklist "Icon Themes" "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $lista_alto \ "${items[@]}" \ ) clear diff --git a/modules/gaming.sh b/modules/gaming.sh index 2465c25..860943a 100644 --- a/modules/gaming.sh +++ b/modules/gaming.sh @@ -52,17 +52,17 @@ install_gaming() { # 1. Single checklist with ALL options (including i386 toggle) local choices choices=$(_checklist "Gaming Setup" \ - "Select gaming packages to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \ + "Check [*] the packages you want installed/updated on your system.\n" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \ + "i386" "Enable 32-bit (i386) architecture" ON \ "steam" "Steam (requires 32-bit support)" ON \ - "gamemode" "Game performance optimization" OFF \ "mangohud" "Performance overlay (Vulkan/OpenGL)" ON \ + "gamemode" "Game performance optimization" OFF \ "goverlay" "MangoHud config GUI" ON \ "heroic" "Heroic Launcher (Epic/GOG)" OFF \ "java" "Minecraft Java Runtime" OFF \ "openrgb" "OpenRGB (RGB lighting control)" OFF \ "lutris" "Lutris + Wine (requires 32-bit support)" OFF \ - "retroarch" "RetroArch Emulator Frontend" OFF \ - "i386" "Enable 32-bit (i386) architecture" ON) + "retroarch" "RetroArch Emulator Frontend" OFF) if [ -z "$choices" ]; then echo "No gaming packages selected." diff --git a/modules/gaming/_helpers.sh b/modules/gaming/_helpers.sh index 56c4772..e9e5494 100644 --- a/modules/gaming/_helpers.sh +++ b/modules/gaming/_helpers.sh @@ -7,7 +7,6 @@ _install_mesa_32bit() { "libgl1-mesa-dri" "libglx-mesa0" "libegl-mesa0" - "mesa-va-drivers" "mesa-libgallium" ) diff --git a/modules/gpu.sh b/modules/gpu.sh index 9c2b053..2d5f55c 100644 --- a/modules/gpu.sh +++ b/modules/gpu.sh @@ -87,6 +87,21 @@ _install_amd_intel_stack() { install_amd_firmware fi + if $HAS_AMD_LEGACY_GCN; then + local msg="An AMD GCN 1.0/GCN 1.1 GPU has been detected.\n\n" + msg+="These old GPUs use the legacy 'radeon' driver by default,\n" + msg+="but the modern 'amdgpu' driver offers better performance\n" + msg+="and Mesa support.\n\n" + msg+="Would you like to FORCE the amdgpu driver?\n" + msg+="(adds radeon.si_support=0 radeon.cik_support=0\n" + msg+=" amdgpu.si_support=1 amdgpu.cik_support=1 to GRUB)" + if _confirm "AMD Legacy GCN" "$msg" 16 72; then + _apply_amd_gcn_grub_fix + else + echo "Skipping amdgpu migration." + fi + fi + _install_mesa_backports local mesa_ver @@ -109,6 +124,33 @@ _install_amd_intel_stack() { _msg "Graphics Stack — Complete" "$summary" 12 65 } +_apply_amd_gcn_grub_fix() { + local file="/etc/default/grub" + local backup="${file}.backup.gcn.$(date +%Y%m%d_%H%M%S)" + local params="radeon.si_support=0 radeon.cik_support=0 amdgpu.si_support=1 amdgpu.cik_support=1" + + if grep -q "amdgpu.si_support=1" "$file" 2>/dev/null; then + _msg "AMD GCN" "amdgpu parameters already present in GRUB.\nNo changes made." 8 50 + return + fi + + sudo cp "$file" "$backup" + + sudo sed -i "/^GRUB_CMDLINE_LINUX_DEFAULT=/ s/\"$*/${params}&/" "$file" + + if _confirm "AMD GCN — GRUB" "Parameters added:\n\n ${params}\n\nRun update-grub now?" 12 65; then + if sudo update-grub >/dev/null 2>&1; then + _msg "AMD GCN — Complete" "amdgpu parameters added to GRUB.\n\nBackup: ${backup}\n\nReboot to apply." + else + echo -e "${RED}update-grub failed. Restoring backup...${NC}" + sudo cp "$backup" "$file" + _msg "Error" "update-grub failed.\nBackup restored." + fi + else + _msg "AMD GCN" "Parameters written to ${file}.\nRun 'sudo update-grub' manually." + fi +} + _install_nvidia_stack() { if ! $HAS_NVIDIA; then _msg "NVIDIA Not Found" "No NVIDIA GPU was detected.\n\nPlease check your hardware and try again." 10 60 diff --git a/modules/gpu/_helpers.sh b/modules/gpu/_helpers.sh index 94d803e..379d8a7 100644 --- a/modules/gpu/_helpers.sh +++ b/modules/gpu/_helpers.sh @@ -112,6 +112,21 @@ is_nvidia_blackwell() { echo false } +is_amd_legacy_gcn() { + local dev_id + dev_id=$(lspci -nn | grep -iE "VGA|3D" | grep -i amd | grep -oP '1002:\K[0-9a-fA-F]{4}' | head -n1) + [ -z "$dev_id" ] && { echo false; return; } + + local legacy_ids + legacy_ids="6660|6664|6665|6667|6780|6784|6788|678a|6798|679a|679e|679f|3000|3001|6808|6809|6810|6811|6816|6817|6818|6819|6828|6829|682b|682c|6835|6837|683d|683f|6608|6609|6610|6611|6613|6617|1dcf|983d|6646|6649|664d|6650|6651|6658|665c|665d|67a0|67a1|67a2|67a8|67a9|67aa|67b0|67b1|67b8|67be|9830|9831|9832|9833|9834|9835|9836|9837|9838|9839|1304|1305|1306|1307|1309|130a|130b|130c|130d|130e|130f|1310|1311|1312|1313|1315|1316|1317|1318|131b|131c|131d|9850|9851|9852|9853|9854|9855|9856|9857|9858|9859|985a|985b|985c|985d|985e|985f" + + if echo "$dev_id" | grep -qiE "^(${legacy_ids})$"; then + echo true + else + echo false + fi +} + _install_mesa_backports() { if [ "$(is_backports_enabled)" != "true" ]; then install_mesa_stable diff --git a/modules/gpu/amd_intel.sh b/modules/gpu/amd_intel.sh index 1ce13c1..9fb8461 100644 --- a/modules/gpu/amd_intel.sh +++ b/modules/gpu/amd_intel.sh @@ -11,13 +11,6 @@ install_amd_firmware() { offer_amd_tools() { local amd_tools=("radeontop") - local corectrl_available=false - - if [ "$DEBIAN_CODENAME" = "trixie" ]; then - corectrl_available=true - elif [ "$(is_backports_enabled)" = "true" ] && apt-cache madison corectrl 2>/dev/null | grep -q "bookworm-backports"; then - corectrl_available=true - fi local pkgs if [ "$DEBIAN_VERSION" = "11" ]; then @@ -25,13 +18,8 @@ offer_amd_tools() { else pkgs=$(pkg_versions "${amd_tools[@]}" nvtop vainfo) fi - if $corectrl_available; then - local ctrl_ver - ctrl_ver=$(apt-cache policy corectrl 2>/dev/null | awk 'NR==3 {print $2; exit}') - pkgs+=" - corectrl ${ctrl_ver}\n" - fi - if ! _confirm "AMD Tools" "Install AMD monitoring and control tools?\n\n${pkgs}"; then + if ! _confirm "AMD Tools" "Install AMD monitoring tools?\n\n${pkgs}"; then echo "Skipping AMD tools." return fi @@ -44,14 +32,6 @@ offer_amd_tools() { vainfo _pause "vainfo output shown above." - if $corectrl_available; then - if [ "$DEBIAN_CODENAME" = "trixie" ]; then - _run_cmd "corectrl" "sudo apt install -y corectrl" "Installing corectrl..." - else - _run_cmd "corectrl" "sudo apt install -y -t ${DEBIAN_CODENAME}-backports corectrl" "Installing corectrl from backports..." - fi - fi - echo -e "${GREEN}AMD tools installed.${NC}" } diff --git a/modules/kernel.sh b/modules/kernel.sh index effd64c..585c926 100644 --- a/modules/kernel.sh +++ b/modules/kernel.sh @@ -1,31 +1,77 @@ #!/usr/bin/env bash -# kernel.sh +# kernel.sh — Submenu for kernel variants: Stable, RT, Cloud, Backports -install_kernel_backports() { - if [ "$(is_backports_enabled)" != "true" ]; then - _msg "Kernel" "Backports repository is not enabled.\n\nUse option 3 (Configure repositories) to enable backports\nbefore installing the backports kernel." - return 1 - fi +show_kernel_menu() { + while true; do + local items=("stable" "Install linux-image-amd64") + [ "$DEBIAN_VERSION" != "11" ] && items+=("backports" "Install from backports") + items+=("rt" "Install linux-image-rt-amd64 (Preempt-RT)") + items+=("cloud" "Install linux-image-cloud-amd64") + items+=("back" "Return to main menu") - local backports_kernel_ver - backports_kernel_ver=$(get_backports_kernel_version) + local choice + choice=$(_menu "Kernel Installation" "Select kernel variant:" \ + 16 65 5 "${items[@]}") + [ -z "$choice" ] && break + clear - local msg="Install the latest kernel from backports?" - if [ "$backports_kernel_ver" != "unknown" ]; then - msg+="\n\nVersion: $backports_kernel_ver" - fi - msg+="\nOlder kernels remain available in GRUB." + case "$choice" in + stable) _install_kernel_package "linux-image-amd64" "Stable" "" ;; + rt) _install_kernel_package "linux-image-rt-amd64" "RT" "" ;; + cloud) _install_kernel_package "linux-image-cloud-amd64" "Cloud" "" ;; + backports) + if [ "$(is_backports_enabled)" != "true" ]; then + _msg "Kernel" "Backports repository is not enabled.\n\nUse option 3 (Configure repositories) to enable backports\nbefore installing the backports kernel." + else + _install_kernel_package "linux-image-amd64" "Backports" \ + "-t ${DEBIAN_CODENAME}-backports" + fi + ;; + back) break ;; + esac + done +} - if [ "$GPU_TYPE" == "nvidia" ]; then - msg+="\n\nWARNING: may break NVIDIA driver." - fi +_install_kernel_package() { + local pkg_base="$1" + local flavor="$2" + local bpo_flag="$3" - if ! _confirm "Backports Kernel" "$msg"; then - echo "Skipping kernel installation." + if ! apt-cache show "$pkg_base" >/dev/null 2>&1; then + _msg "Kernel" "Kernel not available for your current version of Debian.\n\nPackage: ${pkg_base}" 10 60 return fi - _run_cmd "Kernel" "sudo apt install -y -t ${DEBIAN_CODENAME}-backports linux-image-amd64" "Installing kernel from backports..." - echo -e "${GREEN}Kernel installed. Reboot to use it.${NC}" + if [ "$flavor" = "Backports" ] && [ "$GPU_TYPE" = "nvidia" ]; then + if ! _confirm "Kernel" "WARNING: Backports kernel changes the kernel version.\nYour NVIDIA driver will need recompilation (DKMS).\n\nProceed?"; then + echo "Skipping."; return + fi + fi + if [ "$flavor" = "RT" ] && [ "$GPU_TYPE" = "nvidia" ]; then + _msg "Kernel — RT" "Note: Ensure your NVIDIA driver supports the RT (Preempt-RT) kernel.\nSome proprietary drivers may not work correctly." 10 60 + fi + + local headers_pkg="${pkg_base/linux-image-/linux-headers-}" + local ver headers_ver + if [ -n "$bpo_flag" ]; then + ver=$(apt-cache madison "$pkg_base" 2>/dev/null | grep "${DEBIAN_CODENAME}-backports" | awk '{print $3}' | head -1) + headers_ver=$(apt-cache madison "$headers_pkg" 2>/dev/null | grep "${DEBIAN_CODENAME}-backports" | awk '{print $3}' | head -1) + else + ver=$(apt-cache show "$pkg_base" 2>/dev/null | sed -n 's/^Version: //p' | grep -v '~bpo' | head -1) + headers_ver=$(apt-cache show "$headers_pkg" 2>/dev/null | sed -n 's/^Version: //p' | grep -v '~bpo' | head -1) + fi + [ -n "$ver" ] && ver=" ($ver)" + [ -n "$headers_ver" ] && headers_ver=" ($headers_ver)" + local summary="Install ${flavor} kernel?\n Image: ${pkg_base}${ver}\n Headers: ${headers_pkg}${headers_ver}" + [ -n "$bpo_flag" ] && summary+="\n From: ${DEBIAN_CODENAME^}-backports" + + if ! _confirm "Kernel — ${flavor}" "$summary"; then + echo "Skipping."; return + fi + + _run_cmd "Kernel" "sudo apt install -y ${bpo_flag} ${pkg_base} ${headers_pkg}" \ + "Installing ${flavor} kernel + headers..." + + echo -e "${GREEN}${flavor} kernel installed. Reboot to use it.${NC}" _pause } diff --git a/modules/repos.sh b/modules/repos.sh index eb7bd98..c0a9a0e 100644 --- a/modules/repos.sh +++ b/modules/repos.sh @@ -467,8 +467,7 @@ _repos_setup_backports() { local enable_backports=false if _confirm "Backports" "Do you want to enable the official Debian Backports repository?\n\n\ -Backports provides newer, selectively updated packages from the next\n\ -Debian testing branch, recompiled to run stably on your current system.\n\n\ +Backports provides newer, selectively updated packages from the next Debian testing branch, recompiled to run stably on your current system.\n Answer NO to disable or remove backports if they are currently enabled." 16 70; then enable_backports=true fi diff --git a/modules/rescue.sh b/modules/rescue.sh index 1f51cd8..ccfca17 100644 --- a/modules/rescue.sh +++ b/modules/rescue.sh @@ -122,7 +122,7 @@ _grub_menu_settings() { while true; do local choice choice=$(_menu "GRUB Boot Menu Settings" \ - "Configure when and how the GRUB menu appears${SCROLL_HINT}:" \ + "Configure when and how the GRUB menu appears:" \ $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \ "1" "Disable GRUB menu on start (Fastest boot)" \ "2" "Faster boot (Show 3-sec countdown)" \ @@ -168,7 +168,7 @@ rescue_boot() { while true; do local choice choice=$(_menu "Boot Rescue + GRUB Configuration" \ - "Select an operation${SCROLL_HINT}:" \ + "Select an operation:" \ $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \ "1" "GRUB Boot Menu Settings" \ "2" "Refirm Secure Boot (shim + GRUB)" \ diff --git a/modules/utils.sh b/modules/utils.sh index 917c436..7a4a490 100644 --- a/modules/utils.sh +++ b/modules/utils.sh @@ -4,7 +4,6 @@ # ------------------ # Global variables # ------------------ -readonly SCROLL_HINT=" [↑↓]" CPU_SUMMARY="" RAM_SUMMARY="" GPU_TYPE="" @@ -15,6 +14,7 @@ NVIDIA_GPU_DEVICE_ID="" HAS_NVIDIA=false HAS_AMD=false HAS_INTEL=false +HAS_AMD_LEGACY_GCN=false KERNEL_VERSION="" DISPLAY_SERVER="unknown" STORAGE_SUMMARY="" @@ -212,6 +212,7 @@ detect_gpu() { [ -z "$nvidia_dev_id" ] && nvidia_dev_id=$(echo "$line" | grep -oP '10de:\K[0-9a-fA-F]+' | head -n1) elif echo "$line" | grep -qi "amd"; then has_amd=true + HAS_AMD_LEGACY_GCN=$(is_amd_legacy_gcn) elif echo "$line" | grep -qi "intel"; then has_intel=true [ -z "$intel_dev_id" ] && intel_dev_id=$(echo "$line" | grep -oP '8086:\K[0-9a-fA-F]+' | head -n1) @@ -557,11 +558,11 @@ _menu() { _checklist() { local title="$1" text="$2" h="$3" w="$4" lh="$5"; shift 5 - whiptail --title "$title" --checklist "$text" "$h" "$w" "$lh" "$@" 3>&1 1>&2 2>&3 || true + whiptail --title "$title" --ok-button "Apply" --checklist "$text" "$h" "$w" "$lh" "$@" 3>&1 1>&2 2>&3 || true } _inputbox() { - whiptail --title "$1" --inputbox "$2" "${3:-10}" "${4:-60}" "${5:-}" 3>&1 1>&2 2>&3 || true + whiptail --title "$1" --ok-button "Apply" --inputbox "$2" "${3:-10}" "${4:-60}" "${5:-}" 3>&1 1>&2 2>&3 || true } _validate_sudoers() {