Niri is a Wayland compositor and tiling window manager designed for Linux systems. It functions as a display server that organizes application windows into a scrollable, column-based layout, providing a structured environment for managing graphical sessions, input routing, and hardware output.
The project distinguishes itself through a declarative configuration engine that enables live-reloading of settings, allowing users to modify window rules, input bindings, and visual appearance without restarting the session. It features a physics-based animation system that uses spring-based curves to synchronize window transitions and workspace switching with the monitor refresh rate. To ensure high performance, it utilizes a direct scanout pipeline that bypasses intermediate composition buffers, sending window content directly to the display hardware.
The compositor provides a comprehensive suite of tools for desktop management, including support for both tiling and floating window modes, tabbed organization, and dynamic workspace handling. It integrates with standard cross-desktop communication interfaces to support system services, accessibility tools, and legacy applications through an automated compatibility layer. Security is maintained through features like input restriction during session locks and the ability to obscure sensitive content during screen captures.
The system is configured through modular files that support imports and live updates. It is written in Rust and provides extensive documentation for managing display outputs, input devices, and custom visual effects.