20 Commits

Author SHA1 Message Date
b6beabe500 feat: add moonarch-update wrapper for interactive system updates
All checks were successful
Update PKGBUILD version / update-pkgver (push) Successful in 2s
Wraps paru in a script that waits for keypress after completion,
preventing foot from closing immediately. Used as Waybar on-click
action for the updates module.
2026-04-09 11:34:11 +02:00
8ddbb23851 feat: add waybar module for package update notifications
All checks were successful
Update PKGBUILD version / update-pkgver (push) Successful in 3s
Add moonarch-waybar-updates script that checks for available updates
from both official repos (checkupdates) and AUR (paru -Qua). Uses a
cache mechanism to avoid excessive mirror hits while still detecting
freshly installed updates within 60 seconds.
2026-04-09 10:54:49 +02:00
ac2b210a1f fix: audit remediation — security, quality and performance fixes
All checks were successful
Update PKGBUILD version / update-pkgver (push) Successful in 3s
- CI Dockerfile: verify act_runner SHA256, restrict sudoers to safe
  pacman arguments (S-C1, S-C2)
- cliphist: split into cliphist-text + cliphist-image services with
  Type=simple for proper PID tracking and restart (Q-C3)
- batsaver-toggle: validate sysfs input as numeric, check state file
  write (Q-C2, S-W2)
- udev battery rule: add ACTION=="add" filter to avoid firing on
  every battery event (Q-W3)
- cpugov: replace eval with direct expansion, switch waybar module
  to signal-based updates, send SIGRTMIN+10 after toggle (Q-W1,
  S-W1, P-W4)
- Remove docker group auto-assignment from install scripts (S-I1)
2026-04-08 11:45:56 +02:00
579a948449 feat: add battery conservation mode with Waybar toggle
All checks were successful
Update PKGBUILD version / update-pkgver (push) Successful in 2s
Laptops with charge_control_end_threshold support get a click-to-toggle
on the battery module (80% ↔ 100%). A ♥ icon appears when conservation
is active, hidden when inactive. State persists across reboots via
systemd oneshot service. udev rule grants wheel group write access
so no sudo is needed for toggling.
2026-04-08 09:55:46 +02:00
29550b8a14 fix: audit remediation — 6 fixes across quality, performance, security
All checks were successful
Update PKGBUILD version / update-pkgver (push) Successful in 2s
Q-01: Fix broken upower regex in moonarch-btnote (lookaheads never matched)
Q-02: Fix transform.sh paru repo section name ([moonarch] → [moonarch-pkgbuilds]),
      config path (~/.config → /etc), and partial sync (-Sy → -Syu)
Q-03: Add missing stasis package to aur.txt (idle management broken on fresh install)
S-01: Switch CI git clones from HTTP to HTTPS (MITM risk in Docker network)
S-02: Restrict CI builder sudo to /usr/bin/pacman only
P-01: Refactor moonarch-waybar-gpustat — remove while loop, use jq --arg style
2026-04-07 10:50:57 +02:00
27247a4ffb fix: remove duplicate VPN notifications from moonarch-vpn
All checks were successful
Update PKGBUILD version / update-pkgver (push) Successful in 2s
nm-applet already sends notifications for VPN state changes.
The script's own notify-send calls caused duplicates on every toggle.

Closes #4
2026-04-07 10:19:41 +02:00
047ff53091 fix: remove -- from nmcli calls in moonarch-vpn
All checks were successful
Update PKGBUILD version / update-pkgver (push) Successful in 2s
nmcli 1.56 treats -- as a connection name instead of end-of-options,
causing "Unknown connection --" errors when toggling VPN connections.
2026-04-02 10:23:55 +02:00
1e19f08776 fix: shell script quoting and argument injection hardening
Audit fixes for command injection risks in helper scripts:
- moonarch-cpugov: eval for quoted COMMANDS expansion (pkexec context)
- moonarch-btnote: while+read with process substitution, quoted vars
- moonarch-vpn: -- guard before connection name in nmcli calls
- post-install.sh: else-logging when USER_DEFAULTS dir missing
2026-03-31 11:06:14 +02:00
a86b95dd58 Add WireGuard support to VPN manager, use nm-applet for auth
nm-applet replaces the foot terminal workaround for VPN authentication,
providing a proper NetworkManager secret agent. moonarch-vpn now handles
both VPN and WireGuard connection types. Waybar indicator switched from
tun0 interface check to nmcli active connection query with signal-based
instant refresh.
2026-03-30 19:14:10 +02:00
4d9cbe7ce2 Replace Rofi with Walker as application launcher
Walker (GTK4 + Elephant backend) replaces rofi-lbonn-wayland-git as the
central launcher and menu framework.

Native Walker providers replace 5 custom rofi scripts:
- App launcher (desktopapplications provider)
- Clipboard (clipboard provider, replaces cliphist frontend)
- Bluetooth (bluetooth provider, replaces bluetoothctl script)
- Volume/audio (wireplumber provider)
- Sink switcher (wireplumber provider)

3 scripts ported to Walker dmenu mode:
- moonarch-vpn (nmcli)
- moonarch-cpugov (auto-cpufreq)
- moonarch-sink-switcher (pactl)

Settings menu (moonarch-setmen) removed — apps are findable via Walker
app search directly.

