Files
command-center/omp-docs/tools/niri/index.md
Frank 8da6cdc9cd niri: fix screenshots on 2+ outputs — Mod+Shift+S captures all monitors
flameshot full dies docked: its portal path hits niri's
screenshot_all_outputs ensure!(outputs.len()==1) (upstream niri#4313,
niri 26.04), so every Print press on the home desk produces error
bubbles. niri's built-in screenshot UI selects only one output, so add
scripts/screenshot-desk.sh: per-monitor focus + screenshot-screen with
explicit --path, focus restored, one PNG per monitor in
~/Pictures/Screenshots. Bind Mod+Shift+S (Frank's call); noctalia
settings moves to Mod+Shift+O. Restore screenshot-path (was null, now
root-level as config.screenshot_path requires) for UI saves. Live-
verified docked: valid 1920x1080 PNGs for eDP-1 + DP-2, focus restored;
bats 27/27 incl. niri validate on both desk profiles.
2026-10-14 17:21:10 -07:00

4.1 KiB

Niri Wayland Compositor

Niri is a scrollable-tiling Wayland compositor. Windows are arranged in columns that scroll horizontally. It uses KDL-format configuration with an include-based modular structure.

Version: 26.04 (8ed0da4) Config: ~/.config/niri/config.kdl


Configuration Structure

~/.config/niri/
├── config.kdl          # Main entry, includes all modules
├── noctalia.kdl        # Generated by noctalia (theme colors)
└── cfg/
    ├── animation.kdl   # Spring and curve animations
    ├── autostart.kdl   # Startup applications (noctalia, handy --start-hidden)
    ├── display.kdl     # SYMLINK to the active desk-*.kdl profile (see displays)
    ├── desk-1-home.kdl      # Desk profile: home rig (EDID-keyed)
    ├── desk-2-portable.kdl  # Desk profile: portable monitor (skeleton)
    ├── input.kdl       # Keyboard, touchpad, mouse
    ├── keybinds.kdl    # All key bindings
    ├── layout.kdl      # Gaps, column widths, struts
    ├── rules.kdl       # Window and layer rules
    ├── switch-events.kdl # Lid-close -> noctalia lock-and-suspend (blankpad)
    └── misc.kdl        # Environment, cursor, blur

Layout

Column-based scrollable tiling. Columns are cycled with Mod+Left/Right (or Mod+H/L). Windows within columns stack vertically.

Setting Value
Gaps 16px
Center focused column Never
Background Transparent (for Noctalia wallpaper)
Column presets 12.5%, 25%, 33%, 50%, 67%, 75%, 87.5% (Mod+R / Mod+Shift+R)

Input

Setting Value
Focus follows mouse Enabled
Workspace back-and-forth Enabled
Numlock Enabled on startup
Touchpad tap Enabled

Window Rules

Rule Match Effect
All windows — 20px corner radius, clipped
Steam (non-window) app-id="steam", exclude title Steam Open floating
Steam notifications app-id="steam", title notificationtoasts_* Floating, bottom-right
Noctalia wallpaper namespace noctalia-wallpaper* Place in backdrop
Noctalia settings app-id="dev.noctalia.Noctalia" Floating 1080x920
Noctalia layers namespace `^noctalia-(bar notification

Environment Variables

Variable Value Purpose
ELECTRON_OZONE_PLATFORM_HINT auto Electron Wayland support
QT_QPA_PLATFORM wayland Qt Wayland
QT_QPA_PLATFORMTHEME gtk3 Qt GTK theme
QT_WAYLAND_DISABLE_WINDOWDECORATION 1 Remove Qt CSD
XDG_CURRENT_DESKTOP niri Desktop identification
XDG_SESSION_TYPE wayland Session type

Animations

Animation Type Parameters
Workspace switch Spring damping-ratio=1.0 stiffness=1000
Window open Duration 200ms, ease-out-quad
Window close Duration 200ms, ease-out-cubic
Window movement Spring damping-ratio=1.0 stiffness=800
Window resize Spring damping-ratio=1.0 stiffness=1000

Concept Files

File Type Description
[[action-reference action-reference.md]] reference
[[default-bindings default-bindings.md]] reference
[[key-bindings-syntax key-bindings-syntax.md]] reference
[[tips tips.md]] howto
[[displays displays.md]] reference
[[keybindings keybindings.md]] reference
[[screenshots screenshots.md]] reference

See Also