Commit Graph
84 Commits
Author SHA1 Message Date
nevaforget 3aff1b3438 feat: enable always-center-single-column in niri layout 2026-04-08 14:10:26 +02:00
nevaforget 0946eb3af3 fix: audit remediation — security, quality and performance fixes
- 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
nevaforget 56df08f4f0 fix: rename battery group to avoid CSS ID conflict, clean up waybar styles
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.
2026-04-08 10:45:34 +02:00
nevaforget 1ebe0fac2b feat: add battery conservation mode with Waybar toggle
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
nevaforget 2d2d3ca92f fix: show bluetooth icon instead of status text in Waybar
The bluetooth module displayed " {status}" (icon + text like
"on"/"off") which was inconsistent with other icon-only modules.
2026-04-07 17:28:15 +02:00
nevaforget 81d1c509b3 refactor: clean up Waybar styles, remove user-defaults mechanism
- 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.
2026-04-07 17:27:47 +02:00
nevaforget e922c3daf2 docs: update README and DECISIONS for Walker moonarch theme 2026-04-07 13:13:44 +02:00
nevaforget e853b78b9d feat: rename Walker theme to moonarch, add explicit Catppuccin colors
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
2026-04-07 13:11:06 +02:00
nevaforget 7d84d8104c docs: update README and DECISIONS for archinstall v4 and kanshi fixes 2026-04-07 12:24:07 +02:00
nevaforget a131874634 fix: prevent kanshi config from breaking wdisplays-persistent
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.
2026-04-07 12:23:06 +02:00
nevaforget 20414958fd Migrate archinstall config to v4 format
archinstall v4.1 introduced new canonical key names. Update
user_configuration.json to the current schema:
- audio_config → nested under app_config
- bootloader → bootloader_config with explicit uki flag
- gfx_driver value updated to "All open-source (default)"
- custom-commands → custom_commands (underscore)
2026-04-07 11:56:01 +02:00
nevaforget 955486c7a8 docs: fix remaining stale references in README and CLAUDE.md
- scripts/: replace update.sh with moonarch-update, fix description
- Update section: remove stale "syncs repo, deploys XDG" claim
- User services: add stasis to table
- CLAUDE.md: mention systemd user services in defaults/ description
2026-04-07 11:37:44 +02:00
nevaforget 8632cc9767 docs: update README for swaync, cliphist service, /usr/bin paths
- dunst → swaync throughout
- Clipboard section: cliphist + Walker, wiped on session start
- Helper scripts: /usr/local/bin → /usr/bin (package-managed)
- User services: moved to /etc/systemd/user/, added cliphist/nautilus
- Startup diagram: swaync, nm-applet, systemd services listed
- moonarch-dnd removed (dunst-specific)
2026-04-07 11:34:30 +02:00
nevaforget 8c8fe4b892 feat: add cliphist service, move user services to /etc/systemd/user/
- 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
2026-04-07 11:27:49 +02:00
nevaforget 4e2b1a4140 fix: move paru repo config into moonarch.install to break bootstrap loop
The paru PKGBUILD repo config was only set up by post-install.sh and
transform.sh. If the config was missing on an existing system,
moonarch-git couldn't update — the fix required the package that
delivers the fix.

