mirror of
https://github.com/stornic56/debianito-post-install.git
synced 2026-07-16 05:49:49 +00:00
critical-fixes, swap module & gaming overhaul
- Fixed script crashes from `whiptail` Cancel/Esc under `set -e`. Added `_menu()`, `_checklist()` and `_inputbox()` wrappers with `|| true` to prevent premature exits. - Resolved startup failures by using defaults instead of relying on unset variables with `set -u`. - Hardened sudoers management — `_validate_sudoers()` writes to temp file, validates with `visudo -cf`, only copies if successful. - Replaced `eval` in `_run_cmd` with safer `bash -c` execution. Swap Management Module (`modules/swap.sh`) - New standalone module with 9 internal functions and `manage_swap()` entry point. - Btrfs CoW detection — applies `chattr +C` before swapfile creation to prevent mkswap rejection on Btrfs. - Dynamic swappiness configuration — reads current system value instead of hardcoding 60, pre-fills inputbox with existing setting. - Uses `/run/lock/debianito-swap.lock` for early init compatibility (added as option 9 in main menu). Repository & Branch Migration (`modules/repos/migrate.sh`) - Handles branch migration from stable (11/12) to Testing or SID with 5-screen UX flow. - Persistent backup system — creates timestamped tar.gz backups of `/etc/apt/sources.list*`, auto-restores on apt update failure. - SID guardrails — installs `apt-listbugs` and `apt-listchanges` before upgrade to warn about critical bugs in unstable packages. - Dynamic menu options based on Debian version (SID shows only 1-2-3 Exit, non-SID includes backports + branch migration). - New `_components_enabled()` helper detects current contrib/non-free state. Gaming Module Overhaul - Unified gaming checklist — merged i386 toggle into single prompt with lazy evaluation instead of separate pre-check. - Lazy 32-bit architecture enablement — only enables i386 when needed (steam/lutris/i386 selected) and installs graphics drivers if `need_32bit=true`. - New `_install_nvidia_32bit()` helper with proper driver detection, version pinning, and legacy/tesla variant handling. Heroic & OpenRGB Downloads - Heroic — fetches latest release from GitHub API using `jq` to extract amd64.deb URL, validates with `dpkg-deb --info`. - OpenRGB — downloads from Codeberg Gitea API with SHA256 verification when available, fallback to `dpkg-deb` validation. - Dynamic codename detection — now detects Bookworm vs Trixie at runtime instead of hardcoded static values for .deb download URLs. |Other Improvements - Renumbered main menu: 8=ZRAM, 9=Swap Management, 10=Extras, 11=Boot Rescue, 12=Exit. - Improved `detect_storage()` — excludes loop/CD-ROM devices via `lsblk -e 7,11`, explicitly skips zram, detects USB/SD via `/sys/block/$name/removable`. - Standardized SCROLL_HINT across all files with centralized readonly variable.
This commit is contained in:
@@ -19,8 +19,7 @@ _cat_design() {
|
||||
local shotcut_state; shotcut_state=$(_state "shotcut")
|
||||
|
||||
local choices
|
||||
choices=$(whiptail --title "Multimedia & Design" --checklist \
|
||||
"Select multimedia and design tools${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
|
||||
choices=$(_checklist "Multimedia & Design" "Select multimedia and design tools${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
|
||||
"audacity" "Audio editor/recorder$(_inst audacity)" "$audacity_state" \
|
||||
"ardour" "Digital audio workstation$(_inst ardour)" "$ardour_state" \
|
||||
"blender" "3D modeling/animation suite$(_inst blender)" "$blender_state" \
|
||||
@@ -34,7 +33,7 @@ _cat_design() {
|
||||
"openshot-qt" "Video editor (simple)$(_inst openshot-qt)" "$openshot_state" \
|
||||
"scribus" "Desktop publishing (DTP)$(_inst scribus)" "$scribus_state" \
|
||||
"shotcut" "Video editor (cross-platform)$(_inst shotcut)" "$shotcut_state" \
|
||||
3>&1 1>&2 2>&3)
|
||||
)
|
||||
clear
|
||||
|
||||
[ -z "$choices" ] && return
|
||||
|
||||
@@ -22,8 +22,7 @@ _cat_dev() {
|
||||
|
||||
local TUI_ANCHO_REFORZADO=$((TUI_ANCHO + 6))
|
||||
local choices
|
||||
choices=$(whiptail --title "Development & Servers" --checklist \
|
||||
"Select development tools and servers${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO_REFORZADO $TUI_ALTO_LISTA \
|
||||
choices=$(_checklist "Development & Servers" "Select development tools and servers${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO_REFORZADO $TUI_ALTO_LISTA \
|
||||
"apache2" "Apache web server$(_inst apache2)" "$apache_state" \
|
||||
"build-essential" "C/C++ build tools (gcc, make)$(_inst build-essential)" "$build_state" \
|
||||
"certbot" "Let's Encrypt TLS certificates$(_inst certbot)" "$certbot_state" \
|
||||
@@ -39,7 +38,7 @@ _cat_dev() {
|
||||
"sqlite3" "SQLite database engine$(_inst sqlite3)" "$sqlite_state" \
|
||||
"jellyfin" "Jellyfin Media Server (Web GUI on port 8096)$(_inst jellyfin)" OFF \
|
||||
"openjdk-dev-env" "Adoptium Temurin JDK (17, 21, 25 LTS)${jdk_desc}" "${jdk_state}" \
|
||||
3>&1 1>&2 2>&3)
|
||||
)
|
||||
clear
|
||||
|
||||
[ -z "$choices" ] && return
|
||||
|
||||
@@ -21,17 +21,15 @@ _cat_download() {
|
||||
local TUI_ANCHO_REFORZADO=$((TUI_ANCHO + 6))
|
||||
local choices1 choices2=""
|
||||
|
||||
choices1=$(whiptail --title "Downloaders" --checklist \
|
||||
"Select download tools:" $TUI_ALTO $TUI_ANCHO_REFORZADO $TUI_ALTO_LISTA \
|
||||
choices1=$(_checklist "Downloaders" "Select download tools:" $TUI_ALTO $TUI_ANCHO_REFORZADO $TUI_ALTO_LISTA \
|
||||
"aria2" "Multiprotocol downloader (CLI)$(_inst aria2)" "$aria2_state" \
|
||||
"filezilla" "FTP/SFTP client (GUI)$(_inst filezilla)" "$filezilla_state" \
|
||||
"yt-dlp" "Video downloader CLI$(_inst yt-dlp)" "$ytdlp_state" \
|
||||
"youtubedl-gui" "GUI for yt-dlp$(_inst youtubedl-gui)" "$ytdlp_gui_state" \
|
||||
3>&1 1>&2 2>&3)
|
||||
)
|
||||
clear
|
||||
|
||||
choices2=$(whiptail --title "Torrent Clients" --checklist \
|
||||
"Select torrent clients:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
|
||||
choices2=$(_checklist "Torrent Clients" "Select torrent clients:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
|
||||
"deluge" "BitTorrent client (GTK)$(_inst deluge)" "$deluge_state" \
|
||||
"deluged" "BitTorrent daemon/server$(_inst deluged)" "$deluged_state" \
|
||||
"mktorrent" "Torrent metainfo creator (CLI)$(_inst mktorrent)" "$mktorrent_state" \
|
||||
@@ -40,7 +38,7 @@ _cat_download() {
|
||||
"transmission-cli" "BitTorrent client (CLI)$(_inst transmission-cli)" "$tr_cli_state" \
|
||||
"transmission-gtk" "BitTorrent client (GTK)$(_inst transmission-gtk)" "$tr_gtk_state" \
|
||||
"transmission-qt" "BitTorrent client (Qt)$(_inst transmission-qt)" "$tr_qt_state" \
|
||||
3>&1 1>&2 2>&3)
|
||||
)
|
||||
clear
|
||||
|
||||
local cleaned
|
||||
|
||||
@@ -37,10 +37,9 @@ _cat_fetch() {
|
||||
|
||||
local TUI_ANCHO_REFORZADO=$((TUI_ANCHO + 6))
|
||||
local choices
|
||||
choices=$(whiptail --title "Fetch Tools" --checklist \
|
||||
"Select system info tools:" $TUI_ALTO $TUI_ANCHO_REFORZADO $TUI_ALTO_LISTA \
|
||||
choices=$(_checklist "Fetch Tools" "Select system info tools:" $TUI_ALTO $TUI_ANCHO_REFORZADO $TUI_ALTO_LISTA \
|
||||
"${items[@]}" \
|
||||
3>&1 1>&2 2>&3)
|
||||
)
|
||||
clear
|
||||
|
||||
[ -z "$choices" ] && return
|
||||
|
||||
@@ -144,8 +144,7 @@ _cat_internet() {
|
||||
local protonvpn_state; protonvpn_state=$(_state "protonvpn")
|
||||
|
||||
local choices
|
||||
choices=$(whiptail --title "Internet" --checklist \
|
||||
"Select browsers, email, and VPN tools${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
|
||||
choices=$(_checklist "Internet" "Select browsers, email, and VPN tools${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
|
||||
"chromium" "Chromium web browser$(_inst chromium)" "$chromium_state" \
|
||||
"dillo" "Lightweight graphical browser$(_inst dillo)" "$dillo_state" \
|
||||
"elinks" "Text-mode web browser$(_inst elinks)" "$elinks_state" \
|
||||
@@ -167,7 +166,7 @@ _cat_internet() {
|
||||
"mullvad-vpn" "Mullvad VPN client (WireGuard)$(_inst mullvad-vpn)" "$mullvad_state" \
|
||||
"mullvad-browser" "Mullvad privacy browser$(_inst mullvad-browser)" "$mullvadbrowser_state" \
|
||||
"protonvpn" "ProtonVPN client$(_inst protonvpn)" "$protonvpn_state" \
|
||||
3>&1 1>&2 2>&3)
|
||||
)
|
||||
clear
|
||||
|
||||
[ -z "$choices" ] && return
|
||||
|
||||
@@ -15,12 +15,11 @@ _enable_temurin_repo() {
|
||||
|
||||
install_minecraft_java() {
|
||||
local choices
|
||||
choices=$(whiptail --title "Java Runtimes for Minecraft" --checklist \
|
||||
choices=$(_checklist "Java Runtimes for Minecraft" \
|
||||
"Select Java version(s) to install:" 14 65 3 \
|
||||
"8" "Java 8 — Classic mods & Minecraft <= 1.16.5" OFF \
|
||||
"17" "Java 17 — Minecraft 1.17 to 1.20.4" ON \
|
||||
"21" "Java 21 — Modern Minecraft >= 1.20.5 & 1.21+" OFF \
|
||||
3>&1 1>&2 2>&3)
|
||||
"21" "Java 21 — Modern Minecraft >= 1.20.5 & 1.21+" OFF)
|
||||
[ -z "$choices" ] && { echo "No Java version selected."; return; }
|
||||
_enable_temurin_repo
|
||||
local cleaned
|
||||
@@ -33,12 +32,11 @@ install_minecraft_java() {
|
||||
|
||||
_install_dev_java() {
|
||||
local ver
|
||||
ver=$(whiptail --title "Java Development Kits (JDK)" --menu \
|
||||
ver=$(_menu "Java Development Kits (JDK)" \
|
||||
"Select JDK version:" 12 60 3 \
|
||||
"17" "Java 17 LTS Development Kit" \
|
||||
"21" "Java 21 LTS Development Kit" \
|
||||
"25" "Java 25 LTS Development Kit" \
|
||||
3>&1 1>&2 2>&3)
|
||||
"25" "Java 25 LTS Development Kit")
|
||||
[ -z "$ver" ] && { echo "No JDK version selected."; return; }
|
||||
_enable_temurin_repo
|
||||
_run_install "temurin-${ver}-jdk"
|
||||
|
||||
@@ -61,11 +61,10 @@ install_libreoffice_bpo() {
|
||||
|
||||
_cat_office() {
|
||||
local choices
|
||||
choices=$(whiptail --title "Office & Productivity" --checklist \
|
||||
"Select office applications${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
|
||||
choices=$(_checklist "Office & Productivity" "Select office applications${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
|
||||
"onlyoffice" "OnlyOffice Desktop Editors (extrepo)" OFF \
|
||||
"libreoffice" "LibreOffice (backports on Bookworm/Trixie)" OFF \
|
||||
3>&1 1>&2 2>&3)
|
||||
)
|
||||
|
||||
[ -z "$choices" ] && return
|
||||
local cleaned; cleaned=$(echo "$choices" | tr -d '"')
|
||||
|
||||
@@ -9,11 +9,10 @@ _cat_players() {
|
||||
|
||||
local TUI_ANCHO_REFORZADO=$((TUI_ANCHO + 6))
|
||||
local choices
|
||||
choices=$(whiptail --title "Media Players" --checklist \
|
||||
"Select media players:" $TUI_ALTO $TUI_ANCHO_REFORZADO $TUI_ALTO_LISTA \
|
||||
choices=$(_checklist "Media Players" "Select media players:" $TUI_ALTO $TUI_ANCHO_REFORZADO $TUI_ALTO_LISTA \
|
||||
"mpv" "Lightweight media player$(_inst mpv)" "$mpv_state" \
|
||||
"vlc" "VLC media player$(_inst vlc)" "$vlc_state" \
|
||||
3>&1 1>&2 2>&3)
|
||||
)
|
||||
clear
|
||||
|
||||
[ -z "$choices" ] && return
|
||||
|
||||
@@ -22,8 +22,7 @@ _cat_programming() {
|
||||
|
||||
local TUI_ANCHO_REFORZADO=$((TUI_ANCHO + 6))
|
||||
local choices
|
||||
choices=$(whiptail --title "Programming Applications" --checklist \
|
||||
"Select editors and IDEs${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO_REFORZADO $TUI_ALTO_LISTA \
|
||||
choices=$(_checklist "Programming Applications" "Select editors and IDEs${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO_REFORZADO $TUI_ALTO_LISTA \
|
||||
"vim" "Classic terminal editor$(_inst vim)" "$vim_state" \
|
||||
"vim-gtk3" "Vim with GTK3 GUI$(_inst vim-gtk3)" "$vimgtk_state" \
|
||||
"neovim" "Modern vim fork$(_inst neovim)" "$neovim_state" \
|
||||
@@ -36,7 +35,7 @@ _cat_programming() {
|
||||
"geany" "Lightweight IDE$(_inst geany)" "$geany_state" \
|
||||
"gnome-text-editor" "GNOME modern text editor$(_inst gnome-text-editor)" "$gte_state" \
|
||||
"vscodium" "VS Code open-source (extrepo)$(_inst codium)" "$codium_state" \
|
||||
3>&1 1>&2 2>&3)
|
||||
)
|
||||
clear
|
||||
|
||||
[ -z "$choices" ] && return
|
||||
|
||||
@@ -13,15 +13,14 @@ _cat_security() {
|
||||
|
||||
local TUI_ANCHO_REFORZADO=$((TUI_ANCHO + 6))
|
||||
local choices
|
||||
choices=$(whiptail --title "Security & Networking" --checklist \
|
||||
"Select security and networking tools${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO_REFORZADO $TUI_ALTO_LISTA \
|
||||
choices=$(_checklist "Security & Networking" "Select security and networking tools${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO_REFORZADO $TUI_ALTO_LISTA \
|
||||
"wireshark" "Network protocol analyzer (GUI)$(_inst wireshark)" "$wireshark_state" \
|
||||
"tcpdump" "Command-line packet analyzer$(_inst tcpdump)" "$tcpdump_state" \
|
||||
"zenmap" "Network scanner GUI (Nmap frontend)$(_inst zenmap)" "$zenmap_state" \
|
||||
"fail2ban" "Brute-force protection daemon$(_inst fail2ban)" "$fail2ban_state" \
|
||||
"ufw" "Uncomplicated firewall$(_inst ufw)" "$ufw_state" \
|
||||
"clamav" "Antivirus engine (ClamAV)$(_inst clamav)" "$clamav_state" \
|
||||
3>&1 1>&2 2>&3)
|
||||
)
|
||||
clear
|
||||
|
||||
[ -z "$choices" ] && return
|
||||
|
||||
@@ -4,11 +4,10 @@ _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 \
|
||||
sc_choice=$(_menu "Software Centers" "Choose a software store to install:" 12 65 2 \
|
||||
"gnome-software" "Software Center for GNOME$(_inst gnome-software)" \
|
||||
"plasma-discover" "Software manager for Plasma$(_inst plasma-discover)" \
|
||||
3>&1 1>&2 2>&3)
|
||||
)
|
||||
[ -z "$sc_choice" ] && return
|
||||
|
||||
if { [ "$de_type" = "qt" ] && [ "$sc_choice" = "gnome-software" ]; } || \
|
||||
|
||||
@@ -61,8 +61,7 @@ _cat_general() {
|
||||
|
||||
local TUI_ANCHO_REFORZADO=$((TUI_ANCHO + 6))
|
||||
local choices
|
||||
choices=$(whiptail --title "System Tools" --checklist \
|
||||
"Select system utilities to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO_REFORZADO $TUI_ALTO_LISTA \
|
||||
choices=$(_checklist "System Tools" "Select system utilities to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO_REFORZADO $TUI_ALTO_LISTA \
|
||||
"alacritty" "GPU-accelerated terminal$(_inst alacritty)" "$alacritty_state" \
|
||||
"btop" "Resource monitor (fancy top)$(_inst btop)" "$btop_state" \
|
||||
"compress" "Compression tools (zip, unrar, 7z)$(_inst zip)" "$compress_state" \
|
||||
@@ -92,7 +91,7 @@ _cat_general() {
|
||||
"timeshift" "System restore snapshots$(_inst timeshift)" "$timeshift_state" \
|
||||
"tmux" "Terminal multiplexer$(_inst tmux)" "$tmux_state" \
|
||||
"wine" "Windows compatibility layer$(_inst wine)" "$wine_state" \
|
||||
3>&1 1>&2 2>&3)
|
||||
)
|
||||
clear
|
||||
|
||||
[ -z "$choices" ] && return
|
||||
|
||||
@@ -10,15 +10,14 @@ _cat_cursors() {
|
||||
local oxygen_state; oxygen_state=$(_state "oxygencursors")
|
||||
|
||||
local choices
|
||||
choices=$(whiptail --title "Cursor Themes" --checklist \
|
||||
"Select cursor themes to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
|
||||
choices=$(_checklist "Cursor Themes" "Select cursor themes to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
|
||||
"bibata-cursor-theme" "Bibata cursors$(_inst bibata-cursor-theme)" "$bibata_state" \
|
||||
"breeze-cursor-theme" "Breeze cursors (KDE)$(_inst breeze-cursor-theme)" "$breeze_state" \
|
||||
"chameleon-cursor-theme" "Chameleon cursors$(_inst chameleon-cursor-theme)" "$chameleon_state" \
|
||||
"dmz-cursor-theme" "DMZ cursors$(_inst dmz-cursor-theme)" "$dmz_state" \
|
||||
"xcursor-themes" "X11 base cursors$(_inst xcursor-themes)" "$xcursor_state" \
|
||||
"oxygencursors" "Oxygen cursors (KDE legacy)$(_inst oxygencursors)" "$oxygen_state" \
|
||||
3>&1 1>&2 2>&3)
|
||||
)
|
||||
clear
|
||||
|
||||
[ -z "$choices" ] && return
|
||||
|
||||
@@ -13,8 +13,7 @@ _cat_themes() {
|
||||
local orchis_state; orchis_state=$(_state "orchis-gtk-theme")
|
||||
|
||||
local choices
|
||||
choices=$(whiptail --title "Desktop Themes (GTK/KDE)" --checklist \
|
||||
"Select desktop themes to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
|
||||
choices=$(_checklist "Desktop Themes (GTK/KDE)" "Select desktop themes to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
|
||||
"arc-theme" "Arc GTK theme$(_inst arc-theme)" "$arc_state" \
|
||||
"blackbird-gtk-theme" "Blackbird GTK theme$(_inst blackbird-gtk-theme)" "$blackbird_state" \
|
||||
"bluebird-gtk-theme" "Bluebird GTK theme$(_inst bluebird-gtk-theme)" "$bluebird_state" \
|
||||
@@ -22,7 +21,7 @@ _cat_themes() {
|
||||
"greybird-gtk-theme" "Greybird GTK theme$(_inst greybird-gtk-theme)" "$greybird_state" \
|
||||
"numix-gtk-theme" "Numix GTK theme$(_inst numix-gtk-theme)" "$numix_gtk_state" \
|
||||
"orchis-gtk-theme" "Orchis GTK theme$(_inst orchis-gtk-theme)" "$orchis_state" \
|
||||
3>&1 1>&2 2>&3)
|
||||
)
|
||||
clear
|
||||
|
||||
[ -z "$choices" ] && return
|
||||
|
||||
@@ -12,8 +12,7 @@ _cat_fonts() {
|
||||
local recommended_state; recommended_state=$(_state "fonts-recommended")
|
||||
|
||||
local choices
|
||||
choices=$(whiptail --title "Fonts" --checklist \
|
||||
"Select fonts to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
|
||||
choices=$(_checklist "Fonts" "Select fonts to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
|
||||
"fonts-bebas-neue" "Bebas Neue (display)$(_inst fonts-bebas-neue)" "$bebas_state" \
|
||||
"fonts-anonymous-pro" "Anonymous Pro (monospace)$(_inst fonts-anonymous-pro)" "$anon_state" \
|
||||
"fonts-adf-verana" "ADF Verana (sans-serif)$(_inst fonts-adf-verana)" "$verana_state" \
|
||||
@@ -22,7 +21,7 @@ _cat_fonts() {
|
||||
"ttf-mscorefonts-installer" "Microsoft fonts (EULA required)$(_inst ttf-mscorefonts-installer)" "$mscore_state" \
|
||||
"fonts-ubuntu" "Ubuntu font family$(_inst fonts-ubuntu)" "$ubuntu_state" \
|
||||
"fonts-recommended" "Debian recommended fonts$(_inst fonts-recommended)" "$recommended_state" \
|
||||
3>&1 1>&2 2>&3)
|
||||
)
|
||||
clear
|
||||
|
||||
[ -z "$choices" ] && return
|
||||
|
||||
@@ -41,10 +41,9 @@ _cat_icons() {
|
||||
fi
|
||||
|
||||
local choices
|
||||
choices=$(whiptail --title "Icon Themes" --checklist \
|
||||
"Select icon themes to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
|
||||
choices=$(_checklist "Icon Themes" "Select icon themes to install${SCROLL_HINT}:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
|
||||
"${items[@]}" \
|
||||
3>&1 1>&2 2>&3)
|
||||
)
|
||||
clear
|
||||
|
||||
[ -z "$choices" ] && return
|
||||
|
||||
@@ -4,13 +4,12 @@
|
||||
_cat_customization() {
|
||||
local TUI_ANCHO_REFORZADO=$((TUI_ANCHO + 6))
|
||||
local sub
|
||||
sub=$(whiptail --title "Customization System" --menu \
|
||||
"Select type:" $TUI_ALTO $TUI_ANCHO_REFORZADO $TUI_ALTO_LISTA \
|
||||
sub=$(_menu "Customization System" "Select type:" $TUI_ALTO $TUI_ANCHO_REFORZADO $TUI_ALTO_LISTA \
|
||||
"1" "Desktop Themes (GTK/KDE)" \
|
||||
"2" "Icon Themes" \
|
||||
"3" "Cursor Themes" \
|
||||
"4" "Fonts" \
|
||||
3>&1 1>&2 2>&3)
|
||||
)
|
||||
[ -z "$sub" ] && return
|
||||
case $sub in
|
||||
1) _cat_themes ;;
|
||||
|
||||
Reference in New Issue
Block a user