Firefox bug fix & LXDE desktop option

- Resolved Firefox installation conflict: the "both" selection no longer triggers duplicate dialogs or cancellation; the installer now passes the resolved choice to both Mozilla and ESR installers, preserving co-installation without redundant prompts.
- Fixed bugs across Debian 11/12/13 scripts:
- Migrated `migrate.sh` to write classic `.sources` format for Debian 11 and skip the security stanza for SID.
- Corrected non-free token matching in `firmware.sh` to avoid false positives on non-free-firmware-only systems.
- Added `sudo` to `broadcom-combo.conf` creation and fixed `/etc/modprobe.d` directory handling.
- Fixed write propagation in `repos.sh` to prevent silent failures on user rejection.
- Corrected PipeWire state detection for Debian 11 and added SID security stanza exclusion.
- Added LXDE desktop environment option to `debianito.sh`:
- New "LXDE (Full)" and "LXDE Core" options in the Desktop Environment menu.
- Both options install `lightdm` in a single `apt-get install` call and enable the service via `systemctl enable`.
- Includes debconf preseed for LightDM default display manager selection.
- No extra packages, no Openbox/LXDE configuration changes.
- Added `_radiolist()` helper to `utils.sh` for safe radio-list cancellation under `set -e`.
- Added `lxde_menu()` to `desktop_display.sh` with exact 2-option radio list, single-shot dispatch, and clean `return 0` on cancel.
- Added `_install_lxde_full()` and `_install_lxde_core()` with `debconf-set-selections`, single `apt` call, and `systemctl enable lightdm` post-install.
This commit is contained in:
stornic56
2026-08-19 00:18:41 -05:00
committed by GitHub
parent 0e24e8f9ae
commit 9230cda5dd
7 changed files with 204 additions and 64 deletions
+37 -3
View File
@@ -22,8 +22,9 @@ desktop_environment_menu() {
while true; do while true; do
local -a env_items=() local -a env_items=()
env_items+=("1" "XFCE") env_items+=("1" "XFCE")
env_items+=("2" "Back") env_items+=("2" "LXDE")
# Future desktop environments: add "2" "GNOME", "3" "KDE", ... here env_items+=("3" "Back")
# Future desktop environments: add "3" "GNOME", "4" "KDE", ... here
# and a matching case below calling its own menu (e.g. gnome_menu). # and a matching case below calling its own menu (e.g. gnome_menu).
local choice local choice
choice=$(_menu "Desktop Environment" \ choice=$(_menu "Desktop Environment" \
@@ -33,11 +34,44 @@ desktop_environment_menu() {
clear clear
case "$choice" in case "$choice" in
1) xfce_menu ;; 1) xfce_menu ;;
2) break ;; 2) lxde_menu ;;
3) break ;;
esac esac
done done
} }
lxde_menu() {
local choice
choice=$(_radiolist "LXDE" \
"Select an option:" $TUI_ALTO $TUI_ANCHO $TUI_ALTO_LISTA \
"1" "LXDE (Escritorio completo)" OFF \
"2" "LXDE Core (Instalación mínima)" OFF)
[ -z "$choice" ] && return 0
clear
case "$(echo "$choice" | tr -d '"')" in
1) _install_lxde_full ;;
2) _install_lxde_core ;;
esac
}
_install_lxde_full() {
echo -e "${GREEN}Installing LXDE (Full) + LightDM...${NC}"
echo "lightdm shared/default-x-display-manager select lightdm" | sudo debconf-set-selections
_run_cmd "LXDE Full" "sudo apt install -y lxde lightdm" \
"Installing LXDE (Full Meta Package) + LightDM..."
sudo systemctl enable lightdm
echo -e "${GREEN}LXDE installed. LightDM enabled.${NC}"
}
_install_lxde_core() {
echo -e "${GREEN}Installing LXDE Core + LightDM...${NC}"
echo "lightdm shared/default-x-display-manager select lightdm" | sudo debconf-set-selections
_run_cmd "LXDE Core" "sudo apt install -y lxde-core lightdm" \
"Installing LXDE Core (Minimal) + LightDM..."
sudo systemctl enable lightdm
echo -e "${GREEN}LXDE Core installed. LightDM enabled.${NC}"
}
xfce_menu() { xfce_menu() {
while true; do while true; do
local -a xf_items=() local -a xf_items=()
+27 -3
View File
@@ -185,13 +185,13 @@ _cat_internet() {
local has_firefox=false local has_firefox=false
local has_firefox_esr=false local has_firefox_esr=false
local fchoice=""
for _p in $cleaned; do for _p in $cleaned; do
[ "$_p" = "firefox" ] && has_firefox=true [ "$_p" = "firefox" ] && has_firefox=true
[ "$_p" = "firefox-esr" ] && has_firefox_esr=true [ "$_p" = "firefox-esr" ] && has_firefox_esr=true
done done
if $has_firefox && $has_firefox_esr; then if $has_firefox && $has_firefox_esr; then
local fchoice
fchoice=$(_menu "Firefox" "You selected both Firefox (Mozilla) and Firefox ESR.\nWhat do you want to do?" 12 60 3 \ fchoice=$(_menu "Firefox" "You selected both Firefox (Mozilla) and Firefox ESR.\nWhat do you want to do?" 12 60 3 \
"mozilla" "Remove Firefox ESR — keep Firefox" \ "mozilla" "Remove Firefox ESR — keep Firefox" \
"esr" "Remove Firefox — keep Firefox ESR" \ "esr" "Remove Firefox — keep Firefox ESR" \
@@ -206,10 +206,10 @@ _cat_internet() {
for pkg in $cleaned; do for pkg in $cleaned; do
case $pkg in case $pkg in
firefox) firefox)
install_firefox_mozilla install_firefox_mozilla "$fchoice"
;; ;;
firefox-esr) firefox-esr)
install_firefox_esr install_firefox_esr "$fchoice"
;; ;;
floorp) floorp)
_enable_floorp_repo _enable_floorp_repo
@@ -271,6 +271,7 @@ _cat_internet() {
} }
install_firefox_mozilla() { install_firefox_mozilla() {
local fchoice="${1:-}"
if [ "$DEBIAN_VERSION" -lt 12 ] 2>/dev/null; then if [ "$DEBIAN_VERSION" -lt 12 ] 2>/dev/null; then
_msg "Firefox" "Mozilla Firefox is only available on\nDebian 12 (Bookworm) and 13 (Trixie).\n\nSkipping installation." 10 60 _msg "Firefox" "Mozilla Firefox is only available on\nDebian 12 (Bookworm) and 13 (Trixie).\n\nSkipping installation." 10 60
return 1 return 1
@@ -282,6 +283,15 @@ install_firefox_mozilla() {
fi fi
if is_installed "firefox-esr"; then if is_installed "firefox-esr"; then
case "$fchoice" in
both)
echo -e "${CYAN}[INFO] Keeping Firefox ESR (both selected).${NC}"
;;
mozilla)
echo "Removing Firefox ESR (as selected)..."
sudo apt remove -y firefox-esr
;;
*)
if _confirm "Firefox ESR" "Firefox ESR is installed.\nRemove it before installing Mozilla Firefox?"; then if _confirm "Firefox ESR" "Firefox ESR is installed.\nRemove it before installing Mozilla Firefox?"; then
echo "Removing Firefox ESR..." echo "Removing Firefox ESR..."
sudo apt remove -y firefox-esr sudo apt remove -y firefox-esr
@@ -289,6 +299,8 @@ install_firefox_mozilla() {
echo "Keeping Firefox ESR." echo "Keeping Firefox ESR."
return return
fi fi
;;
esac
fi fi
_enable_mozilla_repo _enable_mozilla_repo
@@ -297,12 +309,22 @@ install_firefox_mozilla() {
} }
install_firefox_esr() { install_firefox_esr() {
local fchoice="${1:-}"
if is_installed "firefox-esr"; then if is_installed "firefox-esr"; then
echo "Firefox ESR is already installed." echo "Firefox ESR is already installed."
return return
fi fi
if command -v firefox &>/dev/null; then if command -v firefox &>/dev/null; then
case "$fchoice" in
both)
echo -e "${CYAN}[INFO] Keeping Mozilla Firefox (both selected).${NC}"
;;
esr)
echo "Removing Mozilla Firefox (as selected)..."
sudo apt remove -y firefox
;;
*)
if _confirm "Firefox" "Mozilla Firefox is installed.\nRemove it before installing Firefox ESR?"; then if _confirm "Firefox" "Mozilla Firefox is installed.\nRemove it before installing Firefox ESR?"; then
echo "Removing Mozilla Firefox..." echo "Removing Mozilla Firefox..."
sudo apt remove -y firefox sudo apt remove -y firefox
@@ -310,6 +332,8 @@ install_firefox_esr() {
echo "Keeping Mozilla Firefox." echo "Keeping Mozilla Firefox."
return return
fi fi
;;
esac
fi fi
_run_cmd "Firefox ESR" "sudo apt install -y firefox-esr" "Installing Firefox ESR..." _run_cmd "Firefox ESR" "sudo apt install -y firefox-esr" "Installing Firefox ESR..."
+36 -8
View File
@@ -299,7 +299,8 @@ After the firmware is downloaded, reboot the system." 14 75
done done
if $has_broadcom_bt; then if $has_broadcom_bt; then
echo -e "${YELLOW}Broadcom combo card (WiFi + Bluetooth) detected.${NC}" echo -e "${YELLOW}Broadcom combo card (WiFi + Bluetooth) detected.${NC}"
cat > /etc/modprobe.d/broadcom-combo.conf <<'EOF' sudo mkdir -p /etc/modprobe.d
sudo tee /etc/modprobe.d/broadcom-combo.conf > /dev/null <<'EOF'
# Broadcom combo: ensure btusb loads after wl # Broadcom combo: ensure btusb loads after wl
softdep wl post: btusb softdep wl post: btusb
EOF EOF
@@ -326,15 +327,27 @@ EOF
} }
# ── Ensure non-free repository is enabled ── # ── Ensure non-free repository is enabled ──
# Token-exact check for the "non-free" component. "non-free-firmware"
# contains the substring but is a different component, so word-boundary
# matching (\b) would produce false positives.
_has_nonfree_component() {
local file="$1"
grep -qE '^[^#]*[[:space:]]non-free([[:space:]]|$)' "$file" 2>/dev/null
}
_ensure_nonfree_repo() { _ensure_nonfree_repo() {
local nonfree_found=false local nonfree_found=false
if [ -f /etc/apt/sources.list ] && grep -Eq '^[^#]*\bnon-free\b' /etc/apt/sources.list 2>/dev/null; then if [ -f /etc/apt/sources.list ] && _has_nonfree_component /etc/apt/sources.list; then
nonfree_found=true nonfree_found=true
fi fi
if ! $nonfree_found && [ -d /etc/apt/sources.list.d ]; then if ! $nonfree_found && [ -d /etc/apt/sources.list.d ]; then
if grep -qr 'Components:.*\bnon-free\b' /etc/apt/sources.list.d/*.sources 2>/dev/null; then for f in /etc/apt/sources.list.d/*.sources /etc/apt/sources.list.d/*.list; do
[ -f "$f" ] || continue
if _has_nonfree_component "$f"; then
nonfree_found=true nonfree_found=true
break
fi fi
done
fi fi
if $nonfree_found; then if $nonfree_found; then
return 0 return 0
@@ -352,21 +365,36 @@ _ensure_nonfree_repo() {
fi fi
else else
if [ -f /etc/apt/sources.list ]; then if [ -f /etc/apt/sources.list ]; then
sudo sed -i '/^deb / { /non-free/! s/\(main[^ ]*\)/\1 non-free non-free-firmware/ }' /etc/apt/sources.list # Add each missing component after "main", never duplicating
sudo sed -i -E '/^deb / { /(^|[[:space:]])non-free([[:space:]]|$)/! s/(main[^[:space:]]*)/\1 non-free/ }' /etc/apt/sources.list
# non-free-firmware does not exist on Bullseye
if [ "$DEBIAN_VERSION" != "11" ]; then
sudo sed -i -E '/^deb / { /(^|[[:space:]])non-free-firmware([[:space:]]|$)/! s/(main[^[:space:]]*)/\1 non-free-firmware/ }' /etc/apt/sources.list
fi
fi fi
if [ -d /etc/apt/sources.list.d ]; then if [ -d /etc/apt/sources.list.d ]; then
for f in /etc/apt/sources.list.d/*.sources; do for f in /etc/apt/sources.list.d/*.sources; do
[ -f "$f" ] || continue [ -f "$f" ] || continue
sudo sed -i '/^Components:/ { /non-free/! s/$/ non-free non-free-firmware/ }' "$f" sudo sed -i -E '/^Components:/ { /(^|[[:space:]])non-free([[:space:]]|$)/! s/$/ non-free/ }' "$f"
if [ "$DEBIAN_VERSION" != "11" ]; then
sudo sed -i -E '/^Components:/ { /(^|[[:space:]])non-free-firmware([[:space:]]|$)/! s/$/ non-free-firmware/ }' "$f"
fi
done done
fi fi
fi fi
# Verify the component was actually added before reporting success # Verify the component was actually added before reporting success
local nonfree_ok=false local nonfree_ok=false
[ -f /etc/apt/sources.list ] && grep -Eq '^[^#]*\bnon-free\b' /etc/apt/sources.list 2>/dev/null && nonfree_ok=true [ -f /etc/apt/sources.list ] && _has_nonfree_component /etc/apt/sources.list && nonfree_ok=true
[ -d /etc/apt/sources.list.d ] && grep -qr 'Components:.*\bnon-free\b' /etc/apt/sources.list.d/*.sources 2>/dev/null && nonfree_ok=true if ! $nonfree_ok && [ -d /etc/apt/sources.list.d ]; then
[ -d /etc/apt/sources.list.d ] && grep -qrE '^[^#]*\bnon-free\b' /etc/apt/sources.list.d/*.list 2>/dev/null && nonfree_ok=true for f in /etc/apt/sources.list.d/*.sources /etc/apt/sources.list.d/*.list; do
[ -f "$f" ] || continue
if _has_nonfree_component "$f"; then
nonfree_ok=true
break
fi
done
fi
if ! $nonfree_ok; then if ! $nonfree_ok; then
echo -e "${RED}Failed to enable non-free repository. Check your APT sources.${NC}" echo -e "${RED}Failed to enable non-free repository. Check your APT sources.${NC}"
return 1 return 1
+39 -18
View File
@@ -55,8 +55,8 @@ cleanup_repo_backup() {
_clean_embedded_backports_classic() { _clean_embedded_backports_classic() {
local codename="$1" local codename="$1"
local file="/etc/apt/sources.list" local file="/etc/apt/sources.list"
[ ! -f "$file" ] && return [ ! -f "$file" ] && return 0
grep -qE "^[^#]*${codename}-backports\b" "$file" 2>/dev/null || return grep -qE "^[^#]*${codename}-backports\b" "$file" 2>/dev/null || return 0
if _confirm "Clean Classic Sources" "Remove backports line from ${file}?"; then if _confirm "Clean Classic Sources" "Remove backports line from ${file}?"; then
sudo sed -i "/${codename}-backports/d" "$file" sudo sed -i "/${codename}-backports/d" "$file"
echo "Removed backports from ${file}" echo "Removed backports from ${file}"
@@ -66,10 +66,10 @@ _clean_embedded_backports_classic() {
_clean_embedded_backports_deb822() { _clean_embedded_backports_deb822() {
local codename="$1" local codename="$1"
local file="/etc/apt/sources.list.d/debian.sources" local file="/etc/apt/sources.list.d/debian.sources"
[ ! -f "$file" ] && return [ ! -f "$file" ] && return 0
# Only proceed if the Suites line contains the backports token # Only proceed if the Suites line contains the backports token
grep -qE "^Suites:.*${codename}-backports\b" "$file" 2>/dev/null || return grep -qE "^Suites:.*${codename}-backports\b" "$file" 2>/dev/null || return 0
if _confirm "Clean deb822 Sources" "Remove backports suite from ${file}?"; then if _confirm "Clean deb822 Sources" "Remove backports suite from ${file}?"; then
# Remove only the backports token, leaving other suites intact # Remove only the backports token, leaving other suites intact
@@ -113,9 +113,9 @@ _write_deb822() {
# Backports: always in separate file # Backports: always in separate file
if [ "$bp_enabled" = true ]; then if [ "$bp_enabled" = true ]; then
_write_deb822_backports "$codename" _write_deb822_backports "$codename" || true
else else
_remove_deb822_backports "$codename" _remove_deb822_backports "$codename" || true
fi fi
# On migration from classic, disable the old file # On migration from classic, disable the old file
@@ -148,12 +148,14 @@ _write_deb822_backports() {
sudo mkdir -p /etc/apt/sources.list.d sudo mkdir -p /etc/apt/sources.list.d
echo -e "$bp_content" | sudo tee "$bp_file" > /dev/null echo -e "$bp_content" | sudo tee "$bp_file" > /dev/null
echo "Wrote ${bp_file}" echo "Wrote ${bp_file}"
else
return 1
fi fi
fi fi
# If backports were formerly embedded in debian.sources, clean them # If backports were formerly embedded in debian.sources, clean them
grep -qE "^Suites:.*${codename}-backports\b" /etc/apt/sources.list.d/debian.sources 2>/dev/null && \ grep -qE "^Suites:.*${codename}-backports\b" /etc/apt/sources.list.d/debian.sources 2>/dev/null && \
_clean_embedded_backports_deb822 "$codename" _clean_embedded_backports_deb822 "$codename" || true
} }
_remove_deb822_backports() { _remove_deb822_backports() {
@@ -164,6 +166,8 @@ _remove_deb822_backports() {
if _confirm "Remove Backports" "Remove ${bp_file}?"; then if _confirm "Remove Backports" "Remove ${bp_file}?"; then
sudo rm -f "$bp_file" sudo rm -f "$bp_file"
echo "Removed ${bp_file}" echo "Removed ${bp_file}"
else
return 1
fi fi
fi fi
@@ -205,9 +209,9 @@ _write_classic() {
# Backports: always in separate file # Backports: always in separate file
if [ "$bp_enabled" = true ]; then if [ "$bp_enabled" = true ]; then
_write_classic_backports "$codename" _write_classic_backports "$codename" || true
else else
_remove_classic_backports "$codename" _remove_classic_backports "$codename" || true
fi fi
# On migration from deb822, disable the old file # On migration from deb822, disable the old file
@@ -238,12 +242,14 @@ _write_classic_backports() {
sudo mkdir -p /etc/apt/sources.list.d sudo mkdir -p /etc/apt/sources.list.d
echo -e "$bp_content" | sudo tee "$bp_file" > /dev/null echo -e "$bp_content" | sudo tee "$bp_file" > /dev/null
echo "Wrote ${bp_file}" echo "Wrote ${bp_file}"
else
return 1
fi fi
fi fi
# If backports were formerly embedded in sources.list, clean them # If backports were formerly embedded in sources.list, clean them
grep -qE "^[^#]*${codename}-backports\b" /etc/apt/sources.list 2>/dev/null && \ grep -qE "^[^#]*${codename}-backports\b" /etc/apt/sources.list 2>/dev/null && \
_clean_embedded_backports_classic "$codename" _clean_embedded_backports_classic "$codename" || true
} }
_remove_classic_backports() { _remove_classic_backports() {
@@ -254,6 +260,8 @@ _remove_classic_backports() {
if _confirm "Remove Backports" "Remove ${bp_file}?"; then if _confirm "Remove Backports" "Remove ${bp_file}?"; then
sudo rm -f "$bp_file" sudo rm -f "$bp_file"
echo "Removed ${bp_file}" echo "Removed ${bp_file}"
else
return 1
fi fi
fi fi
@@ -491,9 +499,17 @@ Writing debian.sources may duplicate your configuration. Continue?" 10 65; then
return return
fi fi
fi fi
_write_deb822 "$DEBIAN_CODENAME" "write" "$bp_enabled" "$bp_location" "$components" if ! _write_deb822 "$DEBIAN_CODENAME" "write" "$bp_enabled" "$bp_location" "$components"; then
echo "No changes made."
_pause
return
fi
else else
_write_classic "$DEBIAN_CODENAME" "write" "$bp_enabled" "$bp_location" "$components" if ! _write_classic "$DEBIAN_CODENAME" "write" "$bp_enabled" "$bp_location" "$components"; then
echo "No changes made."
_pause
return
fi
fi fi
echo "Updating package lists..." echo "Updating package lists..."
@@ -582,18 +598,23 @@ Answer NO to disable or remove backports if they are currently enabled." 16 70;
backup_current_repos backup_current_repos
local write_ok=true
if $enable_backports; then if $enable_backports; then
if [ "$current_format" = "deb822" ]; then if [ "$current_format" = "deb822" ]; then
_write_deb822_backports "$DEBIAN_CODENAME" _write_deb822_backports "$DEBIAN_CODENAME" || write_ok=false
else else
_write_classic_backports "$DEBIAN_CODENAME" _write_classic_backports "$DEBIAN_CODENAME" || write_ok=false
fi fi
elif [ "$current_format" = "deb822" ]; then
_remove_deb822_backports "$DEBIAN_CODENAME" || write_ok=false
else else
if [ "$current_format" = "deb822" ]; then _remove_classic_backports "$DEBIAN_CODENAME" || write_ok=false
_remove_deb822_backports "$DEBIAN_CODENAME"
else
_remove_classic_backports "$DEBIAN_CODENAME"
fi fi
if ! $write_ok; then
echo "No changes made."
_pause
return
fi fi
echo "Updating package lists..." echo "Updating package lists..."
+37 -13
View File
@@ -27,27 +27,35 @@ _restore_backup() {
echo -e "${GREEN}Backup restored from $_MIGRATE_BACKUP${NC}" echo -e "${GREEN}Backup restored from $_MIGRATE_BACKUP${NC}"
} }
# Write the target branch repository configuration.
# DEB822 is only supported on Debian 13 (apt >= 2.3.14); Debian 11/12
# use the classic one-line format. SID has no security archive.
_write_branch_sources() {
local target="$1"
if [ "$DEBIAN_VERSION" = "13" ]; then
_write_deb822_branch "$target"
else
_write_classic_branch "$target"
fi
}
_write_deb822_branch() { _write_deb822_branch() {
local target="$1" local target="$1"
local main_file="/etc/apt/sources.list.d/debian.sources" local main_file="/etc/apt/sources.list.d/debian.sources"
local main_content="" local main_content=""
main_content+="Types: deb\n"
main_content+="URIs: https://deb.debian.org/debian\n"
if [ "$target" = "sid" ]; then if [ "$target" = "sid" ]; then
main_content+="Types: deb\n"
main_content+="URIs: https://deb.debian.org/debian\n"
main_content+="Suites: sid\n" main_content+="Suites: sid\n"
main_content+="Components: main contrib non-free non-free-firmware\n"
main_content+="\n"
main_content+="Types: deb\n"
main_content+="URIs: https://security.debian.org/debian-security\n"
main_content+="Suites: sid\n"
main_content+="Components: main contrib non-free non-free-firmware\n"
else else
# testing
main_content+="Types: deb\n"
main_content+="URIs: https://deb.debian.org/debian\n"
main_content+="Suites: testing testing-updates\n" main_content+="Suites: testing testing-updates\n"
fi
main_content+="Components: main contrib non-free non-free-firmware\n" main_content+="Components: main contrib non-free non-free-firmware\n"
# SID receives all updates via unstable itself; there is no sid-security suite
if [ "$target" != "sid" ]; then
main_content+="\n" main_content+="\n"
main_content+="Types: deb\n" main_content+="Types: deb\n"
main_content+="URIs: https://security.debian.org/debian-security\n" main_content+="URIs: https://security.debian.org/debian-security\n"
@@ -60,6 +68,22 @@ _write_deb822_branch() {
echo "Wrote $main_file" echo "Wrote $main_file"
} }
_write_classic_branch() {
local target="$1"
local main_file="/etc/apt/sources.list"
local main_content=""
main_content+="deb https://deb.debian.org/debian ${target} main contrib non-free non-free-firmware\n"
# SID receives all updates via unstable itself; there is no sid-security suite
if [ "$target" != "sid" ]; then
main_content+="deb https://security.debian.org/debian-security ${target}-security main contrib non-free non-free-firmware\n"
fi
echo -e "$main_content" | sudo tee "$main_file" > /dev/null
echo "Wrote $main_file"
}
_branch_migration() { _branch_migration() {
# ── Screen 1: Risk warning ── # ── Screen 1: Risk warning ──
_msg_red "WARNING: Branch Migration" \ _msg_red "WARNING: Branch Migration" \
@@ -82,7 +106,7 @@ so you can restore if things go wrong." 16 70
local plan="This operation will:\n\n" local plan="This operation will:\n\n"
plan+=" 1. Backup current APT sources to /var/backups/\n" plan+=" 1. Backup current APT sources to /var/backups/\n"
plan+=" 2. Remove any backports configuration\n" plan+=" 2. Remove any backports configuration\n"
plan+=" 3. Write new DEB822 sources for the target branch\n" plan+=" 3. Write new sources for the target branch\n"
plan+=" 4. Run: apt update\n" plan+=" 4. Run: apt update\n"
plan+=" 5. Run: apt upgrade -y\n" plan+=" 5. Run: apt upgrade -y\n"
plan+=" 6. Run: apt full-upgrade -y\n" plan+=" 6. Run: apt full-upgrade -y\n"
@@ -131,7 +155,7 @@ so you can restore if things go wrong." 16 70
[ -f /etc/apt/sources.list ] && sudo rm -f /etc/apt/sources.list [ -f /etc/apt/sources.list ] && sudo rm -f /etc/apt/sources.list
# 4d. Write new sources # 4d. Write new sources
_write_deb822_branch "$target" _write_branch_sources "$target"
# 4e. SID guardrails: install bug alerts before upgrade # 4e. SID guardrails: install bug alerts before upgrade
if [ "$target" = "sid" ]; then if [ "$target" = "sid" ]; then
+5 -1
View File
@@ -9,7 +9,11 @@ _prefs_audio_menu() {
local pw_label="PipeWire Audio Stack (Bluetooth Hi-Res)" local pw_label="PipeWire Audio Stack (Bluetooth Hi-Res)"
local pw_state; pw_state=$(_state "pipewire-audio") # Bullseye ships the "pipewire" package; the pipewire-audio meta-package
# only exists from Bookworm onwards
local pw_pkg="pipewire-audio"
[ "$DEBIAN_VERSION" = "11" ] && pw_pkg="pipewire"
local pw_state; pw_state=$(_state "$pw_pkg")
items+=( items+=(
"pipewire-audio" "$pw_label" "$pw_state" "pipewire-audio" "$pw_label" "$pw_state"
) )
+5
View File
@@ -603,6 +603,11 @@ _checklist() {
whiptail --title "$title" --ok-button "Apply" --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
} }
_radiolist() {
local title="$1" text="$2" h="$3" w="$4" lh="$5"; shift 5
whiptail --title "$title" --ok-button "Install" --radiolist "$text" "$h" "$w" "$lh" "$@" 3>&1 1>&2 2>&3 || true
}
_inputbox() { _inputbox() {
whiptail --title "$1" --ok-button "Apply" --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
} }