- remove 'include noctalia.kdl' from shared config.kdl: the file is a per-host noctalia template render (colors from local palette), was never committed, and made every config load fail hard on hosts where it was absent — niri 26.04 falls back to DEFAULT config on parse error, silently killing keybinds/rules/layout/autostart - theme integration now only via keybinds (noctalia msg verbs) + the host-local rendered files (see managed skill noctalia-template-offline-render) - sync agent memories: delete retired memory-store skills, add new ones
2.8 KiB
2.8 KiB
name, description
| name | description |
|---|---|
| noctalia-template-offline-render | Recover from missing noctalia-generated theme files (niri noctalia.kdl include, ghostty/alacritty noctalia theme) using the offline noctalia theme --render CLI when msg templates-apply is a no-op |
Noctalia template offline render
Failure signature
- niri:
failed to read included config from ~/.config/niri/noctalia.kdl: No such file or directory; desktop runs but with DEFAULT config (niri 26.04 falls back, does not exit): no custom keybinds/rules, no noctalia autostart, default output placement. - ghostty:
theme "noctalia" not found, tried ~/.config/ghostty/themes/noctalia. - alacritty: import of
~/.config/alacritty/themes/noctalia.tomlmissing.
Root cause pattern
Upstream dotfiles commits theme switches (niri include, ghostty theme = noctalia, alacritty import) that depend on noctalia TEMPLATE-GENERATED files. Those files are per-host outputs (rendered from the local palette) and are intentionally NOT in the repo. On any host where templates-apply never ran, they don't exist.
Fix (offline, works while a session runs)
Built-in templates live at /usr/share/noctalia/assets/templates/ and are declared in builtin.toml. Render each needed one with the live palette:
# niri include (plain host-local file; do NOT symlink into repo — regenerated per host)
noctalia theme --theme-json ~/.config/noctalia/colors.json \
--render "/usr/share/noctalia/assets/templates/niri/niri.kdl:$HOME/.config/niri/noctalia.kdl"
# ghostty
mkdir -p ~/.config/ghostty/themes && \
noctalia theme --theme-json ~/.config/noctalia/colors.json \
--render "/usr/share/noctalia/assets/templates/ghostty/ghostty:$HOME/.config/ghostty/themes/noctalia"
# alacritty
mkdir -p ~/.config/alacritty/themes && \
noctalia theme --theme-json ~/.config/noctalia/colors.json \
--render "/usr/share/noctalia/assets/templates/alacritty/alacritty.toml:$HOME/.config/alacritty/themes/noctalia.toml"
All template tokens (primary, surface, error, primary_container, …) resolve from the flat 16-key colors.json; container tokens are derived, never blank.
Verify
niri validate→ "config is valid" (rc 0)ghostty +validate-config→ rc 0- On next login: journal shows
loaded config from config.kdlwith NO parse WARN, custom output placement (compareniri msg outputsvs display.kdl), noctalia autostarted (pgrep noctalia).
Traps
noctalia msg templates-applyon 5.0.1 returns "ok" but applies NOTHING (opt-in config schema this build does not act on). Do not trust its exit code.- Niri config errors at boot are NOT fatal — the compositor keeps running on defaults, which looks like "some settings silently stopped working", not a crash.
- Regenerate after any palette change; the rendered files are static snapshots.