Auf frischem Arch ist base-devel nicht installiert.
makepkg -si schlaegt fehl: 'fakeroot' not found.
Fix: sudo pacman -S base-devel vor dem ersten makepkg.
Drei Probleme gefixt:
1. Theme-Auswahl waehrend Install
- apply-theme.sh zeigt jetzt alle .theme-Files via tui_choose
- Benutzer waehlt interaktiv (gum/whiptail/basic)
- Bei nur einem Theme: auto-select
2. SDDM wendet falsches Theme an
- sddm.sh erzeugt /var/lib/pascal-sddm-theme/ mit user chown
- Liest current-theme.conf + hyprpaper.conf fuer aktuelle Farben
- Schreibt theme.conf in /usr/share/sddm/themes/pascal-hypr/
- Config heisst jetzt 90-pascal-hypr.conf (hoehere Priority)
- apply-theme.sh erzeugt state dir VOR theme-menu.sh --apply
3. tui_choose basic mode fix
- ${!choice} funktioniert nicht fuer numerische Indices
- labels+=("$@") + ${labels[$choice]} statt Positional-Params
- hyprland.conf von /home/pascal/.config/hypr/ auf System übernommen
(Monitore eDP-1/DP-3, awww-Background-Set via autostart,
lid-dock-handler, hyprpolkitagent, ai-command-center source,
clipboard-manager.sh bind, togglefloating auf F)
- scripts/lid-dock-handler.sh von System kopiert
- wallpapers/forest.jpg + rose-pink.jpg ins Projekt aufgenommen
(werden via dotfiles-Deployment nach ~/Bilder/Wallpaper/ kopiert,
replace_home_paths passt den Pfad im Theme an)
- aylurs-gtk-shell (ags) + hyprpolkitagent zur hyprland-Gruppe
- chmod +x auch für hypr/scripts/ (lowercase)
Vier Änderungen:
1. Duplikat in apply_wallpaper entfernt (überlappende Edits hinterließen
einen zweiten hyprctl-Block außerhalb des pgrep-Guards)
2. gsettings in write_gtk_settings hinter pgrep -x Hyprland guard
(gsettings set → D-Bus → könnte swaync auto-starten → hängt)
3. kwriteconfig6 in write_kde_color_scheme hinter pgrep -x Hyprland
(kwriteconfig6 schreibt nicht nur Config, macht auch D-Bus-Calls)
4. apply_theme() blockt jetzt komplett: ALLE Display-Aufrufe
(hyprctl, swaync-client, waybar, notify, awww, swww, gsettings,
kwriteconfig6) werden nur ausgeführt wenn Hyprland läuft.
Ohne Hyprland: nur Config-Files schreiben (load_theme, write_app_styles,
write_desktop_app_theme, write_hyprlock_theme, write_starship_theme,
write_sddm_theme_assets, apply_wallpaper-schreibt-nur). Kein einziger
D-Bus-Call fällt mehr an.
apply_theme() rief hyprctl (keyword + hyprpaper) und restart_waybar
ohne zu prüfen ob Hyprland läuft → hyprctl hing bis Timeout im TTY.
Fix: pgrep -x Hyprland guard vor allen hyprctl/waybar-Aufrufen.
apply_theme schreibt jetzt Config-Files (gelten beim nächsten Login),
überspringt aber Display-abhängige Kommandos.
systemctl enable sddm --now kann sofort zu SDDM wechseln und das
Script vorzeitig beenden. sddm ist jetzt das letzte Modul in
FRESH_MODULES und DEFAULT_MODULES, nach post/apply-theme.
- paru wird jetzt in detect_environment() auf frischen Systemen installiert
(vorher nur in preflight, das bei --fresh nie durchlief)
- install_aur_helper() von preflight nach utils.sh verschoben (global verfügbar)
- Header von Cherokee-Zeichen ('Ꮎ Ꮇ Ꭼ Ꮢ Ꮎ Ꮑ') auf ASCII ('O M E R O N')
umgestellt — Cherokee zeigte auf manchen Terminals Fragezeichen
- Continue with installation? Prompt nach Banner als erster interaktiver Schritt
- basic mode header jetzt sauberes ASCII (===== statt Box-Zeichen)
gum spin --title ... -- sudo_run pacman ...
→ gum startet sudo_run als externes Programm, nicht als Bash-Funktion
→ 'executable file not found in path'
Fix: tui_spin benutzt immer die einfache Ausführung ('▶ ... OK/FAILED'),
da gum spin mit Shell-Funktionen (sudo_run) nicht kompatibel ist.
- show_summary entfernt (war redundant nach collect_all_interactive)
- collect_all_interactive: keine log_step-Header mehr, nur einfaches
'Additional Software (Obsidian, ...)? [Y/n]:' pro Modul
- module_description von optional/install listet jetzt alle verfügbaren
Pakete, damit User die Liste sieht BEVOR er Yes/No sagt
- Nicht-required Module: kompakter confirm ohne log_step-Gedöns
collect_all_interactive wurde via <(...) in einer Subshell ausgeführt, deren
stdout an mapfile gebunden war. ALLE Ausgaben (log_step, tui_confirm-Prompts,
tui_info etc.) landeten im modules_to_run-Array → mapfile las Müllzeilen wie
'━━━ [4/7] ... ━━━' als Modul-Pfade → module_run('━━━ ... ━━━') → 'not found'.
Fix: exec 1>&2 zu Beginn der Subshell, nur die tatsächlichen Modul-Pfade
werden über erhaltenen fd 3 (> original stdout) an mapfile gegeben.
Prompt sagt jetzt auch welcher Step ('Run Modulbeschreibung?' statt
'Run this step?').
- collect_all_interactive: module VOR declare -F sourcen (erstes Modul wurde nie
als required erkannt, sondern immer mit tui_confirm nachgefragt)
- OMERON_MODULE_DIR exportieren (Subshell von <(...) könnte sonst leeren Wert
haben → Module nicht gefunden)
- collect_modules (--modules): auch hier file-existence prüfen
- all_packages=("$(remove_duplicates ...)") kollabierte Newlines → alle
Pakete wurden ein einzelnes Array-Element → pacman -Si matchte nichts
→ nichts installiert. Fix: readarray -t statt $()-Subshell.
- optional/install in FRESH_MODULES aufgenommen, damit die Software-Auswahl
auch auf --fresh erscheint.
- 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