QuickShell QML login greeter for greetd, styled after noctalia-shell lockscreen. Runs under niri compositor as _greeter user. Theme is live-synced from noctalia config via runit service. - shell.qml: QuickShell greeter UI + greetd auth flow - sync/: inotifywait theme sync daemon + runit service - greetd/: niri compositor config + wrapper scripts - install.sh: deployment helper - test/check-syntax.sh: 19 syntax/structural checks (0 failures) Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
66 lines
1.9 KiB
Markdown
66 lines
1.9 KiB
Markdown
# 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
|
|
```
|