fix: TUI mit drei Backends (gum/whiptail/basic) + gum auto-install auf frischen Systemen

- tui.sh: komplett überarbeitet mit _strip_format() für basic mode
- whiptail als mittleres Fallback-Backend hinzugefügt
- Alle #{bold}/#{normal}-Markups entfernt, saubere ANSI-API (tui_info/tui_bold/...)
- install.sh: detect_environment() installiert gum vor allen Prompts
- Kein seq-Dependency mehr (printf -v statt seq)
- packages.sh/preflight.sh/homelab.sh/optional.sh auf neue TUI-API migriert
This commit is contained in:
2026-05-27 21:00:49 +02:00
parent be7bffc1e5
commit edbf5471b5
7 changed files with 333 additions and 223 deletions

View File

@@ -10,7 +10,7 @@ module_should_skip() { return 1; }
module_prereqs() {
require pacman pacman
is_arch || {
log_error "This module requires an Arch-based system"
tui_error "This module requires an Arch-based system"
return 1
}
}
@@ -22,7 +22,7 @@ module_main() {
local all_packages=()
if ((OMERON_FRESH_INSTALL)); then
tui_format "#{bold}Fresh install mode — installing everything#{normal}"
tui_bold "Fresh install mode — installing everything"
groups=(
"hyprland"
"gpu"
@@ -34,7 +34,7 @@ module_main() {
"development"
)
else
tui_format "#{bold}Existing system — checking for missing packages#{normal}"
tui_bold "Existing system — checking for missing packages"
groups=(
"hyprland"
"audio"
@@ -64,37 +64,38 @@ module_main() {
fi
done
tui_format ""
tui_format "#{bold}Package Summary:#{normal}"
tui_format " Total packages: ${total}"
tui_format " Already installed: ${existing}"
tui_format " To install: ${missing}"
tui_format ""
tui_separator
tui_bold "Package Summary"
tui_info "Total packages: $(tui_bold "$total")"
tui_success "Already installed: $(tui_bold "$existing")"
if ((missing > 0)); then
tui_warn "To install: $(tui_bold "$missing")"
fi
printf '\n'
if ((missing == 0)); then
log_success "All packages already installed"
tui_success "All packages already installed"
return 0
fi
if ! tui_confirm "Install ${missing} missing packages?"; then
log_info "Package installation skipped by user"
tui_info "Package installation skipped by user"
return 0
fi
if ((OMERON_FRESH_INSTALL)); then
log_info "Running system update first..."
tui_info "Running system update first..."
sudo_run pacman -Syu --noconfirm 2>&1 | tail -3 || true
fi
local pacman_pkgs=()
local aur_pkgs=()
local gpu_pkgs=()
local pkg
for pkg in "${all_packages[@]}"; do
if is_package_installed "$pkg"; then
continue
fi
if pacman -Si "$pkg" >/dev/null 2>&1; then
pacman_pkgs+=("$pkg")
else
@@ -103,22 +104,22 @@ module_main() {
done
if ((${#pacman_pkgs[@]})); then
log_info "Installing ${#pacman_pkgs[@]} pacman packages..."
tui_info "Installing ${#pacman_pkgs[@]} pacman packages..."
tui_spin "Installing core packages..." sudo_run pacman -S --needed --noconfirm "${pacman_pkgs[@]}"
log_success "Core packages installed"
tui_success "Core packages installed"
fi
if ((${#aur_pkgs[@]})); then
if have paru || have yay; then
log_info "Installing ${#aur_pkgs[@]} AUR packages..."
install_aur "${aur_pkgs[@]}" || log_warn "Some AUR packages may not have been installed"
tui_info "Installing ${#aur_pkgs[@]} AUR packages..."
install_aur "${aur_pkgs[@]}" || tui_warn "Some AUR packages may not have been installed"
else
log_warn "No AUR helper found. Install manually: ${aur_pkgs[*]}"
tui_warn "No AUR helper found. Install manually: ${aur_pkgs[*]}"
fi
fi
log_success "Package installation complete"
log_info "Installed: $((missing - ${#aur_pkgs[@]})) | AUR/optional: ${#aur_pkgs[@]}"
tui_success "Package installation complete"
tui_info "Installed: $((missing - ${#aur_pkgs[@]})) | AUR/optional: ${#aur_pkgs[@]}"
}
get_group_packages() {