Now moonarch.install sets up the config on every install/upgrade.
post-install.sh keeps it for first-time bootstrap (before moonarch-git
exists). transform.sh no longer manages it.
2026-04-07 11:11:58 +02:00
nevaforget 9c460a561a fix: audit remediation — 6 fixes across quality, performance, security
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
nevaforget 70468d078e fix: remove duplicate VPN notifications from moonarch-vpn
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
nevaforget 9f22f4ac36 Add nautilus preload service for faster file manager startup
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
2026-04-07 09:03:18 +02:00
nevaforget b4338f863b fix: harden GPG key import with fingerprint verification and cleanup
The registry signing key was imported without verifying its fingerprint,
allowing a MITM or compromised server to inject a rogue key. Now checks
the downloaded key against a pinned fingerprint before import. Also adds
trap EXIT for tempfile cleanup and rejects empty curl responses.
2026-04-06 23:08:01 +02:00
nevaforget 5beb9d2c80 fix: enable stasis idle manager in user services
stasis ships its own systemd user service but was missing from the
USER_SERVICES array in both post-install and transform scripts.
2026-04-06 22:55:33 +02:00
nevaforget 58466819c3 Fix swaync fullscreen background by raising CSS priority to user level
libadwaita overrides application-level CSS, causing a visible
background behind the control center overlay. Setting cssPriority
to "user" ensures custom styles take precedence.
2026-04-02 12:03:04 +02:00
nevaforget b8088a0450 fix: remove -- from nmcli calls in moonarch-vpn
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
nevaforget 5fd70c48de Add rebuild-detector to system packages
Detects AUR packages broken by shared library upgrades (Python, OpenSSL,
etc.) so they can be rebuilt promptly after system updates.
2026-04-02 10:20:04 +02:00
nevaforget 66342bbb75 Fix paru PKGBUILD repo name collision with pacman registry
Both the pacman package registry and the paru PKGBUILD repo used
[moonarch] as section name, causing paru to fail resolving PKGBUILD
upgrade targets against the wrong repo. Renamed PKGBUILD repo to
[moonarch-pkgbuilds] and moved config from ~/.config/paru/paru.conf
to system-wide /etc/paru.conf.
2026-04-02 08:52:26 +02:00
nevaforget c8fa259b00 Move GTK theme from moongreet config to system-wide gtk-4.0 settings
Remove gtk-theme from moongreet.toml and set gtk-theme-name and
gtk-icon-theme-name in /etc/xdg/gtk-4.0/settings.ini instead.
2026-04-02 08:27:56 +02:00
nevaforget 2c58a46d54 Fix swaync theme to use upstream compiled CSS from catppuccin/swaync v1.0.1
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.
2026-04-01 19:11:31 +02:00
nevaforget dd502a2afc Add gtk-theme to moongreet config for greeter session
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.
2026-04-01 18:50:23 +02:00
nevaforget 0016ae28e1 Add Moonarch package registry setup with signed packages
Import Gitea Arch registry key dynamically and configure pacman
with SigLevel = Required DatabaseOptional. Key ID is extracted
from the downloaded key file to avoid hardcoding.
2026-04-01 18:09:10 +02:00
nevaforget 40d0652bc0 Add custom Arch-based act_runner image
Runner based on archlinux:base-devel with git, curl, makepkg.
Runs as non-root builder user so makepkg works natively without
permission workarounds. Registration data stored in /data volume.
2026-04-01 18:09:09 +02:00
nevaforget 3b30c0998d Add custom Arch-based act_runner image, revert workflow workaround
The runner image is now built on archlinux:base-devel with git,
curl, makepkg and a non-root builder user baked in. This removes
the need for per-workflow pacman installs and enables host mode.
2026-04-01 18:09:09 +02:00
nevaforget cbc92b2e5b Fix CI: install git in Arch container for update-pkgver
The runner now uses docker mode with archlinux:base-devel which
does not include git by default.
2026-04-01 18:09:09 +02:00
nevaforget 42a0161e8e Fix swaync notification icon size in waybar
Remove explicit 16pt Pango span wrapper so the icon inherits
the default waybar font size, matching all other modules.
2026-04-01 15:31:27 +02:00
nevaforget 99c1f7d4ed Add CI workflow to auto-update pkgver in moonarch-pkgbuilds
Same pattern as moongreet/moonlock/moonset — pushes to main
trigger a pkgver bump so paru detects updates.
2026-04-01 14:59:33 +02:00
nevaforget 3b1da575e4 Add swaync notification widget to waybar, remove dunst remnants
custom/notification (swaync-client) was defined but not in the
module list. Replaces the removed custom/dnd (dunstctl) slot.
2026-04-01 14:44:27 +02:00
nevaforget 82bdbd066d Replace dunst with swaync for fractional scaling support
Dunst lacks wp_fractional_scale_v1, causing jagged font rendering
on external monitors in mixed-DPI setups (laptop 2.5x + externals 1x).
swaync (GTK4) handles fractional scaling natively.

