A scrollable-tiling Wayland compositor.
Go to file
2024-05-04 16:27:14 +04:00
.github Add distro to issue template 2024-04-27 07:44:51 +04:00
niri-config Add a semi-working debug-toggle-damage binding 2024-05-03 10:33:31 +04:00
niri-ipc Add a semi-working debug-toggle-damage binding 2024-05-03 10:33:31 +04:00
niri-visual-tests Split update_render_elements() from advance_animations() 2024-05-04 11:10:02 +04:00
resources default-config: Add mic mute bind 2024-04-19 11:14:51 +04:00
src Fix rounded corners on blocked-out resizes 2024-05-04 11:54:52 +04:00
wiki wiki: Mention nixos and nvidia issues in getting started 2024-05-04 16:27:14 +04:00
.gitattributes wiki: Document window rules 2024-03-26 10:40:19 +04:00
.gitignore Add Nix Flake (#77) 2024-01-10 22:43:46 -08:00
Cargo.lock Implement rounded window corners 2024-05-02 14:27:53 +04:00
Cargo.toml Implement ideal scale factor guessing 2024-04-24 12:26:59 +04:00
flake.lock Implement wlr-screencopy v1 (#243) 2024-03-08 04:10:55 -08:00
flake.nix Add libXcursor and libXi to nix flake 2024-04-30 02:19:28 -07:00
LICENSE Add LICENSE 2023-08-10 14:50:51 +04:00
README.md README: Bring back NVIDIA issues note 2024-04-20 17:45:17 +04:00
rustfmt.toml Add rustfmt.toml and reformat 2023-08-10 14:49:38 +04:00

niri

A scrollable-tiling Wayland compositor.

Matrix GitHub License GitHub Release

Getting Started | Configuration

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.

Workspaces are dynamic and arranged vertically. Every monitor has an independent set of workspaces, and there's always one empty workspace present all the way down.

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.

Features

  • Scrollable tiling
  • Dynamic workspaces like in GNOME
  • Built-in screenshot UI
  • Monitor screencasting through xdg-desktop-portal-gnome
    • You can block out sensitive windows from screencasts
  • Touchpad gestures
  • Configurable layout: gaps, borders, struts, window sizes
  • Animations
  • Live-reloading config

Video Demo

https://github.com/YaLTeR/niri/assets/1794388/bce834b0-f205-434e-a027-b373495f9729

Status

A lot of the essential functionality is implemented, plus some goodies on top. Feel free to give niri a try: follow the instructions on the Getting Started wiki page. Have your waybars and fuzzels ready: niri is not a complete desktop environment.

Note that NVIDIA GPUs may have issues.

Inspiration

Niri is heavily inspired by PaperWM which implements scrollable tiling on top of GNOME Shell.

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.

Contact

We have a Matrix chat, feel free to join and ask a question: https://matrix.to/#/#niri:matrix.org