Walker theme (gtk-inherit) inherits all colors from the active GTK4
theme instead of hardcoding Catppuccin values.

Walker and Elephant run as systemd user services for instant startup.

Also standardizes GTK theme to Colloid-Grey-Dark-Catppuccin across all
config files (was inconsistent between gsettings and file configs).

Old rofi configs preserved in legacy/rofi/ for reference.
2026-03-30 12:06:25 +02:00
eb1db750c9 Fix dunst config loading, modernize notification handling
- Point dunst to /etc/xdg/dunst/dunstrc via -conf flag (dunst with
  SYSCONFDIR=/etc does not search XDG_CONFIG_DIRS)
- Update dunstrc: fix legacy offset syntax, replace missing
  Tela-purple-dark icon theme with Colloid-Grey-Catppuccin-Dark
- Replace dunstify with notify-send in moonarch-cpugov for
  daemon-agnostic notifications, fix broken icon path
- Replace dbus-monitor based moonarch-dnd script with inline
  waybar polling (interval 2s), fixing process accumulation bug
- Add #custom-dnd to waybar CSS padding rule
2026-03-30 09:40:26 +02:00
07264510dd Fix audit findings, replace wlogout with moonset
Bug fixes from quality and security audits:
- moonarch-capsnote: use value[0] instead of value[2]
- moonarch-btnote: guard empty PER_INT before integer comparison
- moonarch-clipboard + niri config: use XDG_RUNTIME_DIR instead of UID 1000
- moonarch-waybar-hidpp: use charging icon when charging
- moonarch-waybar-gpustat: find gpu_busy_percent dynamically across hwmon*
- post-install/transform: use systemctl --user cat for service detection
- post-install/transform: install paru from [extra] instead of AUR clone

Replace wlogout with moonset in niri keybind and waybar on-click.
Remove moonarch-session (dead code, replaced by moonset) and wlogout
layout config.
2026-03-29 21:23:03 +02:00
d873985930 fix icon theme references, replace Newaita with Colloid-Catppuccin
- Update gtk-3.0/settings.ini icon theme to match gsettings
- Replace hardcoded Newaita icon path in moonarch-btnote with
  generic icon name (uses active theme automatically)
- Update README to reflect correct icon theme
2026-03-29 14:10:54 +02:00
eaf30724aa fix missing packages, remove dead code, replace ponymix with pactl
- Add wl-clipboard, libnotify, upower, bluez, bluez-utils to official.txt
- Remove stow (installed but never used)
- Remove dead moonlock.service cp block from post-install.sh
- Rewrite moonarch-sink-switcher and moonarch-volume to use pactl
  instead of ponymix (already available via libpulse)
2026-03-29 14:00:51 +02:00
0a266510e0 i18n: migrate all German text to English
Enforce the repo convention that committed text is English.
Translates ABOUTME headers, code comments, log/error messages,
shell prompts, and documentation across all files.
CLAUDE.md files remain in German per policy.
2026-03-28 14:53:23 +01:00
ef78e32394 fix: clean up cpugov scripts and waybar polling
Replace infinite loop with single execution (waybar handles polling
via interval), fix unquoted variables, simplify jq invocation.
2026-03-28 14:31:00 +01:00
8f248d2a7a HID++ Batterie-Modul für Waybar mit dynamischer Geräteerkennung
Das bisherige battery#keyboard Modul nutzte eine feste hidpp_battery_N
Nummer, die sich bei jedem Boot ändern kann. moonarch-waybar-hidpp
findet den richtigen Eintrag dynamisch per MODEL_NAME Argument.
2026-03-28 00:03:39 +01:00
3acfe42ece Rofi Clipboard-Menü mit Catppuccin-Theme und eigenem Script
Clipboard-History (Super+C) nutzte bisher rofi ohne Theme.
Neues clipboard.rasi und moonarch-clipboard Script analog zu
den anderen Rofi-Menüs (vpn, volume, session etc.).
2026-03-27 15:13:03 +01:00
c3213cc0ce Rofi/Waybar aufräumen: tote Scripts entfernen, Themes konsolidieren
- GTK-Style-Script und Template-System entfernt (Catppuccin fest)
- 15 tote/inkompatible Scripts gelöscht (Hyprland, X11, Duplikate)
- Rasi-Themes von Einzelordnern in themes/ konsolidiert
- Waybar: Timezone fix, BAT0, JSON-Struktur, Icons restored
- Waybar: GTK-Menu durch wlogout on-click ersetzt
- Alle Script-Pfade auf /etc/xdg/rofi/themes/ aktualisiert
- moonarch-session als Rofi-basierte Übergangslösung hinzugefügt
- moonarch-dnd: broken pipe bei Waybar-Restart behoben
- Style.css vom System übernommen
2026-03-27 13:19:48 +01:00
5d2ce00455 Initial commit: Moonarch reproduzierbares Arch-Linux-Setup
Niri-basierter Wayland-Desktop mit greetd/regreet, Catppuccin Mocha
Theming, Rofi-Menus, Waybar und vollstaendiger Post-Install-Automatisierung.

Archinstall-Config klont das Repo automatisch via custom-commands,
danach genuegt ein einzelner Befehl fuer die komplette Einrichtung.
2026-03-23 17:42:26 +01:00