X Linux
Documentation menu

Overview/Scripts and CLI

x — niri/equisdots setup tool

tools/niri-install.sh is the non-interactive niri/equisdots desktop setup for X Linux. It runs as the target user (never as root) and delegates the stack to the official equisdots/niri-meta meta installer (dotsniri) in online mode. The text installer selects it with desktop=niri; it is not part of the x setup --user phase.

What it does

  1. Clones or updates equisdots/niri-meta in the per-user cache ($XDG_CACHE_HOME/x/niri-meta, ref main by default).
  2. Runs dotsniri setup -y: installs the niri stack packages (niri, xwayland-satellite, quickshell, portals, session tools, fonts, ...), clones the owned/shared equisdots repos, deploys the shared Quickshell shell, niri overlays, plugins, app configs, user units and the niri session entry.
  3. Selects niri as the default desktop (dotsniri desktop niri).
  4. Installs the X/equisdots static SDDM login theme (from the shared equisdots/login clone) and enables sddm.

The equisdots repositories are read-only inputs; nothing under the equisdots org is modified. The shared data root remains ~/.config/hypr; the niri compositor config lives in ~/.config/niri.

Hardware requirement

niri renders through EGL/GBM and skips software EGL renderers. It needs a GPU with working hardware acceleration. In a VM, enable 3D acceleration (for example virtio-vga-gl/VirGL); otherwise niri starts without a renderer and shows no usable output. Hyprland can use software rendering and may still work on the same VM.

Environment

VariableDefaultMeaning
X_NIRI_REFmainniri-meta branch/ref to clone/update.
X_NIRI_CACHE_DIR$XDG_CACHE_HOME/xclone cache.
X_NIRI_DRYRUN0print the plan without touching the system.
X_NIRI_SKIP_LOGIN0do not install the SDDM theme / enable sddm.

The text installer creates a temporary %wheel NOPASSWD: ALL sudoers file for the duration of the setup, because dotsniri installs packages, PAM, the session entry and the login theme with sudo.

The installed wrapper is ~/.local/bin/dotsniri; invoke it with the full path if ~/.local/bin is not on your PATH.

Validation

bash -n tools/niri-install.sh
X_NIRI_DRYRUN=1 tools/niri-install.sh
niri validate -c ~/.config/niri/config.kdl
~/.local/bin/dotsniri doctor

See also

Edit this page on GitHub