# niri-wm/niri

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/niri-wm-niri).**

20,069 stars · 699 forks · Rust · gpl-3.0

## Links

- GitHub: https://github.com/niri-wm/niri
- Homepage: https://niri-wm.github.io/niri/
- awesome-repositories: https://awesome-repositories.com/repository/niri-wm-niri.md

## Topics

`rust` `smithay` `tiling-window-manager` `wayland` `wayland-compositor`

## Description

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.

## Tags

### DevOps & Infrastructure

- [Tiling Window Managers](https://awesome-repositories.com/f/devops-infrastructure/tiling-window-managers.md) — Organizes application windows into a scrollable, column-based tiling layout. ([source](https://niri-wm.github.io/niri/Getting-Started.html))
- [Workspace Navigation](https://awesome-repositories.com/f/devops-infrastructure/workspace-managers/workspace-navigation.md) — Move focus between windows, columns, monitors, and workspaces using keyboard shortcuts to traverse the desktop environment efficiently. ([source](https://niri-wm.github.io/niri/Getting-Started.html))
- [Declarative Configuration Engines](https://awesome-repositories.com/f/devops-infrastructure/configuration-management/declarative-configuration-frameworks/declarative-configuration-engines.md) — Uses a declarative configuration engine to enable live-reloading of window rules and settings.
- [Window Geometry Managers](https://awesome-repositories.com/f/devops-infrastructure/window-geometry-managers.md) — Enables managing window geometry, including floating positions and tiling constraints. ([source](https://niri-wm.github.io/niri/Configuration%3A-Window-Rules.html))
- [Legacy Workflow Supports](https://awesome-repositories.com/f/devops-infrastructure/dependency-management/compatibility-layers/legacy-workflow-supports.md) — Supports legacy X11 software through automated compatibility layers and protocol translation. ([source](https://niri-wm.github.io/niri/Xwayland.html))
- [Drag-and-Drop Layout Interactions](https://awesome-repositories.com/f/devops-infrastructure/tiling-window-managers/drag-and-drop-layout-scrolling/drag-and-drop-layout-interactions.md) — Enables workspace switching and layout scrolling through drag-and-drop operations at screen edges. ([source](https://niri-wm.github.io/niri/Gestures.html))
- [Window Dimension Constraints](https://awesome-repositories.com/f/devops-infrastructure/window-geometry-managers/window-dimension-constraints.md) — Allows setting default window widths and toggling between preset proportions or fixed sizes. ([source](https://niri-wm.github.io/niri/Configuration%3A-Layout.html))

### Operating Systems & Systems Programming

- [Display Compositors](https://awesome-repositories.com/f/operating-systems-systems-programming/display-windowing/display-compositors.md) — Acts as a display server that manages window placement, input routing, and graphical output. ([source](https://niri-wm.github.io/niri/Xwayland.html))
- [Tiling Window Managers](https://awesome-repositories.com/f/operating-systems-systems-programming/display-windowing/tiling-window-managers.md) — Organizes application windows into efficient, keyboard-driven column layouts with support for tiling and floating modes.
- [Column-Based Tiling](https://awesome-repositories.com/f/operating-systems-systems-programming/display-windowing/tiling-window-managers/column-based-tiling.md) — Organizes application windows into a scrolling, column-based layout. ([source](https://niri-wm.github.io/niri/))
- [Desktop Environment Components](https://awesome-repositories.com/f/operating-systems-systems-programming/desktop-environment-frameworks/desktop-environment-components.md) — Functions as a graphical platform for Linux that manages windows, input devices, and display outputs. ([source](https://niri-wm.github.io/niri/Getting-Started.html))
- [Direct Scanout Controllers](https://awesome-repositories.com/f/operating-systems-systems-programming/direct-scanout-controllers.md) — Manages direct scanout behavior for overlay planes to bypass intermediate buffers and optimize display performance. ([source](https://niri-wm.github.io/niri/Configuration%3A-Debug-Options.html))
- [Direct Scanout Pipelines](https://awesome-repositories.com/f/operating-systems-systems-programming/direct-scanout-pipelines.md) — Optimizes display performance by sending window content directly to the hardware display controller.
- [Configuration Engines](https://awesome-repositories.com/f/operating-systems-systems-programming/display-windowing/display-compositors/configuration-engines.md) — Enables building and customizing the desktop environment through a declarative, live-reloading configuration engine.
- [Floating Window Management](https://awesome-repositories.com/f/operating-systems-systems-programming/display-windowing/tiling-window-managers/floating-window-management.md) — Supports floating window modes that exist independently of the primary column-based workspace structure. ([source](https://niri-wm.github.io/niri/Floating-Windows.html))
- [Legacy Display Compatibility Layers](https://awesome-repositories.com/f/operating-systems-systems-programming/legacy-display-compatibility-layers.md) — Connect legacy software to the compositor by integrating compatibility layers that translate older display protocols into modern formats for consistent window management. ([source](https://niri-wm.github.io/niri/Important-Software.html))
- [Session Management](https://awesome-repositories.com/f/operating-systems-systems-programming/session-management.md) — Provides controls for managing graphical session lifecycles, including session exit and state transitions. ([source](https://niri-wm.github.io/niri/Configuration%3A-Key-Bindings.html))
- [Desktop Integration](https://awesome-repositories.com/f/operating-systems-systems-programming/desktop-environment-frameworks/desktop-environment-components/desktop-integration.md) — Connects applications to standard system interfaces for file picking, settings, and secret management. ([source](https://niri-wm.github.io/niri/Important-Software.html))
- [Desktop Shells](https://awesome-repositories.com/f/operating-systems-systems-programming/desktop-environment-frameworks/desktop-environment-components/desktop-shells.md) — Positions interface elements like bars or launchers on specific display layers within the desktop shell. ([source](https://niri-wm.github.io/niri/Layer%E2%80%90Shell-Components.html))
- [Layer Surface Management](https://awesome-repositories.com/f/operating-systems-systems-programming/layer-surface-management.md) — Apply custom visual and functional rules to specific layer-shell surfaces based on their namespace or layer type. ([source](https://niri-wm.github.io/niri/Configuration%3A-Layer-Rules.html))
- [Server-Side Decoration Protocols](https://awesome-repositories.com/f/operating-systems-systems-programming/server-side-decoration-protocols.md) — Instructs applications to use system-provided borders and focus indicators for consistent visual appearance. ([source](https://niri-wm.github.io/niri/Configuration%3A-Miscellaneous.html))
- [Display Power Managers](https://awesome-repositories.com/f/operating-systems-systems-programming/system-administration-maintenance/system-power-utilities/display-power-managers.md) — Controls screen sleep and power state behavior for individual monitors. ([source](https://niri-wm.github.io/niri/Configuration%3A-Outputs.html))
- [Compatibility Layers](https://awesome-repositories.com/f/operating-systems-systems-programming/virtualization-emulation/legacy-system-preservation/compatibility-layers.md) — Controls the lifecycle of legacy compatibility layers to allow older applications to run seamlessly within a modern environment. ([source](https://niri-wm.github.io/niri/Configuration%3A-Miscellaneous.html))

### Development Tools & Productivity

- [Persistent Workspace Definitions](https://awesome-repositories.com/f/development-tools-productivity/workspace-management/project-workspaces/persistent-workspace-definitions.md) — Supports creating named, persistent workspaces that can be pinned to specific display outputs. ([source](https://niri-wm.github.io/niri/Configuration%3A-Named-Workspaces.html))
- [Workspace Overview Management](https://awesome-repositories.com/f/development-tools-productivity/workspace-management/workspace-overview-management.md) — Activate the workspace overview when the cursor is moved into a designated monitor corner, including during drag-and-drop actions. ([source](https://niri-wm.github.io/niri/Configuration%3A-Gestures.html))
- [Workspace Visualizers](https://awesome-repositories.com/f/development-tools-productivity/development-environment-management/development-environments/workspace-management/workspace-visualizers.md) — Provides a zoomed-out interface to view all active windows and workspaces for easier navigation and rearrangement. ([source](https://niri-wm.github.io/niri/Overview.html))
- [Interactive Window Manipulation](https://awesome-repositories.com/f/development-tools-productivity/window-managers/interactive-window-manipulation.md) — Enables interactive window movement, resizing, and layout toggling via mouse gestures. ([source](https://niri-wm.github.io/niri/Gestures.html))
- [Workspace Management](https://awesome-repositories.com/f/development-tools-productivity/workspace-management.md) — Supports dynamic workspace management, including runtime naming and monitor assignment. ([source](https://niri-wm.github.io/niri/Configuration%3A-Named-Workspaces.html))
- [Surface Capture Obscuration](https://awesome-repositories.com/f/development-tools-productivity/screen-capture-utilities/surface-capture-obscuration.md) — Obscures sensitive layer surfaces during screen recordings to protect private information. ([source](https://niri-wm.github.io/niri/Configuration%3A-Layer-Rules.html))
- [Tabbed Window Organization](https://awesome-repositories.com/f/development-tools-productivity/window-managers/tabbed-window-organization.md) — Groups windows within a column into a tabbed interface to maximize vertical space. ([source](https://niri-wm.github.io/niri/Tabs.html))
- [Screen Capture Utilities](https://awesome-repositories.com/f/development-tools-productivity/screen-capture-utilities.md) — Captures screen content including entire screens or specific windows while managing storage and pointer visibility. ([source](https://niri-wm.github.io/niri/Configuration%3A-Key-Bindings.html))

### Software Engineering & Architecture

- [Configuration Modularization](https://awesome-repositories.com/f/software-engineering-architecture/application-lifecycle-management/configuration-management/automation-and-templating-frameworks/configuration-modularization.md) — Supports modular configuration files with nested imports and live-reloading capabilities. ([source](https://niri-wm.github.io/niri/Configuration%3A-Include.html))

### System Administration & Monitoring

- [Display Configuration Managers](https://awesome-repositories.com/f/system-administration-monitoring/display-configuration-managers.md) — Provides granular control over monitor hardware settings like resolution, refresh rate, and positioning. ([source](https://niri-wm.github.io/niri/Configuration%3A-Outputs.html))
- [Performance Profiling Tools](https://awesome-repositories.com/f/system-administration-monitoring/performance-profiling-tools.md) — Retrieves detailed timing and resource statistics to identify performance bottlenecks. ([source](https://niri-wm.github.io/niri/Development%3A-Developing-niri.html))
- [Background Service Managers](https://awesome-repositories.com/f/system-administration-monitoring/background-service-managers.md) — Integrates with system services to automatically start, monitor, and manage background utilities. ([source](https://niri-wm.github.io/niri/Example-systemd-Setup.html))
- [Display Protocol Compatibility](https://awesome-repositories.com/f/system-administration-monitoring/display-configuration-managers/display-protocol-compatibility.md) — Configures compatibility layers to force native output for improved performance and compatibility with modern display protocols. ([source](https://niri-wm.github.io/niri/Xwayland.html))

### User Interface & Experience

- [Physics-Based Animations](https://awesome-repositories.com/f/user-interface-experience/animation-and-motion-systems/physics-motion-dynamics/physics-based-animations.md) — Calculates smooth motion for window transitions and workspace switching using physics-based spring curves.
- [Window Rules](https://awesome-repositories.com/f/user-interface-experience/application-window-managers/window-rules.md) — Match windows by application ID or title to conditionally apply layout, appearance, and behavior properties. ([source](https://niri-wm.github.io/niri/Configuration%3A-Window-Rules.html))
- [Input Mapping Systems](https://awesome-repositories.com/f/user-interface-experience/input-mapping-systems.md) — Maps keyboard, mouse, and touchpad inputs to system actions for window management and session control. ([source](https://niri-wm.github.io/niri/Configuration%3A-Key-Bindings.html))
- [Animation and Transition Engines](https://awesome-repositories.com/f/user-interface-experience/presentation-frameworks/animation-transition-engines.md) — Orchestrates physics-based spring animations for smooth window transitions during opening, closing, and resizing. ([source](https://niri-wm.github.io/niri/Configuration%3A-Animations.html))
- [Background Visual Effects](https://awesome-repositories.com/f/user-interface-experience/background-effects/background-visual-effects.md) — Configure blur, noise, and saturation settings for the area behind a layer surface to enhance visual clarity or style. ([source](https://niri-wm.github.io/niri/Configuration%3A-Layer-Rules.html))
- [Desktop Environment Customizers](https://awesome-repositories.com/f/user-interface-experience/desktop-environment-customizers.md) — Provides a declarative configuration engine for tailoring the user experience through modular settings and input bindings.
- [Keybinding Modifier Configurators](https://awesome-repositories.com/f/user-interface-experience/form-and-input-management/input-handling/modifier-key-listeners/keybinding-modifier-configurators.md) — Provides configuration for defining primary modifier keys for system-wide shortcuts. ([source](https://niri-wm.github.io/niri/Configuration%3A-Input.html))
- [Graphical Application Runtimes](https://awesome-repositories.com/f/user-interface-experience/graphical-application-runtimes.md) — Integrate with external satellite services to support legacy applications and screen readers within a modern graphical environment. ([source](https://niri-wm.github.io/niri/Integrating-niri.html))
- [Session Lock Input Restrictions](https://awesome-repositories.com/f/user-interface-experience/interactive-ui-elements/interaction-controllers/interaction-locks/session-lock-input-restrictions.md) — Restricts user interactions and keybindings during session locks to maintain system security. ([source](https://niri-wm.github.io/niri/Security-Model.html))
- [Navigation Animations](https://awesome-repositories.com/f/user-interface-experience/navigation-animations.md) — Provides fluid spring-based motion effects for workspace switching and camera scrolling. ([source](https://niri-wm.github.io/niri/Configuration%3A-Animations.html))
- [Window Effects](https://awesome-repositories.com/f/user-interface-experience/window-effects.md) — Overrides visual settings including opacity, corner radius, borders, and shadows for application windows. ([source](https://niri-wm.github.io/niri/Configuration%3A-Window-Rules.html))
- [Sensitive Window Obscuration](https://awesome-repositories.com/f/user-interface-experience/window-management/sensitive-window-obscuration.md) — Replaces specific windows with solid black rectangles during screen captures to protect private information. ([source](https://niri-wm.github.io/niri/Screencasting.html))
- [Column Layout Configurations](https://awesome-repositories.com/f/user-interface-experience/column-layout-configurations.md) — Allows controlling column alignment and display modes like tabbed or normal layouts. ([source](https://niri-wm.github.io/niri/Configuration%3A-Layout.html))
- [Interaction Animations](https://awesome-repositories.com/f/user-interface-experience/interaction-animations.md) — Animates system notifications, dialogs, and overlays to provide polished and responsive user interaction feedback. ([source](https://niri-wm.github.io/niri/Configuration%3A-Animations.html))
- [Pixel Alignment Engines](https://awesome-repositories.com/f/user-interface-experience/pixel-alignment-engines.md) — Calculate and round window positions, borders, and gaps to integer physical coordinates to prevent rendering artifacts like blurriness on high-resolution displays. ([source](https://niri-wm.github.io/niri/Development%3A-Fractional-Layout.html))
- [Fullscreen Window Modes](https://awesome-repositories.com/f/user-interface-experience/presentation-frameworks/presentation-modes/fullscreen-controls/fullscreen-window-modes.md) — Covers the entire display with a single window and renders a black backdrop for media playback. ([source](https://niri-wm.github.io/niri/Fullscreen-and-Maximize.html))
- [Window Management Systems](https://awesome-repositories.com/f/user-interface-experience/window-management-systems.md) — Provides a socket interface to remotely control the compositor and query the state of windows and workspaces. ([source](https://niri-wm.github.io/niri/IPC.html))
- [Workspace Layouts](https://awesome-repositories.com/f/user-interface-experience/workspace-layouts.md) — Enables applying unique layout behaviors and styles to individual named workspaces. ([source](https://niri-wm.github.io/niri/Configuration%3A-Named-Workspaces.html))
- [Window Indicators](https://awesome-repositories.com/f/user-interface-experience/activity-indicators/window-indicators.md) — Allows customizing the appearance of focus rings, borders, and tab indicators to distinguish active windows. ([source](https://niri-wm.github.io/niri/Configuration%3A-Layout.html))
- [Refresh Rate Synchronization](https://awesome-repositories.com/f/user-interface-experience/animation-and-motion-systems/animation-lifecycle-hooks/animation-frame-monitors/refresh-rate-synchronization.md) — Aligns animation frame updates with monitor refresh cycles to ensure smooth motion. ([source](https://niri-wm.github.io/niri/Development%3A-Animation-Timing.html))
- [Column Maximization](https://awesome-repositories.com/f/user-interface-experience/column-gap-utilities/column-maximization.md) — Expands a column to fill the entire screen width while respecting gaps and struts. ([source](https://niri-wm.github.io/niri/Fullscreen-and-Maximize.html))
- [Keyboard Layout Configurations](https://awesome-repositories.com/f/user-interface-experience/component-utilities/keyboard-shortcuts/keyboard-layout-configurations.md) — Define keyboard mappings, variants, and tracking behavior for global or per-window input states using standard system locale settings or custom keymap files. ([source](https://niri-wm.github.io/niri/Configuration%3A-Input.html))
- [Output Interaction Customizers](https://awesome-repositories.com/f/user-interface-experience/custom-interaction-patterns/output-interaction-customizers.md) — Configures per-monitor hot corners and window layout behaviors to tailor the user experience for different display types. ([source](https://niri-wm.github.io/niri/Configuration%3A-Outputs.html))
- [Focus Management](https://awesome-repositories.com/f/user-interface-experience/focus-management.md) — Supports enabling focus-follows-mouse behavior with configurable scrolling limits. ([source](https://niri-wm.github.io/niri/Configuration%3A-Input.html))
- [Screen Area Struts](https://awesome-repositories.com/f/user-interface-experience/safe-area-layouts/screen-area-struts.md) — Allows defining struts to reserve screen area and create persistent margins around the workspace. ([source](https://niri-wm.github.io/niri/Configuration%3A-Layout.html))
- [Opacity Controls](https://awesome-repositories.com/f/user-interface-experience/surface-corner-radii/opacity-controls.md) — Modify the opacity of layer surfaces and their sub-elements to create layered or semi-transparent visual effects. ([source](https://niri-wm.github.io/niri/Configuration%3A-Layer-Rules.html))
- [Tabbed Window Navigation](https://awesome-repositories.com/f/user-interface-experience/tabbed-navigation/tabbed-window-navigation.md) — Switches between active tabs using standard focus commands or visual indicators. ([source](https://niri-wm.github.io/niri/Tabs.html))
- [Window Spacing Rules](https://awesome-repositories.com/f/user-interface-experience/ui-architecture/design-utilities/design-systems/spacing-scales/window-spacing-rules.md) — Provides configurable gaps between windows and screen edges to manage layout density. ([source](https://niri-wm.github.io/niri/Configuration%3A-Layout.html))
- [Edge Maximization](https://awesome-repositories.com/f/user-interface-experience/window-management/edge-maximization.md) — Expands an individual window to the boundaries of the available screen area while keeping system bars visible. ([source](https://niri-wm.github.io/niri/Fullscreen-and-Maximize.html))
- [Recent Window Switchers](https://awesome-repositories.com/f/user-interface-experience/window-management/recent-window-switchers.md) — Cycles through recently focused windows using a visual switcher to facilitate navigation. ([source](https://niri-wm.github.io/niri/Configuration%3A-Recent-Windows.html))

### Graphics & Multimedia

- [Desktop Content Streaming](https://awesome-repositories.com/f/graphics-multimedia/media-processing-analysis/media-manipulation/media-processing-workflows/stream-content-distribution/desktop-content-streaming.md) — Captures monitors or individual windows for external applications using standard portal protocols. ([source](https://niri-wm.github.io/niri/Screencasting.html))
- [Custom Shader Programs](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/materials-shading/custom-shader-programs.md) — Executes custom fragment shaders during window animations to generate unique visual effects. ([source](https://niri-wm.github.io/niri/Configuration%3A-Animations.html))
- [Display Hardware Initializers](https://awesome-repositories.com/f/graphics-multimedia/display-configuration-managers/display-hardware-initializers.md) — Forces specific monitor states and resets connectors to resolve hardware initialization issues. ([source](https://niri-wm.github.io/niri/Configuration%3A-Debug-Options.html))
- [Signal Optimization Utilities](https://awesome-repositories.com/f/graphics-multimedia/display-configuration-managers/display-hardware-initializers/signal-optimization-utilities.md) — Adjusts variable refresh rates, color bit depth, and custom modelines to resolve hardware compatibility or bandwidth issues. ([source](https://niri-wm.github.io/niri/Configuration%3A-Outputs.html))
- [Rendering Pipelines](https://awesome-repositories.com/f/graphics-multimedia/graphics-engines-rendering/rendering/engines/graphics-pipeline-architectures/rendering-pipelines.md) — Visualizes internal rendering states like opaque regions and scanout status to diagnose performance problems. ([source](https://niri-wm.github.io/niri/Configuration%3A-Debug-Options.html))

### Hardware & IoT

- [Pointing Device Configurators](https://awesome-repositories.com/f/hardware-iot/connectivity-iot/internet-of-things/device-management/pointing-device-configurators.md) — Provides comprehensive controls for managing pointing device behavior, including acceleration and output mapping. ([source](https://niri-wm.github.io/niri/Configuration%3A-Input.html))

### Security & Cryptography

- [Execution Isolation](https://awesome-repositories.com/f/security-cryptography/execution-isolation.md) — Launches legacy applications within dedicated, ephemeral server instances to maintain system security and stability. ([source](https://niri-wm.github.io/niri/Xwayland.html))
- [Sensitive Content Obscuration](https://awesome-repositories.com/f/security-cryptography/sensitive-data-access-controls/sensitive-content-obscuration.md) — Protects private information by replacing specific windows with solid black rectangles during screen captures. ([source](https://niri-wm.github.io/niri/Configuration%3A-Window-Rules.html))
