# Moonarch Reproduzierbares Arch-Linux-Setup basierend auf archinstall + Post-Install-Automatisierung. ## Projektstruktur - `config/` — archinstall-Konfiguration (inkl. custom-commands die das Repo nach /opt/moonarch klonen, root-owned) - `scripts/` — Post-Install- und Helper-Scripts - `packages/` — Paketlisten (offiziell + AUR), getrennt gepflegt - `defaults/` — XDG-Configs, Shell-Config, Helper-Binaries, systemd Services, udev-Regeln, greetd/moongreet-Config, Wallpaper ## Battery Conservation Mode Laptops mit `charge_control_end_threshold`-Support (ThinkPad, Framework, etc.) erhalten einen Waybar-Toggle: - Klick auf das Battery-Modul schaltet zwischen 80% und 100% Ladegrenze um - Bei aktiver Conservation erscheint ein ♥-Icon neben der Battery-Anzeige - Zustand wird in `/var/lib/moonarch/batsaver-threshold` persistiert und beim Boot via systemd-Service wiederhergestellt - udev-Regel gibt Gruppe `wheel` Schreibzugriff auf den Threshold (kein sudo nötig) - Auf Desktops ohne Battery-Support versteckt sich das Feature komplett ## Nightlight (Blaufilter) Waybar-Toggle für wlsunset (Wayland-nativer Blaufilter), persistenter Zustand via systemd: - `wlsunset.service` (systemd User-Service) mit `After=kanshi.service` — startet erst wenn alle Outputs konfiguriert sind - Klick auf das Nightlight-Modul in `group/brightness` toggled wlsunset an/aus (`enable --now` / `disable --now`) - Zustand überlebt Reboots (enabled/disabled bleibt bestehen) - Aktiver Zustand zeigt 󰌵 in Catppuccin Yellow, inaktiv 󰌶 in Standard-Textfarbe - Signal SIGRTMIN+11 für sofortiges Waybar-Refresh - Scripts: `moonarch-nightlight` (Toggle), `moonarch-waybar-nightlight` (Status-JSON) ## Waybar Config Merger (moonarch-waybar) Waybar wird über `moonarch-waybar` gestartet (nicht direkt). Der Wrapper merged eine optionale User-Config (`~/.config/waybar/userconfig`) mit der System-Config (`/etc/xdg/waybar/config`): - `prepend`/`append`-Keys in der userconfig erweitern `modules-left`/`modules-center`/`modules-right` Arrays - Alle anderen Top-Level-Keys werden als Modul-Definitionen per Object-Merge eingefügt - Merge wird nur bei Änderungen ausgeführt (Timestamp-Vergleich) - Bei Fehler: `notify-send` + `logger`, Waybar startet mit System-Config - Generiert `~/.config/waybar/style.css` mit `@import` der System-Styles falls nicht vorhanden - Benötigt `jq` (in PKGBUILD als Dependency) - System-Config muss valides JSON sein (kein JSONC) ## System Health Check (moonarch-doctor / moondoc) Diagnose-Script das den Systemzustand gegen moonarch-Defaults prüft: - Pakete (official.txt + aur.txt installiert? Orphans?) - System-Services (NetworkManager, bluetooth, greetd, ufw, auto-cpufreq, etc.) - User-Services (kanshi, wlsunset, stasis, walker, nautilus, cliphist-text, cliphist-image) - Config-Dateien (SHA256-Vergleich deployed vs. moonarch-Default) - Helper-Scripts + Symlinks (moonup, moondoc) - System-Config (UFW, Pacman/Paru Repos, Default Shell) - Verzeichnisse + Permissions ## Konventionen - Paketlisten sind einfache Textdateien, ein Paket pro Zeile, Kommentare mit `#` - Shell-Scripts müssen POSIX-kompatibel oder explizit bash/zsh sein - Alle Pfade im archinstall-Config relativ zum Installationsziel