niri — Scrollable-Tiling Wayland Compositor in Rust | 2026-06-02
文章目录
- Most tiling window managers (i3, bspwm, Sway) use static or manual tiling — you decide where each window goes, or the manager auto-arranges them but forces resizing. niri's scrollable approach is genuinely different: it's more like an infinite canvas of columns, where each workspace is a vertical strip. When you open a new window, it appears in a new column to the right, untouched. You navigate by scrolling or switching workspaces, not by resizing panels. From a personal perspective, after spending years with i3 and Sway, niri feels like the natural evolution. The learning curve is gentle — you can use it mostly like a regular desktop after basic configuration. But the power-user features (workspace management, multi-monitor handling, keyboard-driven everything) are there when you want them. The built-in screenshot UI, overview mode, and blur effects also mean you don't need a dozen external tools to have a polished desktop.
- niri is built from the ground up for scrollable tiling. Key concepts: windows are arranged in columns on an infinite strip going right; opening a new window never resizes existing ones; each monitor has its own separate window strip; workspaces are dynamic and arranged vertically; and there's always at least one empty workspace available at the bottom. Standout features include dynamic workspaces (like GNOME), an Overview mode that zooms out to show all windows, built-in screenshot UI, monitor and window screencasting via xdg-desktop-portal, touchpad and mouse gestures, window tabbing, configurable gaps/borders/struts, gradient borders with Oklab/Oklch color support, and background blur for windows and layer-shell surfaces. Configuration is done through a single TOML file — no Lua, no config syntax learning curve.
- Power Users with Many Windows: Developers, traders, researchers who routinely have 10+ windows open across multiple monitors benefit most from scrollable tiling — no more cramped panels. Multi-Monitor Setups: niri handles multiple monitors with independent workspace strips per monitor, and preserves workspace arrangement across monitor reconnections — a genuinely thoughtful design. Linux Desktop Customization Enthusiasts: The TOML configuration, blur effects, gradient borders, and keyboard-driven workflow appeal to users who want full control over their desktop environment without the complexity of tools like Hyprland.
- # Install niri (requires Rust toolchain) cargo install niri # Or via Homebrew brew install niri-wm/tap/niri # Run from a TTY (not from within a display manager) niri # Basic config: ~/.config/niri/config.kdl # Example configuration: monitor "DP-1" { width 2560 height 1440 scale 1.0 } spawn "waybar" # auto-start waybar # Keybindings (defaults shown) # Mod+Enter = new terminal # Mod+1-9 = switch workspace # Mod+Scroll = scroll window list
- Scrollable Tiling Architecture: Unlike any other tiling WM, niri uses an infinite horizontal strip of columns. Windows never resize — you scroll to find them, making it ideal for workflows with many concurrent windows. Rust + Smithay Stack: Built on the Smithay wayland compositor framework in Rust, giving memory safety guarantees and excellent performance without garbage collection pauses. Native Blur and Visual Polish: The recent blur implementation (#3483, 162 comments) brings KDE-style window blur effects to Wayland, rivaling Hyprland's visual customization without the Lua complexity.
- 24809 total stars | Active development | Growing community
- Compared to Sway (i3-compatible Wayland compositor), niri offers a fundamentally different tiling model — scrollable vs. b-tree. Sway is more stable and battle-tested, but niri's approach feels more natural for certain workflows. Compared to Hyprland, niri uses TOML configuration (vs. Hyprland's Lua) and has a cleaner, less feature-bloated codebase — but Hyprland has more animation and visual customization options. If you value stability and simplicity, Sway wins; if you want the scrollable model with modern visual polish, niri is your pick.
- Issue #3483 — 162 comments | State: closed The blur implementation PR was a landmark moment for niri. A contributor implemented window background blur with xray and non-xray effects using the ext-background-effect protocol. The 162-comment discussion covered implementation approaches, edge cases (like blur behind rounded-corner windows), and performance considerations. The maintainer eventually merged it after extensive testing — this is a great example of community-driven feature development in open-source. Users report blur works beautifully with most GTK and Qt applications, though some older XWayland apps may show artifacts. Issue #3246 — 140 comments | State: open Cursor zoom is an accessibility feature that applies a zoom transform to the entire compositor. With 140 comments, this has become a significant discussion around the implementation approach — whether to zoom the cursor itself or just the screen content, how to handle multi-monitor setups, and what API to expose via IPC. The community is actively debating the UX of this feature, with several users sharing personal use cases (visual impairment, high-DPI setups). This shows niri's commitment to accessibility beyond the typical tiling WM audience. Issue #1634 — 101 comments | State: closed This was an early attempt at blur implementation from a first-time Rust contributor. The discussion is notable because it shows how the niri community welcomed a newcomer: maintainers patiently reviewed code, suggested idiomatic Rust patterns, and guided the contributor through Smithay's compositor architecture. The PR was eventually superseded by the better #3483 implementation, but the mentorship aspect of this thread is a testament to the project's healthy community.
- No auto-tiling by default: niri does not automatically resize windows like i3's auto mode. To get auto-tiling, you need to manually arrange windows or use workspace-based layouts. The scrollable model is intentional — embrace it rather than fighting it. Blender applications and blur: Some Electron apps (Slack, VS Code) have compatibility issues with niri's blur effects. Disable blur per-window or globally in the config if you see rendering artifacts: window { blur: off; } Multi-monitor hotplug: niri handles monitor disconnect/reconnect well, but if your monitors have different DPI scales, you may need to configure per-monitor scale values in the TOML config explicitly.
- niri is not just another tiling window manager — it rethinks the fundamental model. The scrollable tiling approach solves a real pain point for power users who juggle many windows, and the Rust + Smithay foundation gives it a solid technical foundation. Active development, an engaged community (evidenced by 420+ open issues), and impressive recent features like blur and cursor zoom suggest niri is only getting started. If you want a modern Wayland compositor that is both powerful and visually refined, niri deserves serious consideration. Related: Charm Crush — Agentic Terminal AI Coding Assistant | 2026-06-02 Related: 🔥 vite — Next generation frontend tooling Related: Flow Launcher - C# GitHub Hot Open Source Project Recommendation | 2026-06-02 GitHub trending open-source projects: Developer Tools | DevOps & Cloud
If you have ever used a tiling window manager on Linux, you know the pain: opening a new terminal resizes everything. niri solves this elegantly with its unique scrollable tiling approach — windows stack horizontally on an infinite strip, and new windows never squeeze existing ones. You just scroll to see them. Today we're exploring niri-wm/niri, a Rust-powered Wayland compositor that is redefining what a modern Linux desktop can feel like.
Most tiling window managers (i3, bspwm, Sway) use static or manual tiling — you decide where each window goes, or the manager auto-arranges them but forces resizing. niri's scrollable approach is genuinely different: it's more like an infinite canvas of columns, where each workspace is a vertical strip. When you open a new window, it appears in a new column to the right, untouched. You navigate by scrolling or switching workspaces, not by resizing panels.
From a personal perspective, after spending years with i3 and Sway, niri feels like the natural evolution. The learning curve is gentle — you can use it mostly like a regular desktop after basic configuration. But the power-user features (workspace management, multi-monitor handling, keyboard-driven everything) are there when you want them. The built-in screenshot UI, overview mode, and blur effects also mean you don't need a dozen external tools to have a polished desktop.
niri is built from the ground up for scrollable tiling. Key concepts: windows are arranged in columns on an infinite strip going right; opening a new window never resizes existing ones; each monitor has its own separate window strip; workspaces are dynamic and arranged vertically; and there's always at least one empty workspace available at the bottom.
Standout features include dynamic workspaces (like GNOME), an Overview mode that zooms out to show all windows, built-in screenshot UI, monitor and window screencasting via xdg-desktop-portal, touchpad and mouse gestures, window tabbing, configurable gaps/borders/struts, gradient borders with Oklab/Oklch color support, and background blur for windows and layer-shell surfaces. Configuration is done through a single TOML file — no Lua, no config syntax learning curve.
- Power Users with Many Windows: Developers, traders, researchers who routinely have 10+ windows open across multiple monitors benefit most from scrollable tiling — no more cramped panels.
- Multi-Monitor Setups: niri handles multiple monitors with independent workspace strips per monitor, and preserves workspace arrangement across monitor reconnections — a genuinely thoughtful design.
- Linux Desktop Customization Enthusiasts: The TOML configuration, blur effects, gradient borders, and keyboard-driven workflow appeal to users who want full control over their desktop environment without the complexity of tools like Hyprland.
# Install niri (requires Rust toolchain)
cargo install niri
# Or via Homebrew
brew install niri-wm/tap/niri
# Run from a TTY (not from within a display manager)
niri
# Basic config: ~/.config/niri/config.kdl
# Example configuration:
monitor "DP-1" {
width 2560
height 1440
scale 1.0
}
spawn "waybar" # auto-start waybar
# Keybindings (defaults shown)
# Mod+Enter = new terminal
# Mod+1-9 = switch workspace
# Mod+Scroll = scroll window list
# Install niri (requires Rust toolchain)
cargo install niri
# Or via Homebrew
brew install niri-wm/tap/niri
# Run from a TTY (not from within a display manager)
niri
# Basic config: ~/.config/niri/config.kdl
# Example configuration:
monitor "DP-1" {
width 2560
height 1440
scale 1.0
}
spawn "waybar" # auto-start waybar
# Keybindings (defaults shown)
# Mod+Enter = new terminal
# Mod+1-9 = switch workspace
# Mod+Scroll = scroll window list
- Scrollable Tiling Architecture: Unlike any other tiling WM, niri uses an infinite horizontal strip of columns. Windows never resize — you scroll to find them, making it ideal for workflows with many concurrent windows.
- Rust + Smithay Stack: Built on the Smithay wayland compositor framework in Rust, giving memory safety guarantees and excellent performance without garbage collection pauses.
- Native Blur and Visual Polish: The recent blur implementation (#3483, 162 comments) brings KDE-style window blur effects to Wayland, rivaling Hyprland's visual customization without the Lua complexity.
24809 total stars | Active development | Growing community
Compared to Sway (i3-compatible Wayland compositor), niri offers a fundamentally different tiling model — scrollable vs. b-tree. Sway is more stable and battle-tested, but niri's approach feels more natural for certain workflows. Compared to Hyprland, niri uses TOML configuration (vs. Hyprland's Lua) and has a cleaner, less feature-bloated codebase — but Hyprland has more animation and visual customization options. If you value stability and simplicity, Sway wins; if you want the scrollable model with modern visual polish, niri is your pick.
Issue #3483 — 162 comments | State: closed
The blur implementation PR was a landmark moment for niri. A contributor implemented window background blur with xray and non-xray effects using the ext-background-effect protocol. The 162-comment discussion covered implementation approaches, edge cases (like blur behind rounded-corner windows), and performance considerations. The maintainer eventually merged it after extensive testing — this is a great example of community-driven feature development in open-source. Users report blur works beautifully with most GTK and Qt applications, though some older XWayland apps may show artifacts.
Issue #3246 — 140 comments | State: open
Cursor zoom is an accessibility feature that applies a zoom transform to the entire compositor. With 140 comments, this has become a significant discussion around the implementation approach — whether to zoom the cursor itself or just the screen content, how to handle multi-monitor setups, and what API to expose via IPC. The community is actively debating the UX of this feature, with several users sharing personal use cases (visual impairment, high-DPI setups). This shows niri's commitment to accessibility beyond the typical tiling WM audience.
Issue #1634 — 101 comments | State: closed
This was an early attempt at blur implementation from a first-time Rust contributor. The discussion is notable because it shows how the niri community welcomed a newcomer: maintainers patiently reviewed code, suggested idiomatic Rust patterns, and guided the contributor through Smithay's compositor architecture. The PR was eventually superseded by the better #3483 implementation, but the mentorship aspect of this thread is a testament to the project's healthy community.
- No auto-tiling by default: niri does not automatically resize windows like i3's auto mode. To get auto-tiling, you need to manually arrange windows or use workspace-based layouts. The scrollable model is intentional — embrace it rather than fighting it.
- Blender applications and blur: Some Electron apps (Slack, VS Code) have compatibility issues with niri's blur effects. Disable blur per-window or globally in the config if you see rendering artifacts:
window { blur: off; }
- Multi-monitor hotplug: niri handles monitor disconnect/reconnect well, but if your monitors have different DPI scales, you may need to configure per-monitor scale values in the TOML config explicitly.
window { blur: off; }niri is not just another tiling window manager — it rethinks the fundamental model. The scrollable tiling approach solves a real pain point for power users who juggle many windows, and the Rust + Smithay foundation gives it a solid technical foundation. Active development, an engaged community (evidenced by 420+ open issues), and impressive recent features like blur and cursor zoom suggest niri is only getting started. If you want a modern Wayland compositor that is both powerful and visually refined, niri deserves serious consideration.
Related: Charm Crush — Agentic Terminal AI Coding Assistant | 2026-06-02
Related: 🔥 vite — Next generation frontend tooling
Related: Flow Launcher - C# GitHub Hot Open Source Project Recommendation | 2026-06-02
GitHub trending open-source projects: Developer Tools | DevOps & Cloud