TacidOS
DevelopersGitHub

Decision 0019

Niri compositor; `tacid-shell` in Iced on layer-shell

Architecture decision record 0019: Niri compositor; `tacid-shell` in Iced on layer-shell

Status
Accepted
Date
2026-09-03

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_layershell stalls.
  • A compositor of our own on Smithay: the right long-term option only if Niri ever stops.