Decision 0019
Niri compositor; `tacid-shell` in Iced on layer-shell
Architecture decision record 0019: Niri compositor; `tacid-shell` in Iced on layer-shell
Context
The graphical face must be quiet, minimal, keyboard-first, Wayland-native, controllable by the agent, and written in the project’s one language.
The three plans
- Grok: TUI is the desktop; an optional cage + single app later.
- Fable: Hyprland (“what the audience expects post-Omarchy”), waybar, ghostty, a GTK4/libadwaita panel with Relm4; Niri “worth watching”.
- Codex: Hyprland with an explicit NVIDIA workstream; Quickshell/QML for the shell; no gamer styling, no giant chat windows.
Decision
Niri: Rust on Smithay, scrollable tiling, clean JSON IPC, disciplined maintenance, built-in
xwayland-satellite integration since 25.08. tacid-shell in Iced with iced_layershell:
bar with badges, the Super+Space command surface (launch, search, ask in one box), the agent
panel with unforgeable approvals, notifications, curated settings. Ghostty (OSC 133 structured
sessions), Firefox, PipeWire, Neovim and Helix available. AccessKit accessibility is a requirement.
The graphics matrix includes NVIDIA explicit sync.
Consequences
- One language across the stack; the shell shares the protocol crate.
- Layer-shell plumbing is ours to own; libcosmic’s patterns are a reference, not a dependency, to keep Tacid’s identity.
- Hyprland users will ask; the answer is in this record.
Alternatives rejected
- Hyprland: larger ecosystem and audience expectation, but C++, churn, and a default aesthetic the design system would spend itself fighting.
- Quickshell/QML: fastest path to a beautiful shell; a second language and runtime in the core.
- libcosmic: solves layer-shell, applets and settings today, at the cost of COSMIC’s design
language; revisit if
iced_layershellstalls. - A compositor of our own on Smithay: the right long-term option only if Niri ever stops.