Move nightlight from niri spawn-at-startup to a systemd user service
with After=kanshi.service to ensure all outputs are configured before
wlsunset starts. Toggle now uses enable/disable --now for persistent
state across reboots.
Smaller font (14px → 12px), smaller icon (64px → 36px via CSS variable),
and notification-window-height limit (150px) to prevent oversized popups
from long notification bodies.
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
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.
- 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.
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 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.
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.).
- GTK-Theme von catppuccin-mocha-lavender auf Colloid-Catppuccin umgestellt
- Systemweite GTK4-Symlinks in /etc/xdg/gtk-4.0/ für libadwaita Dark-Mode
- gsettings für Theme, Color-Scheme, Icon-Theme und Font im post-install
- Alle Fonts (Hack, JetBrainsMono, MonarchOS) auf UbuntuSans Nerd Font
- Paketlisten: Colloid-Pakete statt catppuccin-gtk/newaita, ttf-ubuntusans-nerd
Configures screen dimming, DPMS, moonlock, and suspend timers
for AC and battery profiles. Includes app inhibit patterns for
media players, gaming, VMs, and rendering workloads.
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.