2025-08-27 14:20:22 +03:00
<h1 align="center"><img alt="niri" src="https://github.com/user-attachments/assets/07d05cd0-d5dc-4a28-9a35-51bae8f119a0"></h1>
2024-01-17 03:15:05 -08:00
<p align="center">A scrollable-tiling Wayland compositor.</p>
<p align="center">
2024-12-18 22:39:10 +03:00
<a href="https://matrix.to/#/ #niri:matrix .org"><img alt="Matrix" src="https://img.shields.io/badge/matrix-%23niri-blue?logo=matrix"></a>
2026-02-10 08:42:26 -05:00
<a href="https://github.com/niri-wm/niri/blob/main/LICENSE"><img alt="GitHub License" src="https://img.shields.io/github/license/niri-wm/niri"></a>
<a href="https://github.com/niri-wm/niri/releases"><img alt="GitHub Release" src="https://img.shields.io/github/v/release/niri-wm/niri?logo=github"></a>
2024-01-17 03:15:05 -08:00
</p>
2023-08-10 14:45:54 +04:00
2024-04-20 11:24:33 +04:00
<p align="center">
2026-02-10 08:42:26 -05:00
<a href="https://niri-wm.github.io/niri/Getting-Started.html">Getting Started</a> | <a href="https://niri-wm.github.io/niri/Configuration%3A-Introduction.html">Configuration</a> | <a href="https://github.com/niri-wm/niri/discussions/325">Setup Showcase</a>
2024-04-20 11:24:33 +04:00
</p>
2026-04-25 14:14:21 +03:00
<img width="1280" height="720" alt="niri with a few windows open" src="https://github.com/user-attachments/assets/dea5909e-1859-4aaa-9d88-d37f9663e00b" />
2023-08-13 12:46:53 +04:00
2024-01-17 03:15:05 -08:00
## About
Windows are arranged in columns on an infinite strip going to the right.
Opening a new window never causes existing windows to resize.
Every monitor has its own separate window strip.
Windows can never "overflow" onto an adjacent monitor.
2024-01-25 08:34:42 +04:00
Workspaces are dynamic and arranged vertically.
2024-01-17 03:15:05 -08:00
Every monitor has an independent set of workspaces, and there's always one empty workspace present all the way down.
2024-01-25 08:34:42 +04:00
The workspace arrangement is preserved across disconnecting and connecting monitors where it makes sense.
When a monitor disconnects, its workspaces will move to another monitor, but upon reconnection they will move back to the original monitor.
2024-01-17 03:15:05 -08:00
## Features
2025-01-03 10:16:53 +03:00
- Built from the ground up for scrollable tiling
2026-02-10 08:42:26 -05:00
- [Dynamic workspaces ](https://niri-wm.github.io/niri/Workspaces.html ) like in GNOME
2025-05-17 15:59:05 +03:00
- An [Overview ](https://github.com/user-attachments/assets/379a5d1f-acdb-4c11-b36c-e85fd91f0995 ) that zooms out workspaces and windows
2024-01-17 03:15:05 -08:00
- Built-in screenshot UI
2024-06-29 10:27:38 +04:00
- Monitor and window screencasting through xdg-desktop-portal-gnome
2026-02-10 08:42:26 -05:00
- You can [block out ](https://niri-wm.github.io/niri/Configuration%3A-Window-Rules.html#block-out-from ) sensitive windows from screencasts
- [Dynamic cast target ](https://niri-wm.github.io/niri/Screencasting.html#dynamic-screencast-target ) that can change what it shows on the go
- [Touchpad ](https://github.com/niri-wm/niri/assets/1794388/946a910e-9bec-4cd1-a923-4a9421707515 ) and [mouse ](https://github.com/niri-wm/niri/assets/1794388/8464e65d-4bf2-44fa-8c8e-5883355bd000 ) gestures
- Group windows into [tabs ](https://niri-wm.github.io/niri/Tabs.html )
2024-01-17 03:15:05 -08:00
- Configurable layout: gaps, borders, struts, window sizes
2026-02-10 08:42:26 -05:00
- [Gradient borders ](https://niri-wm.github.io/niri/Configuration%3A-Layout.html#gradients ) with Oklab and Oklch support
2026-04-25 11:17:07 +03:00
- [Background blur ](https://niri-wm.github.io/niri/Window-Effects.html ) for windows and layer-shell surfaces
2026-02-10 08:42:26 -05:00
- [Animations ](https://github.com/niri-wm/niri/assets/1794388/ce178da2-af9e-4c51-876f-8709c241d95e ) with support for [custom shaders ](https://github.com/niri-wm/niri/assets/1794388/27a238d6-0a22-4692-b794-30dc7a626fad )
2024-01-17 03:15:05 -08:00
- Live-reloading config
2026-02-10 08:42:26 -05:00
- Works with [screen readers ](https://niri-wm.github.io/niri/Accessibility.html )
2023-08-14 08:05:57 -07:00
2024-01-25 08:34:42 +04:00
## Video Demo
2026-02-10 08:42:26 -05:00
https://github.com/niri-wm/niri/assets/1794388/bce834b0-f205-434e-a027-b373495f9729
2024-01-25 08:34:42 +04:00
2025-06-15 12:48:11 +03:00
Also check out this video from Brodie Robertson that showcases a lot of the niri functionality: [Niri Is My New Favorite Wayland Compositor ](https://youtu.be/DeYx2exm04M )
2023-08-13 12:46:53 +04:00
## Status
2025-01-03 10:16:53 +03:00
Niri is stable for day-to-day use and does most things expected of a Wayland compositor.
Many people are daily-driving niri, and are happy to help in our [Matrix channel].
Give it a try!
2026-02-10 08:42:26 -05:00
Follow the instructions on the [Getting Started ](https://niri-wm.github.io/niri/Getting-Started.html ) page.
2026-04-25 11:17:07 +03:00
Grab a desktop shell like [DankMaterialShell] or [Noctalia] (or build a more traditional setup): niri by itself is not a complete desktop environment.
2025-08-19 10:35:00 +03:00
Also check out [awesome-niri], a list of niri-related links and projects.
2023-08-13 12:46:53 +04:00
2025-01-03 10:16:53 +03:00
Here are some points you may have questions about:
- **Multi-monitor**: yes, a core part of the design from the very start. Mixed DPI works.
- **Fractional scaling**: yes, plus all niri UI stays pixel-perfect.
- **NVIDIA**: seems to work fine.
2025-01-11 09:00:04 +03:00
- **Floating windows**: yes, starting from niri 25.01.
2025-01-03 10:16:53 +03:00
- **Input devices**: niri supports tablets, touchpads, and touchscreens.
You can map the tablet to a specific monitor, or use [OpenTabletDriver].
We have touchpad gestures, but no touchscreen gestures yet.
- **Wlr protocols**: yes, we have most of the important ones like layer-shell, gamma-control, screencopy.
You can check on [wayland.app ](https://wayland.app ) at the bottom of each protocol's page.
- **Performance**: while I run niri on beefy machines, I try to stay conscious of performance.
I've seen someone use it fine on an Eee PC 900 from 2008, of all things.
2026-02-10 08:42:26 -05:00
- **Xwayland**: [integrated ](https://niri-wm.github.io/niri/Xwayland.html#using-xwayland-satellite ) via xwayland-satellite starting from niri 25.08.
2025-01-03 10:16:53 +03:00
2025-07-15 10:40:37 +03:00
## Media
2025-07-18 23:28:49 +03:00
[niri: Making a Wayland compositor in Rust ](https://youtu.be/Kmz8ODolnDg?list=PLRdS-n5seLRqrmWDQY4KDqtRMfIwU0U3T ) · * December 2024 *
2025-07-15 10:40:37 +03:00
My talk from the 2024 Moscow RustCon about niri, and how I do randomized property testing and profiling, and measure input latency.
The talk is in Russian, but I prepared full English subtitles that you can find in YouTube's subtitle language selector.
2025-07-18 23:28:49 +03:00
[An interview with Ivan, the developer behind Niri ](https://www.trommelspeicher.de/podcast/special_the_developer_behind_niri ) · * June 2025 *
2025-07-15 10:40:37 +03:00
2025-07-18 23:28:49 +03:00
An interview by a German tech podcast Das Triumvirat (in English).
2025-07-15 10:40:37 +03:00
We talk about niri development and history, and my experience building and maintaining niri.
2025-07-18 23:28:49 +03:00
[A tour of the niri scrolling-tiling Wayland compositor ](https://lwn.net/Articles/1025866/ ) · * July 2025 *
An LWN article with a nice overview and introduction to niri.
2025-07-15 10:44:46 +03:00
## Contributing
If you'd like to help with niri, there are plenty of both coding- and non-coding-related ways to do so.
2026-02-10 08:42:26 -05:00
See [CONTRIBUTING.md ](https://github.com/niri-wm/niri/blob/main/CONTRIBUTING.md ) for an overview.
2025-07-15 10:44:46 +03:00
2024-01-17 03:15:05 -08:00
## Inspiration
2023-08-13 12:46:53 +04:00
2024-01-17 03:15:05 -08:00
Niri is heavily inspired by [PaperWM] which implements scrollable tiling on top of GNOME Shell.
2023-08-13 12:46:53 +04:00
2024-01-17 03:15:05 -08:00
One of the reasons that prompted me to try writing my own compositor is being able to properly separate the monitors.
Being a GNOME Shell extension, PaperWM has to work against Shell's global window coordinate space to prevent windows from overflowing.
2023-08-13 12:46:53 +04:00
2024-08-10 12:55:38 +03:00
## Tile Scrollably Elsewhere
Here are some other projects which implement a similar workflow:
- [PaperWM]: scrollable tiling on top of GNOME Shell.
- [karousel]: scrollable tiling on top of KDE.
2025-05-17 15:59:05 +03:00
- [scroll ](https://github.com/dawsers/scroll ) and [papersway]: scrollable tiling on top of sway/i3.
2026-04-25 11:17:07 +03:00
- Hyprland has a built-in [scrolling layout ](https://wiki.hypr.land/Configuring/Scrolling-Layout/ ).
- [Paneru] and [PaperWM.spoon]: scrollable tiling on top of macOS.
2024-08-10 12:55:38 +03:00
2024-01-17 03:15:05 -08:00
## Contact
2025-08-16 09:00:27 +03:00
Our main communication channel is a Matrix chat, feel free to join and ask a question: https://matrix.to/#/ #niri:matrix .org
We also have a community Discord server: https://discord.gg/vT8Sfjy7sx
2024-01-17 03:15:05 -08:00
2023-08-13 12:46:53 +04:00
[PaperWM]: https://github.com/paperwm/PaperWM
2024-01-25 08:34:42 +04:00
[waybar]: https://github.com/Alexays/Waybar
[fuzzel]: https://codeberg.org/dnkl/fuzzel
2026-02-10 08:42:26 -05:00
[awesome-niri]: https://github.com/niri-wm/awesome-niri
2024-08-10 12:55:38 +03:00
[karousel]: https://github.com/peterfajdiga/karousel
[papersway]: https://spwhitton.name/tech/code/papersway/
2026-04-25 11:17:07 +03:00
[Paneru]: https://github.com/karinushka/paneru
2024-08-10 12:55:38 +03:00
[PaperWM.spoon]: https://github.com/mogenson/PaperWM.spoon
2025-01-03 10:16:53 +03:00
[Matrix channel]: https://matrix.to/#/ #niri:matrix .org
[OpenTabletDriver]: https://opentabletdriver.net/
2026-04-25 11:17:07 +03:00
[DankMaterialShell]: https://danklinux.com/
[Noctalia]: https://noctalia.dev/