mirror of
https://github.com/stornic56/debianito-post-install.git
synced 2026-09-14 06:02:35 +00:00
System Refactor, GPU & Terminal Overhaul
- Bug Fixes: Rewrote `install_gaming_bullseye()` in `modules/bullseye/legacy.sh` to use a unified `_checklist` flow (matching Debian 12/13) with automatic i386 architecture detection and driver installation. Fixed greetd "Back" menu crash on Debian 11 by adding version-specific conditional logic in `desktop_display.sh`. Corrected ZRAM text overflow in `zram.sh` using `\n` line breaks for terminal wrapping. Updated Kernel Backports warning message in `debianito.sh` to clarify Bullseye limitations. - Architecture & Repositories: Refactored Debian 11 repository configuration (`configure_repos_bullseye`) to reuse modern submenus (`_repos_enable_components`, `_branch_migration`), eliminating ~44 lines of hardcoded logic and duplicate source list management. Restricted `non-free-firmware` component availability to Debian 12+ in `modules/repos.sh`. Implemented mandatory `apt autoremove -y` and `apt autoclean` execution immediately after enabling non-free/contrib components (`_repos_enable_components`). - UI & Menus: Added a new "Communication" menu (Option 4) between Internet and Media Players, featuring Signal, Telegram (with Trixie backports warning), and Hexchat. Moved all terminal emulators from System Tools to the "Customization System" -> Terminals submenu (`modules/extras/terminals/terminals.sh`) with version-specific logic (Alacritty 12+, Blackbox/Ptyxis 13+). Added Joplin installer in Office & Productivity for Debian 12/13 only. Integrated Synaptic into Software Centers menu alongside GNOME and Plasma stores. Unified Essential Pack UI across versions, switching between `fastfetch` (Trixie) and `neofetch` (Bookworm/Bullseye). - Hardware Drivers: Replaced deprecated `install_gpu_drivers()` in `modules/gpu.sh` with `_install_amd_intel_stack()` and `_install_nvidia_stack()`. Implemented specific logic for Debian 13 (Trixie): Blackwell GPUs now enable the official NVIDIA CUDA repository; Maxwell/Pascal on Backports forces a stable kernel path to ensure driver compatibility. Deprecated `install_nvidia_driver()` in favor of new stack functions while preserving global state variables (`NVIDIA_DRIVER_MODE`). - Utilities & Cleanup: Added `gdebi` and `bleachbit` to System Tools (GUI-only). Standardized menu headers across 15 files using a centralized `SCROLL_HINT` variable. Ensured VLC installation is conditional on headless status checks in Essential Pack modules.
This commit is contained in:
@@ -0,0 +1,86 @@
|
||||
#!/usr/bin/env bash
|
||||
# communication.sh — Signal, Telegram, HexChat
|
||||
|
||||
_install_signal() {
|
||||
_ensure_extrepo
|
||||
if [ ! -f /etc/apt/sources.list.d/extrepo_signal.sources ]; then
|
||||
_run_cmd "Signal" "sudo extrepo enable signal" "Enabling Signal repository..."
|
||||
fi
|
||||
_run_cmd "APT Update" "sudo apt update" "Updating package lists..."
|
||||
if ! is_installed "signal-desktop"; then
|
||||
_run_cmd "Signal" "sudo apt install -y signal-desktop" "Installing Signal..."
|
||||
echo -e "${GREEN}Signal installed.${NC}"
|
||||
else
|
||||
echo "Signal already installed."
|
||||
fi
|
||||
}
|
||||
|
||||
_install_telegram() {
|
||||
if [ "$DEBIAN_VERSION" = "13" ]; then
|
||||
if ! is_backports_enabled; then
|
||||
_msg "telegram-desktop" \
|
||||
"telegram-desktop is only available in Trixie-backports.\n\n\
|
||||
Please enable backports first via:\n Main Menu → 3 Configure Repositories" 12 65
|
||||
echo -e "${YELLOW}Skipping telegram-desktop.${NC}"
|
||||
return
|
||||
fi
|
||||
if ! is_installed "telegram-desktop"; then
|
||||
_run_cmd "Telegram" "sudo apt install -y -t ${DEBIAN_CODENAME}-backports telegram-desktop" \
|
||||
"Installing telegram-desktop from backports..."
|
||||
echo -e "${GREEN}telegram-desktop installed.${NC}"
|
||||
else
|
||||
echo "telegram-desktop already installed."
|
||||
fi
|
||||
else
|
||||
if ! is_installed "telegram-desktop"; then
|
||||
_run_install "telegram-desktop"
|
||||
echo -e "${GREEN}telegram-desktop installed.${NC}"
|
||||
else
|
||||
echo "telegram-desktop already installed."
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
_cat_communication() {
|
||||
local headless=false
|
||||
_is_headless && headless=true
|
||||
if $headless; then
|
||||
echo "Communication apps require a GUI — skipping."
|
||||
return
|
||||
fi
|
||||
|
||||
local -a items=()
|
||||
local signal_state; signal_state=$(_state "signal-desktop")
|
||||
local telegram_state; telegram_state=$(_state "telegram-desktop")
|
||||
local hexchat_state; hexchat_state=$(_state "hexchat")
|
||||
items+=(
|
||||
"signal-desktop" "Signal Private Messenger (extrepo)" "$signal_state"
|
||||
"telegram-desktop" "Telegram Desktop messaging" "$telegram_state"
|
||||
"hexchat" "IRC client (HexChat)" "$hexchat_state"
|
||||
)
|
||||
|
||||
local item_count=${#items[@]}
|
||||
local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count))
|
||||
local choices
|
||||
choices=$(_checklist "Communication" "Select communication apps${SCROLL_HINT}:" \
|
||||
$TUI_ALTO $TUI_ANCHO $lista_alto "${items[@]}")
|
||||
clear
|
||||
[ -z "$choices" ] && return
|
||||
|
||||
local cleaned; cleaned=$(echo "$choices" | tr -d '"')
|
||||
for pkg in $cleaned; do
|
||||
case $pkg in
|
||||
signal-desktop) _install_signal ;;
|
||||
telegram-desktop) _install_telegram ;;
|
||||
hexchat)
|
||||
if ! is_installed "hexchat"; then
|
||||
_run_install "hexchat"
|
||||
echo -e "${GREEN}hexchat installed.${NC}"
|
||||
else
|
||||
echo "hexchat already installed."
|
||||
fi
|
||||
;;
|
||||
esac
|
||||
done
|
||||
echo -e "${GREEN}Communication tools installed.${NC}"
|
||||
}
|
||||
@@ -3,18 +3,27 @@
|
||||
|
||||
_quick_install() {
|
||||
local fetch_pkg
|
||||
if [ "$DEBIAN_CODENAME" = "bookworm" ]; then
|
||||
fetch_pkg="neofetch"
|
||||
else
|
||||
if [ "$DEBIAN_CODENAME" = "trixie" ]; then
|
||||
fetch_pkg="fastfetch"
|
||||
else
|
||||
fetch_pkg="neofetch"
|
||||
fi
|
||||
|
||||
local comp_pkgs
|
||||
if [ "$DEBIAN_CODENAME" = "trixie" ]; then
|
||||
comp_pkgs="7zip 7zip-rar"
|
||||
else
|
||||
comp_pkgs="p7zip-full p7zip-rar"
|
||||
fi
|
||||
|
||||
_msg "Essential Pack" \
|
||||
"Install basic programs:\n\n - Compression (zip, unrar, 7z)\n - System tools (htop, inxi, ${fetch_pkg}, $(_is_headless || echo "VLC"))\n - Microsoft fonts" 13 60
|
||||
"Install basic programs:\n\n - Compression (zip, unrar, 7z)\n - System tools (htop, inxi, ${fetch_pkg})\n - Networking (curl, wget, ufw)\n - CA certs & GPG\n - VLC media player" 13 60
|
||||
|
||||
local quick_pkgs=(
|
||||
zip unzip rar unrar p7zip-full p7zip-rar
|
||||
"$fetch_pkg" htop inxi ttf-mscorefonts-installer
|
||||
zip unzip rar unrar
|
||||
$comp_pkgs
|
||||
"$fetch_pkg" htop inxi curl wget ufw
|
||||
ca-certificates gnupg lsb-release
|
||||
)
|
||||
_is_headless || quick_pkgs+=(vlc)
|
||||
_run_install_batch "${quick_pkgs[@]}"
|
||||
|
||||
@@ -26,6 +26,25 @@ Version: ${ver:-unknown}"; then
|
||||
fi
|
||||
}
|
||||
|
||||
# ── Joplin (extrepo, solo Debian 12+) ──
|
||||
install_joplin() {
|
||||
if [ "$DEBIAN_VERSION" != "12" ] && [ "$DEBIAN_VERSION" != "13" ]; then
|
||||
_msg "Joplin" "Joplin via extrepo is only available on\nDebian 12 (Bookworm) and 13 (Trixie)." 10 60
|
||||
return 1
|
||||
fi
|
||||
_ensure_extrepo
|
||||
if [ ! -f /etc/apt/sources.list.d/extrepo_joplin.sources ]; then
|
||||
_run_cmd "Joplin" "sudo extrepo enable joplin" "Enabling Joplin repository..."
|
||||
fi
|
||||
_run_cmd "APT Update" "sudo apt update" "Updating package lists..."
|
||||
if ! is_installed "joplin"; then
|
||||
_run_cmd "Joplin" "sudo apt install -y joplin" "Installing Joplin..."
|
||||
echo -e "${GREEN}Joplin installed.${NC}"
|
||||
else
|
||||
echo "Joplin already installed."
|
||||
fi
|
||||
}
|
||||
|
||||
# ── LibreOffice (backports) ──
|
||||
install_libreoffice_bpo() {
|
||||
if [ "$DEBIAN_VERSION" != "12" ] && [ "$DEBIAN_VERSION" != "13" ]; then
|
||||
@@ -68,6 +87,11 @@ _cat_office() {
|
||||
"onlyoffice" "OnlyOffice Desktop Editors (extrepo)" OFF
|
||||
"libreoffice" "LibreOffice (backports on Bookworm/Trixie)" OFF
|
||||
)
|
||||
if [ "$DEBIAN_VERSION" = "12" ] || [ "$DEBIAN_VERSION" = "13" ]; then
|
||||
items+=(
|
||||
"joplin" "Joplin note-taking (extrepo)" OFF
|
||||
)
|
||||
fi
|
||||
fi
|
||||
|
||||
local item_count=${#items[@]}
|
||||
@@ -84,6 +108,7 @@ _cat_office() {
|
||||
case $pkg in
|
||||
onlyoffice) install_onlyoffice ;;
|
||||
libreoffice) install_libreoffice_bpo ;;
|
||||
joplin) install_joplin ;;
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
@@ -10,12 +10,19 @@ _cat_software_centers() {
|
||||
local de_type
|
||||
de_type=$(_detect_desktop_type)
|
||||
local sc_choice
|
||||
sc_choice=$(_menu "Software Centers" "Choose a software store to install:" 12 65 2 \
|
||||
sc_choice=$(_menu "Software Centers" "Choose a software store to install:" 12 65 3 \
|
||||
"gnome-software" "Software Center for GNOME" \
|
||||
"plasma-discover" "Software manager for Plasma" \
|
||||
"synaptic" "Classic APT package manager (GTK)" \
|
||||
)
|
||||
[ -z "$sc_choice" ] && return
|
||||
|
||||
if [ "$sc_choice" = "synaptic" ]; then
|
||||
_run_cmd "Install" "sudo apt install -y synaptic" "Installing synaptic..."
|
||||
echo -e "${GREEN}synaptic installed.${NC}"
|
||||
return
|
||||
fi
|
||||
|
||||
if { [ "$de_type" = "qt" ] && [ "$sc_choice" = "gnome-software" ]; } || \
|
||||
{ [ "$de_type" = "gtk" ] && [ "$sc_choice" = "plasma-discover" ]; }; then
|
||||
_msg "Warning" "Warning: This store requires extra background libraries \
|
||||
|
||||
@@ -40,6 +40,7 @@ _cat_general() {
|
||||
local fwupd_state; fwupd_state=$(_state "fwupd")
|
||||
local htop_state; htop_state=$(_state "htop")
|
||||
local inxi_state; inxi_state=$(_state "inxi")
|
||||
local jq_state; jq_state=$(_state "jq")
|
||||
local kvm_state; kvm_state=$(_state "virt-manager")
|
||||
local lshw_state; lshw_state=$(_state "lshw")
|
||||
local mc_state; mc_state=$(_state "mc")
|
||||
@@ -59,6 +60,7 @@ _cat_general() {
|
||||
"fwupd" "Firmware update daemon" "$fwupd_state"
|
||||
"htop" "Interactive process viewer" "$htop_state"
|
||||
"inxi" "System information tool" "$inxi_state"
|
||||
"jq" "JSON command-line processor" "$jq_state"
|
||||
"kvm" "QEMU/KVM virtualization" "$kvm_state"
|
||||
"lshw" "List hardware details" "$lshw_state"
|
||||
"mc" "Midnight Commander (file manager)" "$mc_state"
|
||||
@@ -69,27 +71,27 @@ _cat_general() {
|
||||
"wine" "Windows compatibility layer" "$wine_state"
|
||||
)
|
||||
if ! $headless; then
|
||||
local alacritty_state; alacritty_state=$(_state "alacritty")
|
||||
local bleachbit_state; bleachbit_state=$(_state "bleachbit")
|
||||
local conky_state; conky_state=$(_state "conky")
|
||||
local gdebi_state; gdebi_state=$(_state "gdebi")
|
||||
local corectrl_state; corectrl_state=$(_state "corectrl")
|
||||
local dcgtk_state; dcgtk_state=$(_state "doublecmd-gtk")
|
||||
local dcqt_state; dcqt_state=$(_state "doublecmd-qt")
|
||||
local disks_state; disks_state=$(_state "gnome-disk-utility")
|
||||
local gparted_state; gparted_state=$(_state "gparted")
|
||||
local hardinfo_state; hardinfo_state=$(_state "hardinfo")
|
||||
local kitty_state; kitty_state=$(_state "kitty")
|
||||
local psensor_state; psensor_state=$(_state "psensor")
|
||||
local timeshift_state; timeshift_state=$(_state "timeshift")
|
||||
items+=(
|
||||
"alacritty" "GPU-accelerated terminal" "$alacritty_state"
|
||||
"bleachbit" "System cleaner (GUI)" "$bleachbit_state"
|
||||
"conky" "System monitor for desktop" "$conky_state"
|
||||
"gdebi" "Install .deb packages with deps" "$gdebi_state"
|
||||
"corectrl" "AMD GPU control (CoreCtrl)" "$corectrl_state"
|
||||
"doublecmd-gtk" "Dual-panel file manager (GTK)" "$dcgtk_state"
|
||||
"doublecmd-qt" "Dual-panel file manager (Qt)" "$dcqt_state"
|
||||
"gnome-disk-utility" "Disk management GUI" "$disks_state"
|
||||
"gparted" "GNOME partition editor" "$gparted_state"
|
||||
"hardinfo" "Graphical system profiler" "$hardinfo_state"
|
||||
"kitty" "GPU-based terminal emulator" "$kitty_state"
|
||||
"psensor" "Hardware temperature monitor" "$psensor_state"
|
||||
"timeshift" "System restore snapshots" "$timeshift_state"
|
||||
)
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
#!/usr/bin/env bash
|
||||
# terminals.sh — Terminal emulators
|
||||
|
||||
_cat_terminals() {
|
||||
local headless=false
|
||||
_is_headless && headless=true
|
||||
if $headless; then
|
||||
echo "Terminals require a GUI — skipping."
|
||||
return
|
||||
fi
|
||||
|
||||
local -a items=()
|
||||
for t in kitty deepin-terminal gnome-terminal lxterminal mate-terminal \
|
||||
qterminal xfce4-terminal konsole terminator guake cool-retro-term \
|
||||
tilix yakuake terminology rxvt-unicode xterm; do
|
||||
items+=("$t" "" "$(_state "$t")")
|
||||
done
|
||||
|
||||
if [ "$DEBIAN_VERSION" = "12" ] || [ "$DEBIAN_VERSION" = "13" ]; then
|
||||
items+=("alacritty" "" "$(_state alacritty)")
|
||||
fi
|
||||
if [ "$DEBIAN_VERSION" = "13" ]; then
|
||||
items+=("blackbox-terminal" "" "$(_state blackbox-terminal)")
|
||||
items+=("ptyxis" "" "$(_state ptyxis)")
|
||||
fi
|
||||
|
||||
local item_count=${#items[@]}
|
||||
local lista_alto=$((item_count > TUI_ALTO_LISTA ? TUI_ALTO_LISTA : item_count))
|
||||
local choices
|
||||
choices=$(_checklist "Terminals" "Select terminal emulators${SCROLL_HINT}:" \
|
||||
$TUI_ALTO $TUI_ANCHO $lista_alto "${items[@]}")
|
||||
clear
|
||||
[ -z "$choices" ] && return
|
||||
|
||||
for pkg in $(echo "$choices" | tr -d '"'); do
|
||||
if ! is_installed "$pkg"; then
|
||||
_run_install "$pkg"
|
||||
else
|
||||
echo "$pkg already installed."
|
||||
fi
|
||||
done
|
||||
echo -e "${GREEN}Terminals installed.${NC}"
|
||||
}
|
||||
@@ -8,6 +8,7 @@ _cat_customization() {
|
||||
"2" "Icon Themes" \
|
||||
"3" "Cursor Themes" \
|
||||
"4" "Fonts" \
|
||||
"5" "Terminals" \
|
||||
)
|
||||
[ -z "$sub" ] && return
|
||||
case $sub in
|
||||
@@ -15,5 +16,6 @@ _cat_customization() {
|
||||
2) _cat_icons ;;
|
||||
3) _cat_cursors ;;
|
||||
4) _cat_fonts ;;
|
||||
5) _cat_terminals ;;
|
||||
esac
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user