moonarch/CLAUDE.md
nevaforget 2363e76b4a
All checks were successful
Update PKGBUILD version / update-pkgver (push) Successful in 4s
feat: add moonarch-waybar config merger wrapper
Waybar's include directive cannot merge arrays, making per-machine
module customization impossible without duplicating the entire config.

moonarch-waybar merges an optional ~/.config/waybar/userconfig with
the system config, supporting prepend/append on module arrays and
object merge for module definitions. Generates user style.css with
@import of system styles on first run.

System waybar config converted from JSONC to valid JSON for jq
compatibility. Niri startup and hotkey updated to use the wrapper.
2026-04-09 17:04:24 +02:00

2.6 KiB

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):

  • wlsunset startet per Niri-Autostart mit fester Nacht-Temperatur (5000K)
  • Klick auf das Nightlight-Modul in group/brightness toggled wlsunset an/aus (kill/restart)
  • 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)

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

Ich bin Apollo

Benannt nach dem Programm, das Menschen zum Mond gebracht hat — passend für ein Projekt namens Moonarch.