Docker is a dev dependency, not a desktop environment default. Remove
from package list, archinstall config, services and README.
Fix systemd ordering cycle that prevented cliphist-image from starting:
cliphist-text had After=graphical-session.target which combined with
PartOf= and cliphist-image's After=cliphist-text created a cycle.
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.
Add blue light filter support via wlsunset, toggleable through a Waybar
module in the brightness group. Nightlight icon is the primary element,
backlight slider expands on click.
- Add wlsunset package to official.txt
- Add moonarch-nightlight toggle script (kill/restart wlsunset)
- Add moonarch-waybar-nightlight status script (JSON output)
- Add custom/nightlight module to group/brightness in Waybar config
- Add Catppuccin Yellow highlight for active nightlight state
- Add wlsunset autostart in Niri config (5000K night temperature)
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.
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.
Add a visible bottom border to the active taskbar button for clear
focus indication. Reserve border space on all buttons with a transparent
border to prevent icon shifting on state changes.
group/battery shared its CSS ID (#battery) with the battery module,
causing padding overrides to affect the group box instead of just the
module. Renamed to group/bat. Moved cpugov into indicators group.
Reorganized style.css sections for clarity.
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.
- Remove defaults/user/ and the user-defaults copy loop from
post-install.sh and transform.sh — Waybar falls back to
/etc/xdg/waybar/ via XDG spec, no provisioning needed.
- Remove USER_DEFAULTS constant from lib.sh.
- Clean up style.css: remove dead selectors (#net, #cava,
#custom-updates, #custom-notification), commented-out blocks,
empty rules, duplicate properties, and hardcoded hex color.
- Restructure module styling: generic top-level box via
> widget > *, group children reset via widget widget > *,
explicit exceptions for workspaces/taskbar/window.
- Normalize section comments and whitespace.
- Update README to remove user/waybar/ from project structure.
Rename gtk-inherit theme to moonarch with fixed Colloid-Grey-Dark-
Catppuccin color definitions. Reduces border brightness and shadow
weight for a subtler appearance.
Closes#3
Remove ABOUTME comments from kanshi default config — they broke
the profile parser in wdisplays-persistent store.c, preventing
config saves. Also skip kanshi in transform.sh when user profiles
already exist, since display layouts are machine-specific.
- Add cliphist.service that wipes clipboard history on session start
(crash-safe: cleans up at next boot, not at shutdown)
- Move kanshi, walker, nautilus services from ~/.config/systemd/user/
to /etc/systemd/user/ (system-level defaults, consistent with
moonarch's config philosophy)
- Remove cliphist spawn-sh-at-startup from niri config (managed by
systemd service now)
- Add cliphist to USER_SERVICES in post-install.sh and transform.sh
Closes#1
xdg-open ~ (Super+E) cold-starts Nautilus every time, causing
noticeable delay. A GApplication service keeps Nautilus warm in the
background so subsequent opens are near-instant. Follows the same
pattern as the existing walker.service.
Closes#2
libadwaita overrides application-level CSS, causing a visible
background behind the control center overlay. Setting cssPriority
to "user" ensures custom styles take precedence.
Hand-converted @define-color CSS was not rendering correctly.
Replaced with pre-built release CSS, accent changed from Blue
to Lavender (#b4befe), font set to UbuntuSans Nerd Font.
The greeter runs as the greeter user, so user-level gsettings
don't apply. Explicit gtk-theme ensures Colloid-Grey-Dark-Catppuccin
is used in the login screen.
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
The greeter's niri session triggered D-Bus activation of
xdg-desktop-portal-gtk, which failed 17x on every boot because
WAYLAND_DISPLAY is not set in the greeter's D-Bus scope.
Setting GTK_USE_PORTAL=0 prevents GTK from requesting portal
services the greeter does not need.
- Source zsh-autosuggestions and zsh-syntax-highlighting from
/usr/share/zsh/plugins/ instead of oh-my-zsh custom dir
- Add both as official packages
- Remove waybar network and custom/vpn modules (nm-applet covers this)
- Move tray from modules-left to first position in modules-right
Remove prefixes and actions for providers not installed as
elephant packages: windows, symbols, websearch, archlinuxpkgs.
Add provider set for nirisessions.
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.
Port cd() wrapper (auto eza listing on directory change) and
extract() function (universal archive extraction) from active
user config into moonarch defaults.
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.
Extract common applet pattern (no-icon dmenu layout) into applet.rasi.
Reduce clipboard, vpn, cpugov, volume, and bluetooth themes to pure
overrides — eliminates ~380 lines of duplication. Also fixes broken
fonts.rasi import in bluetooth.rasi.
- 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
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.
Extract shared helpers into lib.sh (log, err, confirm, path constants)
and refactor post-install.sh + update.sh to source it.
New transform.sh converts an existing Arch+Wayland system to Moonarch:
pre-flight summary, config backup, DM conflict resolution, PulseAudio
removal, full package install, and hard overwrite of all configs.
Also migrate kanshi from niri spawn-at-startup to systemd user service.
- 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
- 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)
- Add kanshi to official package list and spawn at niri startup
- Add empty default kanshi config in defaults/xdg/kanshi/
- Replace wdisplays-git with wdisplays-persistent-gettext in AUR list
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.
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.