General changes to the script order
New programs
Changes in flow
Name revisions
This commit is contained in:
stornic56
2026-05-20 12:26:06 -05:00
committed by GitHub
parent 18d088f6c7
commit 194f021ad0
6 changed files with 441 additions and 149 deletions
+344 -121
View File
@@ -44,88 +44,95 @@ install_extras() {
while true; do
local cat_choice
cat_choice=$(dialog --title "Extra Software" --menu \
"Select a category:" 16 60 7 \
"Select a category:" 20 68 9 \
"1" "System Tools" \
"2" "Development & Servers" \
"3" "Media & Browsers" \
"4" "GTK Themes" \
"5" "Icon Themes" \
"6" "Fetch / System Info" \
"7" "Back to main menu" \
"3" "Media Players" \
"4" "Web Browsers" \
"5" "GTK Themes" \
"6" "Icon Themes" \
"7" "Fetch / System Info" \
"8" "Download & Network" \
"9" "Multimedia & Design" \
"10" "Back to main menu" \
3>&1 1>&2 2>&3)
[ -z "$cat_choice" ] && return
clear
tput reset 2>/dev/null || clear
case "$cat_choice" in
1) _cat_general ;;
2) _cat_dev ;;
3) _cat_media ;;
4) _cat_themes ;;
5) _cat_icons ;;
6) _cat_fetch ;;
7) return ;;
3) _cat_players ;;
4) _cat_browsers ;;
5) _cat_themes ;;
6) _cat_icons ;;
7) _cat_fetch ;;
8) _cat_download ;;
9) _cat_design ;;
10) return ;;
esac
clear
done
}
_cat_general() {
local htop_state="OFF"; is_installed "htop" && htop_state="ON"
local alacritty_state="OFF"; is_installed "alacritty" && alacritty_state="ON"
local btop_state="OFF"; is_installed "btop" && btop_state="ON"
local tmux_state="OFF"; is_installed "tmux" && tmux_state="ON"
local ncdu_state="OFF"; is_installed "ncdu" && ncdu_state="ON"
local mc_state="OFF"; is_installed "mc" && mc_state="ON"
local psensor_state="OFF"; is_installed "psensor" && psensor_state="ON"
local compress_state="OFF"; is_installed "zip" && is_installed "unzip" && is_installed "p7zip-full" && compress_state="ON"
local conky_state="OFF"; is_installed "conky" && conky_state="ON"
local corectrl_state="OFF"; is_installed "corectrl" && corectrl_state="ON"
local cpufetch_state="OFF"; is_installed "cpufetch" && cpufetch_state="ON"
local cpu_x_state="OFF"; is_installed "cpu-x" && cpu_x_state="ON"
local lshw_state="OFF"; is_installed "lshw" && lshw_state="ON"
local inxi_state="OFF"; is_installed "inxi" && inxi_state="ON"
local hardinfo_state="OFF"; is_installed "hardinfo" && hardinfo_state="ON"
local nala_state="OFF"; is_installed "nala" && nala_state="ON"
local fwupd_state="OFF"; is_installed "fwupd" && fwupd_state="ON"
local gparted_state="OFF"; is_installed "gparted" && gparted_state="ON"
local disks_state="OFF"; is_installed "gnome-disk-utility" && disks_state="ON"
local timeshift_state="OFF"; is_installed "timeshift" && timeshift_state="ON"
local compress_state="OFF"; is_installed "zip" && is_installed "unzip" && is_installed "p7zip-full" && compress_state="ON"
local curl_wget_state="OFF"; is_installed "curl" && is_installed "wget" && curl_wget_state="ON"
local flatpak_state="OFF"; is_installed "flatpak" && flatpak_state="ON"
local alacritty_state="OFF"; is_installed "alacritty" && alacritty_state="ON"
local fonts_state="OFF"; is_installed "fonts-ubuntu" && fonts_state="ON"
local fwupd_state="OFF"; is_installed "fwupd" && fwupd_state="ON"
local disks_state="OFF"; is_installed "gnome-disk-utility" && disks_state="ON"
local gparted_state="OFF"; is_installed "gparted" && gparted_state="ON"
local hardinfo_state="OFF"; is_installed "hardinfo" && hardinfo_state="ON"
local htop_state="OFF"; is_installed "htop" && htop_state="ON"
local inxi_state="OFF"; is_installed "inxi" && inxi_state="ON"
local kitty_state="OFF"; is_installed "kitty" && kitty_state="ON"
local kvm_state="OFF"; is_installed "virt-manager" && kvm_state="ON"
local lshw_state="OFF"; is_installed "lshw" && lshw_state="ON"
local mc_state="OFF"; is_installed "mc" && mc_state="ON"
local nala_state="OFF"; is_installed "nala" && nala_state="ON"
local ncdu_state="OFF"; is_installed "ncdu" && ncdu_state="ON"
local psensor_state="OFF"; is_installed "psensor" && psensor_state="ON"
local timeshift_state="OFF"; is_installed "timeshift" && timeshift_state="ON"
local tmux_state="OFF"; is_installed "tmux" && tmux_state="ON"
local ttf_state="OFF"; is_installed "ttf-mscorefonts-installer" && ttf_state="ON"
local fonts_state="OFF"; is_installed "fonts-ubuntu" && fonts_state="ON"
local choices
choices=$(dialog --title "System Tools" --checklist \
"Select system utilities to install:" 30 72 25 \
"htop" "Interactive process viewer$(_inst htop)" "$htop_state" \
"btop" "Resource monitor (fancy top)$(_inst btop)" "$btop_state" \
"tmux" "Terminal multiplexer$(_inst tmux)" "$tmux_state" \
"ncdu" "Disk usage analyzer (ncurses)$(_inst ncdu)" "$ncdu_state" \
"mc" "Midnight Commander (file manager)$(_inst mc)" "$mc_state" \
"psensor" "Hardware temperature monitor$(_inst psensor)" "$psensor_state" \
"conky" "System monitor for desktop$(_inst conky)" "$conky_state" \
"cpufetch" "CPU info fetcher$(_inst cpufetch)" "$cpufetch_state" \
"cpu-x" "CPU-X (alternative to CPU-Z)$(_inst cpu-x)" "$cpu_x_state" \
"lshw" "List hardware details$(_inst lshw)" "$lshw_state" \
"inxi" "System information tool$(_inst inxi)" "$inxi_state" \
"hardinfo" "Graphical system profiler$(_inst hardinfo)" "$hardinfo_state" \
"nala" "APT frontend (parallel downloads)$(_inst nala)" "$nala_state" \
"fwupd" "Firmware update daemon$(_inst fwupd)" "$fwupd_state" \
"gparted" "GNOME partition editor$(_inst gparted)" "$gparted_state" \
"gnome-disk-utility" "Disk management GUI$(_inst gnome-disk-utility)" "$disks_state" \
"timeshift" "System restore snapshots$(_inst timeshift)" "$timeshift_state" \
"alacritty" "GPU-accelerated terminal$(_inst alacritty)" "$alacritty_state" \
"kitty" "GPU-based terminal emulator$(_inst kitty)" "$kitty_state" \
"kvm" "QEMU/KVM virtualization$(_inst virt-manager)" "$kvm_state" \
"compress" "Compression tools (zip, unrar, 7z)$(_inst zip)" "$compress_state" \
"curl-wget" "HTTP transfer tools (curl, wget)$(_inst curl)" "$curl_wget_state" \
"flatpak" "Flatpak sandbox + Flathub$(_inst flatpak)" "$flatpak_state" \
"Select system utilities to install:" 30 72 26 \
"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" \
"conky" "System monitor for desktop$(_inst conky)" "$conky_state" \
"corectrl" "AMD GPU control (CoreCtrl)$(_inst corectrl)" "$corectrl_state" \
"cpufetch" "CPU info fetcher$(_inst cpufetch)" "$cpufetch_state" \
"cpu-x" "CPU-X (alternative to CPU-Z)$(_inst cpu-x)" "$cpu_x_state" \
"curl-wget" "HTTP transfer tools (curl, wget)$(_inst curl)" "$curl_wget_state" \
"flatpak" "Flatpak sandbox + Flathub$(_inst flatpak)" "$flatpak_state" \
"fonts-ubuntu" "Ubuntu font family$(_inst fonts-ubuntu)" "$fonts_state" \
"fwupd" "Firmware update daemon$(_inst fwupd)" "$fwupd_state" \
"gnome-disk-utility" "Disk management GUI$(_inst gnome-disk-utility)" "$disks_state" \
"gparted" "GNOME partition editor$(_inst gparted)" "$gparted_state" \
"hardinfo" "Graphical system profiler$(_inst hardinfo)" "$hardinfo_state" \
"htop" "Interactive process viewer$(_inst htop)" "$htop_state" \
"inxi" "System information tool$(_inst inxi)" "$inxi_state" \
"kitty" "GPU-based terminal emulator$(_inst kitty)" "$kitty_state" \
"kvm" "QEMU/KVM virtualization$(_inst virt-manager)" "$kvm_state" \
"lshw" "List hardware details$(_inst lshw)" "$lshw_state" \
"mc" "Midnight Commander (file manager)$(_inst mc)" "$mc_state" \
"nala" "APT frontend (parallel downloads)$(_inst nala)" "$nala_state" \
"ncdu" "Disk usage analyzer (ncurses)$(_inst ncdu)" "$ncdu_state" \
"psensor" "Hardware temperature monitor$(_inst psensor)" "$psensor_state" \
"timeshift" "System restore snapshots$(_inst timeshift)" "$timeshift_state" \
"tmux" "Terminal multiplexer$(_inst tmux)" "$tmux_state" \
"ttf-mscorefonts-installer" "Microsoft fonts (Times, Arial)$(_inst ttf-mscorefonts-installer)" "$ttf_state" \
"fonts-ubuntu" "Ubuntu font family$(_inst fonts-ubuntu)" "$fonts_state" \
3>&1 1>&2 2>&3)
clear
@@ -205,44 +212,46 @@ _cat_general() {
}
_cat_dev() {
local build_state="OFF"; is_installed "build-essential" && build_state="ON"
local pip_state="OFF"; is_installed "python3-pip" && pip_state="ON"
local docker_state="OFF"; is_installed "docker.io" && docker_state="ON"
local apache_state="OFF"; is_installed "apache2" && apache_state="ON"
local nginx_state="OFF"; is_installed "nginx" && nginx_state="ON"
local mariadb_state="OFF"; is_installed "mariadb-server" && mariadb_state="ON"
local pg_state="OFF"; is_installed "postgresql" && pg_state="ON"
local sqlite_state="OFF"; is_installed "sqlite3" && sqlite_state="ON"
local redis_state="OFF"; is_installed "redis-server" && redis_state="ON"
local extrepo_state="OFF"; is_installed "extrepo" && extrepo_state="ON"
local props_state="OFF"; is_installed "software-properties-common" && props_state="ON"
local openssl_state="OFF"; is_installed "openssl" && openssl_state="ON"
local netcat_state="OFF"; is_installed "netcat-openbsd" && netcat_state="ON"
local build_state="OFF"; is_installed "build-essential" && build_state="ON"
local certbot_state="OFF"; is_installed "certbot" && certbot_state="ON"
local ufw_state="OFF"; is_installed "ufw" && ufw_state="ON"
local docker_state="OFF"; is_installed "docker.io" && docker_state="ON"
local extrepo_state="OFF"; is_installed "extrepo" && extrepo_state="ON"
local fail2ban_state="OFF"; is_installed "fail2ban" && fail2ban_state="ON"
local mariadb_state="OFF"; is_installed "mariadb-server" && mariadb_state="ON"
local netcat_state="OFF"; is_installed "netcat-openbsd" && netcat_state="ON"
local nginx_state="OFF"; is_installed "nginx" && nginx_state="ON"
local ssh_state="OFF"; is_installed "openssh-server" && ssh_state="ON"
local openssl_state="OFF"; is_installed "openssl" && openssl_state="ON"
local pg_state="OFF"; is_installed "postgresql" && pg_state="ON"
local pip_state="OFF"; is_installed "python3-pip" && pip_state="ON"
local redis_state="OFF"; is_installed "redis-server" && redis_state="ON"
local props_state="OFF"; is_installed "software-properties-common" && props_state="ON"
local sqlite_state="OFF"; is_installed "sqlite3" && sqlite_state="ON"
local ufw_state="OFF"; is_installed "ufw" && ufw_state="ON"
local zenmap_state="OFF"; is_installed "zenmap" && zenmap_state="ON"
local choices
choices=$(dialog --title "Development & Servers" --checklist \
"Select development tools and servers:" 26 72 17 \
"build-essential" "C/C++ build tools (gcc, make)$(_inst build-essential)" "$build_state" \
"python3-pip" "Python 3 pip + venv + dev$(_inst python3-pip)" "$pip_state" \
"docker" "Docker + docker-compose$(_inst docker.io)" "$docker_state" \
"Select development tools and servers:" 26 72 18 \
"apache2" "Apache web server$(_inst apache2)" "$apache_state" \
"nginx" "Nginx web server$(_inst nginx)" "$nginx_state" \
"mariadb-server" "MariaDB database server$(_inst mariadb-server)" "$mariadb_state" \
"postgresql" "PostgreSQL database server$(_inst postgresql)" "$pg_state" \
"sqlite3" "SQLite database engine$(_inst sqlite3)" "$sqlite_state" \
"redis-server" "Redis key-value store$(_inst redis-server)" "$redis_state" \
"extrepo" "External repository manager$(_inst extrepo)" "$extrepo_state" \
"software-properties-common" "Repository management (PPA)$(_inst software-properties-common)" "$props_state" \
"openssl" "OpenSSL cryptography toolkit$(_inst openssl)" "$openssl_state" \
"netcat-openbsd" "TCP/IP networking utility$(_inst netcat-openbsd)" "$netcat_state" \
"build-essential" "C/C++ build tools (gcc, make)$(_inst build-essential)" "$build_state" \
"certbot" "Let's Encrypt TLS certificates$(_inst certbot)" "$certbot_state" \
"ufw" "Uncomplicated firewall$(_inst ufw)" "$ufw_state" \
"docker" "Docker + docker-compose$(_inst docker.io)" "$docker_state" \
"extrepo" "External repository manager$(_inst extrepo)" "$extrepo_state" \
"fail2ban" "Brute-force protection$(_inst fail2ban)" "$fail2ban_state" \
"mariadb-server" "MariaDB database server$(_inst mariadb-server)" "$mariadb_state" \
"netcat-openbsd" "TCP/IP networking utility$(_inst netcat-openbsd)" "$netcat_state" \
"nginx" "Nginx web server$(_inst nginx)" "$nginx_state" \
"openssh-server" "SSH server$(_inst openssh-server)" "$ssh_state" \
"openssl" "OpenSSL cryptography toolkit$(_inst openssl)" "$openssl_state" \
"postgresql" "PostgreSQL database server$(_inst postgresql)" "$pg_state" \
"python3-pip" "Python 3 pip + venv + dev$(_inst python3-pip)" "$pip_state" \
"redis-server" "Redis key-value store$(_inst redis-server)" "$redis_state" \
"software-properties-common" "Repository management (PPA)$(_inst software-properties-common)" "$props_state" \
"sqlite3" "SQLite database engine$(_inst sqlite3)" "$sqlite_state" \
"ufw" "Uncomplicated firewall$(_inst ufw)" "$ufw_state" \
"zenmap" "Network scanner GUI (Nmap frontend)$(_inst zenmap)" "$zenmap_state" \
3>&1 1>&2 2>&3)
clear
@@ -275,6 +284,9 @@ _cat_dev() {
echo "Docker already installed."
fi
;;
zenmap)
install_backports_or_stable zenmap
;;
*)
if ! is_installed "$pkg"; then
sudo apt install -y "$pkg"
@@ -288,26 +300,71 @@ _cat_dev() {
echo -e "${GREEN}Development tools and servers installed.${NC}"
}
_cat_media() {
local vlc_state="OFF"; is_installed "vlc" && vlc_state="ON"
local mpv_state="OFF"; is_installed "mpv" && mpv_state="ON"
_cat_players() {
local handbrake_state="OFF"; is_installed "handbrake" && handbrake_state="ON"
local mpv_state="OFF"; is_installed "mpv" && mpv_state="ON"
local vlc_state="OFF"; is_installed "vlc" && vlc_state="ON"
local choices
choices=$(dialog --title "Media Players" --checklist \
"Select media players:" 12 72 3 \
"handbrake" "Video transcoder (DVD ripper)$(_inst handbrake)" "$handbrake_state" \
"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
local cleaned; cleaned=$(echo "$choices" | tr -d '"')
for pkg in $cleaned; do
if ! is_installed "$pkg"; then
sudo apt install -y "$pkg"
else
echo "$pkg already installed."
fi
done
echo -e "${GREEN}Media players installed.${NC}"
}
_cat_browsers() {
local chromium_state="OFF"; is_installed "chromium" && chromium_state="ON"
local thunderbird_state="OFF"; is_installed "thunderbird" && thunderbird_state="ON"
local dillo_state="OFF"; is_installed "dillo" && dillo_state="ON"
local elinks_state="OFF"; is_installed "elinks" && elinks_state="ON"
local epiphany_state="OFF"; is_installed "epiphany-browser" && epiphany_state="ON"
local falkon_state="OFF"; is_installed "falkon" && falkon_state="ON"
local firefox_state="OFF"
if command -v firefox &>/dev/null && ! command -v firefox-esr &>/dev/null; then
firefox_state="ON"
fi
local floorp_state="OFF"; is_installed "floorp" && floorp_state="ON"
local konqueror_state="OFF"; is_installed "konqueror" && konqueror_state="ON"
local librewolf_state="OFF"; is_installed "librewolf" && librewolf_state="ON"
local privacybrowser_state="OFF"; is_installed "privacybrowser" && privacybrowser_state="ON"
local qutebrowser_state="OFF"; is_installed "qutebrowser" && qutebrowser_state="ON"
local thunderbird_state="OFF"; is_installed "thunderbird" && thunderbird_state="ON"
local torbrowser_state="OFF"; is_installed "torbrowser-launcher" && torbrowser_state="ON"
local w3m_state="OFF"; is_installed "w3m" && w3m_state="ON"
local choices
choices=$(dialog --title "Media & Browsers" --checklist \
"Select media players and browsers:" 16 72 6 \
"vlc" "VLC media player$(_inst vlc)" "$vlc_state" \
"mpv" "Lightweight media player$(_inst mpv)" "$mpv_state" \
"chromium" "Chromium web browser$(_inst chromium)" "$chromium_state" \
"firefox" "Firefox from Mozilla (replaces ESR)" "$firefox_state" \
"thunderbird" "Email client$(_inst thunderbird)" "$thunderbird_state" \
"librewolf" "Privacy-focused Firefox fork$(_inst librewolf)" "$librewolf_state" \
choices=$(dialog --title "Web Browsers" --checklist \
"Select web browsers:" 24 72 14 \
"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" \
"epiphany-browser" "GNOME web browser$(_inst epiphany-browser)" "$epiphany_state" \
"falkon" "KDE web browser (QtWebEngine)$(_inst falkon)" "$falkon_state" \
"firefox" "Firefox from Mozilla (replaces ESR)" "$firefox_state" \
"floorp" "Firefox-based browser (external repo)" "$floorp_state" \
"konqueror" "KDE file manager / web browser$(_inst konqueror)" "$konqueror_state" \
"librewolf" "Privacy-focused Firefox fork$(_inst librewolf)" "$librewolf_state" \
"privacybrowser" "Privacy-focused web browser$(_inst privacybrowser)" "$privacybrowser_state" \
"qutebrowser" "Keyboard-driven browser (Qt)$(_inst qutebrowser)" "$qutebrowser_state" \
"thunderbird" "Email client$(_inst thunderbird)" "$thunderbird_state" \
"torbrowser-launcher" "Tor Browser launcher$(_inst torbrowser-launcher)" "$torbrowser_state" \
"w3m" "Text-mode browser + deps (w3m-img)$(_inst w3m)" "$w3m_state" \
3>&1 1>&2 2>&3)
clear
@@ -320,6 +377,28 @@ _cat_media() {
firefox)
install_firefox_mozilla
;;
floorp)
if ! is_installed "floorp"; then
echo "Setting up Floorp repository..."
! is_installed "curl" && sudo apt install -y curl
! is_installed "gpg" && sudo apt install -y gpg
sudo install -d -m 0755 /etc/apt/keyrings
curl -fsSL https://ppa.floorp.app/KEY.gpg | \
sudo gpg --dearmor -o /usr/share/keyrings/Floorp.gpg
sudo curl -sS --compressed -o /etc/apt/sources.list.d/Floorp.list \
'https://ppa.floorp.app/Floorp.list'
sudo tee /etc/apt/preferences.d/floorp > /dev/null << EOF
Package: *
Pin: origin ppa.floorp.app
Pin-Priority: 1000
EOF
sudo apt update
sudo apt install -y floorp
echo -e "${GREEN}Floorp installed.${NC}"
else
echo "Floorp already installed."
fi
;;
librewolf)
if ! is_installed "librewolf"; then
echo "Installing LibreWolf..."
@@ -332,6 +411,19 @@ _cat_media() {
echo "LibreWolf already installed."
fi
;;
w3m)
local need=()
! is_installed "w3m" && need+=("w3m")
! is_installed "w3m-img" && need+=("w3m-img")
! is_installed "ca-certificates" && need+=("ca-certificates")
! is_installed "xsel" && need+=("xsel")
if [ ${#need[@]} -gt 0 ]; then
echo "Installing w3m and dependencies..."
sudo apt install -y "${need[@]}"
else
echo "w3m already installed."
fi
;;
*)
if ! is_installed "$pkg"; then
sudo apt install -y "$pkg"
@@ -342,28 +434,28 @@ _cat_media() {
esac
done
echo -e "${GREEN}Media & browsers installed.${NC}"
echo -e "${GREEN}Web browsers installed.${NC}"
}
_cat_themes() {
local arc_state="OFF"; is_installed "arc-theme" && arc_state="ON"
local orchis_state="OFF"; is_installed "orchis-gtk-theme" && orchis_state="ON"
local numix_gtk_state="OFF"; is_installed "numix-gtk-theme" && numix_gtk_state="ON"
local breeze_gtk_state="OFF"; is_installed "breeze-gtk-theme" && breeze_gtk_state="ON"
local blackbird_state="OFF"; is_installed "blackbird-gtk-theme" && blackbird_state="ON"
local bluebird_state="OFF"; is_installed "bluebird-gtk-theme" && bluebird_state="ON"
local breeze_gtk_state="OFF"; is_installed "breeze-gtk-theme" && breeze_gtk_state="ON"
local greybird_state="OFF"; is_installed "greybird-gtk-theme" && greybird_state="ON"
local numix_gtk_state="OFF"; is_installed "numix-gtk-theme" && numix_gtk_state="ON"
local orchis_state="OFF"; is_installed "orchis-gtk-theme" && orchis_state="ON"
local choices
choices=$(dialog --title "GTK Themes" --checklist \
"Select GTK themes to install:" 16 72 7 \
"arc-theme" "Arc GTK theme$(_inst arc-theme)" "$arc_state" \
"orchis-gtk-theme" "Orchis GTK theme$(_inst orchis-gtk-theme)" "$orchis_state" \
"numix-gtk-theme" "Numix GTK theme$(_inst numix-gtk-theme)" "$numix_gtk_state" \
"breeze-gtk-theme" "Breeze GTK theme$(_inst breeze-gtk-theme)" "$breeze_gtk_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" \
"breeze-gtk-theme" "Breeze GTK theme$(_inst breeze-gtk-theme)" "$breeze_gtk_state" \
"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
@@ -383,17 +475,17 @@ _cat_themes() {
}
_cat_icons() {
local papirus_state="OFF"; is_installed "papirus-icon-theme" && papirus_state="ON"
local numix_state="OFF"; is_installed "numix-icon-theme" && numix_state="ON"
local numix_c_state="OFF"; is_installed "numix-icon-theme-circle" && numix_c_state="ON"
local breeze_state="OFF"; is_installed "breeze-icon-theme" && breeze_state="ON"
local deepin_state="OFF"; is_installed "deepin-icon-theme" && deepin_state="ON"
local ele_state="OFF"; is_installed "elementary-icon-theme" && ele_state="ON"
local ele_xfce_state="OFF"; is_installed "elementary-xfce-icon-theme" && ele_xfce_state="ON"
local moka_state="OFF"; is_installed "moka-icon-theme" && moka_state="ON"
local numix_state="OFF"; is_installed "numix-icon-theme" && numix_state="ON"
local numix_c_state="OFF"; is_installed "numix-icon-theme-circle" && numix_c_state="ON"
local obsidian_state="OFF"; is_installed "obsidian-icon-theme" && obsidian_state="ON"
local papirus_state="OFF"; is_installed "papirus-icon-theme" && papirus_state="ON"
local paper_state="OFF"; is_installed "paper-icon-theme" && paper_state="ON"
local suru_state="OFF"; is_installed "suru-icon-theme" && suru_state="ON"
local obsidian_state="OFF"; is_installed "obsidian-icon-theme" && obsidian_state="ON"
local kf6_state="OFF"
local has_kf6=false
@@ -403,24 +495,24 @@ _cat_icons() {
fi
local height=18
local list_height=12
local list_height=11
local items=(
"papirus-icon-theme" "Papirus icon theme$(_inst papirus-icon-theme)" "$papirus_state"
"numix-icon-theme" "Numix icon theme$(_inst numix-icon-theme)" "$numix_state"
"numix-icon-theme-circle" "Numix Circle icon theme$(_inst numix-icon-theme-circle)" "$numix_c_state"
"breeze-icon-theme" "Breeze icon theme$(_inst breeze-icon-theme)" "$breeze_state"
"deepin-icon-theme" "Deepin icon theme$(_inst deepin-icon-theme)" "$deepin_state"
"elementary-icon-theme" "Elementary icon theme$(_inst elementary-icon-theme)" "$ele_state"
"elementary-xfce-icon-theme" "Elementary Xfce icons$(_inst elementary-xfce-icon-theme)" "$ele_xfce_state"
"moka-icon-theme" "Moka icon theme$(_inst moka-icon-theme)" "$moka_state"
"numix-icon-theme" "Numix icon theme$(_inst numix-icon-theme)" "$numix_state"
"numix-icon-theme-circle" "Numix Circle icon theme$(_inst numix-icon-theme-circle)" "$numix_c_state"
"obsidian-icon-theme" "Obsidian icon theme$(_inst obsidian-icon-theme)" "$obsidian_state"
"papirus-icon-theme" "Papirus icon theme$(_inst papirus-icon-theme)" "$papirus_state"
"paper-icon-theme" "Paper icon theme$(_inst paper-icon-theme)" "$paper_state"
"suru-icon-theme" "Suru icon theme$(_inst suru-icon-theme)" "$suru_state"
"obsidian-icon-theme" "Obsidian icon theme$(_inst obsidian-icon-theme)" "$obsidian_state"
)
if $has_kf6; then
items+=("kf6-breeze-icon-theme" "KF6 Breeze icon theme$(_inst kf6-breeze-icon-theme)" "$kf6_state")
height=20
list_height=13
list_height=12
fi
local choices
@@ -454,23 +546,34 @@ _cat_fetch() {
fi
local fetch_state="OFF"; is_installed "$fetch_pkg" && fetch_state="ON"
local screenfetch_state="OFF"; is_installed "screenfetch" && screenfetch_state="ON"
local linuxlogo_state="OFF"; is_installed "linuxlogo" && linuxlogo_state="ON"
local screenfetch_state="OFF"; is_installed "screenfetch" && screenfetch_state="ON"
local items=(
"${fetch_pkg}" "System info fetcher$(_inst $fetch_pkg)" "$fetch_state"
"screenfetch" "System info (BSD/Linux)$(_inst screenfetch)" "$screenfetch_state"
"linuxlogo" "Linux logo + system info$(_inst linuxlogo)" "$linuxlogo_state"
)
local hyfetch_state="OFF"
if [ "$DEBIAN_CODENAME" = "trixie" ]; then
is_installed "hyfetch" && hyfetch_state="ON"
fi
local items=()
local height=14
local list_height=3
if [ "$DEBIAN_CODENAME" = "trixie" ]; then
local hyfetch_state="OFF"; is_installed "hyfetch" && hyfetch_state="ON"
items+=("hyfetch" "Neofetch with pride flags$(_inst hyfetch)" "$hyfetch_state")
height=16
list_height=4
if [ "$fetch_pkg" = "fastfetch" ]; then
items+=("fastfetch" "System info fetcher$(_inst fastfetch)" "$fetch_state")
if [ "$DEBIAN_CODENAME" = "trixie" ]; then
items+=("hyfetch" "Neofetch with pride flags$(_inst hyfetch)" "$hyfetch_state")
height=16; list_height=4
fi
fi
items+=("linuxlogo" "Linux logo + system info$(_inst linuxlogo)" "$linuxlogo_state")
if [ "$fetch_pkg" = "neofetch" ]; then
items+=("neofetch" "System info fetcher$(_inst neofetch)" "$fetch_state")
if [ "$DEBIAN_CODENAME" = "trixie" ]; then
items+=("hyfetch" "Neofetch with pride flags$(_inst hyfetch)" "$hyfetch_state")
height=16; list_height=4
fi
fi
items+=("screenfetch" "System info (BSD/Linux)$(_inst screenfetch)" "$screenfetch_state")
local choices
choices=$(dialog --title "Fetch Tools" --checklist \
@@ -505,6 +608,126 @@ _cat_fetch() {
echo -e "${GREEN}Fetch tools installed.${NC}"
}
_cat_download() {
local aria2_state="OFF"; is_installed "aria2" && aria2_state="ON"
local filezilla_state="OFF"; is_installed "filezilla" && filezilla_state="ON"
local riseupvpn_state="OFF"; is_installed "riseup-vpn" && riseupvpn_state="ON"
local ytdlp_state="OFF"; is_installed "yt-dlp" && ytdlp_state="ON"
local ytdlp_gui_state="OFF"; is_installed "youtubedl-gui" && ytdlp_gui_state="ON"
local deluge_state="OFF"; is_installed "deluge" && deluge_state="ON"
local deluged_state="OFF"; is_installed "deluged" && deluged_state="ON"
local mktorrent_state="OFF"; is_installed "mktorrent" && mktorrent_state="ON"
local qbit_state="OFF"; is_installed "qbittorrent" && qbit_state="ON"
local qbitnox_state="OFF"; is_installed "qbittorrent-nox" && qbitnox_state="ON"
local tr_cli_state="OFF"; is_installed "transmission-cli" && tr_cli_state="ON"
local tr_gtk_state="OFF"; is_installed "transmission-gtk" && tr_gtk_state="ON"
local tr_qt_state="OFF"; is_installed "transmission-qt" && tr_qt_state="ON"
local choices1 choices2=""
choices1=$(dialog --title "Download & Network — Downloaders" --checklist \
"Select download tools:" 16 72 5 \
"aria2" "Multiprotocol downloader (CLI)$(_inst aria2)" "$aria2_state" \
"filezilla" "FTP/SFTP client (GUI)$(_inst filezilla)" "$filezilla_state" \
"riseup-vpn" "Riseup VPN client$(_inst riseup-vpn)" "$riseupvpn_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=$(dialog --title "Download & Network — Torrent Clients" --checklist \
"Select torrent clients:" 18 72 8 \
"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" \
"qbittorrent" "BitTorrent client (Qt)$(_inst qbittorrent)" "$qbit_state" \
"qbittorrent-nox" "BitTorrent WebUI/CLI$(_inst qbittorrent-nox)" "$qbitnox_state" \
"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
cleaned=$(echo "$choices1 $choices2" | tr -d '"')
[ -z "$cleaned" ] && { echo "No download tools selected."; return; }
for pkg in $cleaned; do
case $pkg in
riseup-vpn)
install_backports_or_stable riseup-vpn
;;
yt-dlp)
install_backports_or_stable yt-dlp
;;
qbittorrent)
install_backports_or_stable qbittorrent
;;
qbittorrent-nox)
install_backports_or_stable qbittorrent-nox
;;
*)
if ! is_installed "$pkg"; then
sudo apt install -y "$pkg"
else
echo "$pkg already installed."
fi
;;
esac
done
echo -e "${GREEN}Download & network tools installed.${NC}"
}
_cat_design() {
local audacity_state="OFF"; is_installed "audacity" && audacity_state="ON"
local ardour_state="OFF"; is_installed "ardour" && ardour_state="ON"
local blender_state="OFF"; is_installed "blender" && blender_state="ON"
local ffmpeg_state="OFF"; is_installed "ffmpeg" && ffmpeg_state="ON"
local gimp_state="OFF"; is_installed "gimp" && gimp_state="ON"
local inkscape_state="OFF"; is_installed "inkscape" && inkscape_state="ON"
local kdenlive_state="OFF"; is_installed "kdenlive" && kdenlive_state="ON"
local krita_state="OFF"; is_installed "krita" && krita_state="ON"
local obs_state="OFF"; is_installed "obs-studio" && obs_state="ON"
local openshot_state="OFF"; is_installed "openshot-qt" && openshot_state="ON"
local scribus_state="OFF"; is_installed "scribus" && scribus_state="ON"
local shotcut_state="OFF"; is_installed "shotcut" && shotcut_state="ON"
local choices
choices=$(dialog --title "Multimedia & Design" --checklist \
"Select multimedia and design tools:" 20 72 12 \
"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" \
"ffmpeg" "Multimedia framework (CLI)$(_inst ffmpeg)" "$ffmpeg_state" \
"gimp" "Image editor (Photoshop alternative)$(_inst gimp)" "$gimp_state" \
"inkscape" "Vector graphics editor$(_inst inkscape)" "$inkscape_state" \
"kdenlive" "Video editor (KDE)$(_inst kdenlive)" "$kdenlive_state" \
"krita" "Digital painting/illustration$(_inst krita)" "$krita_state" \
"obs-studio" "Screen recording/streaming$(_inst obs-studio)" "$obs_state" \
"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
local cleaned; cleaned=$(echo "$choices" | tr -d '"')
for pkg in $cleaned; do
if ! is_installed "$pkg"; then
sudo apt install -y "$pkg"
else
echo "$pkg already installed."
fi
done
echo -e "${GREEN}Multimedia & design tools installed.${NC}"
}
install_firefox_mozilla() {
if command -v firefox &>/dev/null && ! command -v firefox-esr &>/dev/null; then
echo "Firefox (Mozilla) is already installed."