# noctalia-greeter A QuickShell QML login greeter for [greetd](https://git.sr.ht/~kennylevinsen/greetd), styled to match the [noctalia-shell](https://github.com/nocturnalastro/noctalia-shell) lockscreen. ## Architecture ``` greetd (VT7, _greeter user) └── dbus-run-session niri --config /etc/greetd/niri-greeter.kdl └── /etc/greetd/start-greeter.sh └── qs -c ~/.config/noctalia-greeter/ (shell.qml) reads /var/lib/noctalia-greeter-theme/{colors.json,wallpaper.jpg} noctalia-greeter-sync (runit, moze user) inotifywait ~/.config/noctalia/ + ~/.cache/noctalia/ → copies colors.json + wallpaper on any noctalia style change → writes to /var/lib/noctalia-greeter-theme/ (world-readable) ``` The `_greeter` user never touches `/home/moze`. Theme data is staged to a world-readable directory by the sync service running as moze. ## Files | Source | Deployed to | |--------|-------------| | `shell.qml` | `~/.config/noctalia-greeter/shell.qml` | | `sync/noctalia-greeter-sync` | `/usr/local/bin/noctalia-greeter-sync` | | `sync/run` | `/etc/sv/noctalia-greeter-sync/run` | | `greetd/niri-greeter.kdl` | `/etc/greetd/niri-greeter.kdl` | | `greetd/start-greeter.sh` | `/etc/greetd/start-greeter.sh` | | `greetd/config.toml.example` | `/etc/greetd/config.toml` (edit before deploying) | ## Install ```sh sudo ./install.sh ``` Requires: `greetd`, `niri`, `quickshell` (`qs`), `dbus`, `inotify-tools`. ## Rollback Edit `/etc/greetd/config.toml`: ```toml [terminal] vt = 7 [default_session] command = "sway --config /etc/greetd/sway-greeter.conf" user = "_greeter" ``` ## Theme sync Change colors/wallpaper in noctalia shell → greeter auto-updates next login (no restart needed). The sync service watches: - `~/.config/noctalia/colors.json` - `~/.cache/noctalia/wallpapers.json` ## Tests ```sh ./test/check-syntax.sh ```