Style based on catppuccin/swaync with Lavender accent.
2026-04-01 14:41:42 +02:00
nevaforget 2f6db914f3 Swap moonset and keyboard-shortcuts-inhibit keybindings
Mod+Escape is more intuitive for the session/power menu,
Super+Alt+L moves to keyboard shortcuts inhibit toggle.
2026-04-01 14:41:36 +02:00
nevaforget 34317ab94e Add OpenMoji emoji font to AUR package list 2026-03-31 12:49:59 +02:00
nevaforget cd58f54477 Pin linux-zen kernel in archinstall config, add quiet boot param
- Set kernels to linux-zen in user_configuration.json to skip
  interactive kernel selection during install
- Add post-install step to append quiet to non-fallback systemd-boot
  entries for clean boot output
2026-03-31 11:17:36 +02:00
nevaforget 2e3e5eb652 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
nevaforget 6b1a9ab3b4 Fix xdg-desktop-portal-gtk spam in greeter session
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.
2026-03-31 10:35:37 +02:00
nevaforget 418111713c Use system zsh plugins, remove redundant waybar network modules
- 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
2026-03-31 10:27:53 +02:00
nevaforget 5182af33f5 Remove non-existent walker providers, add nirisessions set
Remove prefixes and actions for providers not installed as
elephant packages: windows, symbols, websearch, archlinuxpkgs.
Add provider set for nirisessions.
2026-03-31 09:58:13 +02:00
nevaforget 19aaef5602 docs: fix README, remove gtklock and wlogout remnants
README: fix keybind (wlogout → moonset), remove gtklock from project
structure, correct package counts, remove nonexistent install-themes.sh,
mark update.sh as legacy wrapper.
Remove gtklock packages (5) and wlogout from package lists.
Remove defaults/xdg/gtklock/ config directory.
Remove stale foot/waybar overrides from transform.sh.
2026-03-31 09:36:20 +02:00
nevaforget 6bf3b6578f Deploy moonarch config overrides for walker, foot, and waybar
These configs are owned by their respective packages in /etc/xdg/ so
the XDG copy loop installs the package defaults instead of ours.
Overwrite with moonarch versions from /usr/share/moonarch/ after the
loop.
2026-03-30 23:45:52 +02:00
nevaforget 0d3b57cd56 Fix GTK4 theme comment to match Grey accent 2026-03-30 23:34:26 +02:00
nevaforget 4024ad448c Remove packages from aur.txt that are hard deps of moonarch-git
walker-bin, elephant-bin, stasis, colloid-catppuccin-gtk-theme-git,
and waypaper are already pulled in as dependencies of moonarch-git.
Duplicating them in aur.txt caused package conflicts during transform.
2026-03-30 23:09:36 +02:00
nevaforget b7d998315a Install packages from package lists in transform script
The pre-flight summary already computed missing packages but never
installed them. Now installs both official and AUR packages after
moonarch-git.
2026-03-30 23:03:58 +02:00
nevaforget 2c05c81a73 Replace timeshift with snapper + snap-pac for btrfs snapshots
snap-pac provides automatic pre/post snapshots on pacman transactions
via pacman hook.
2026-03-30 22:59:46 +02:00
nevaforget 0a4ca1ed47 Fix foot terminal font: use monospace variant of UbuntuSans NF 2026-03-30 22:56:33 +02:00
nevaforget fbd18d7d62 Fix transform failing on root-owned XDG config dirs
cp -r from /etc/xdg/ preserved root ownership on directories,
causing rm -rf to fail on subsequent runs. Add --no-preserve=ownership
to cp and escalated rm fallback for existing root-owned dirs.
2026-03-30 22:49:42 +02:00