An i3/sway-like tiling Wayland compositor built from niri.
Getting Started · Configuration · Releases · niri
Tiri is a fork of niri that keeps niri's Wayland compositor foundation and replaces the scrollable layout with traditional i3/sway-style tiling.
Windows live in a container tree: split horizontally, split vertically, tab them, stack them, or float them when the window calls for it. Each monitor owns its own workspace stack and tiling tree, so windows stay visible and predictable instead of flowing into another output.
Tiri is for people who like i3/sway's direct spatial model, but want it on top of niri's rendering, protocol support, animations, screencasting, gestures, and multi-monitor infrastructure.
Fedora:
sudo dnf copr enable pablocpas/tiri
sudo dnf install tiriArch Linux:
paru -S tiri-bin
# or build from source:
paru -S tiriNix:
nix profile install github:pablocpas/tiriDebian/Ubuntu:
Download the .deb from the latest release.
After installing, choose Tiri in your display manager, or run tiri-session from a TTY.
- i3/sway-like tiling with a real container tree.
- Split, tabbed, stacked, and floating container modes.
- Independent monitor trees: windows do not overflow into another monitor.
- Dynamic vertical workspaces with an always-empty workspace at the end.
- Live-reloading configuration in KDL.
- Screenshot UI and screencasting through xdg-desktop-portal-gnome.
- Sensitive-window blocking for screencasts.
- Touchpad and mouse gestures inherited from niri.
- Configurable gaps, borders, struts, and window sizes.
- Gradient borders, animations, and custom shaders.
- Accessibility support through the same base as niri.
| Area | niri | tiri |
|---|---|---|
| Core layout | Scrollable columns | i3/sway-style container tree |
| Window placement | Manual column workflow | Automatic tiling splits |
| Spatial model | Infinite horizontal strip per workspace | Visible tree per workspace |
| Container modes | Columns and tabs | SplitH, SplitV, tabbed, stacked, floating |
| Foundation | Wayland compositor built in Rust | niri foundation with tiling semantics |
Tiri intentionally does not try to be a full desktop environment. Bring your bar, launcher, notification daemon, lock screen, wallpaper tool, and portal setup, just like you would for i3 or sway.
Tiri is in active development and is being refined for daily i3-like use. It inherits a mature compositor base from niri, including rendering, input, screencasting, protocol support, and multi-monitor handling.
Things that are already first-class:
- Multi-monitor layouts, including mixed DPI.
- Fractional scaling with pixel-perfect compositor UI.
- Floating windows for dialogs and special cases.
- Xwayland through xwayland-satellite.
- Wlr protocols such as layer-shell, gamma-control, and screencopy.
- Tablets, touchpads, and touchscreens.
Current distribution paths:
- Fedora: COPR
pablocpas/tiri. - Arch:
tiri-binandtirion AUR. - Nix: flake package at
github:pablocpas/tiri. - Debian/Ubuntu:
.debassets on GitHub Releases.
Packagers should read Packaging tiri. Release tarballs include a matching vendored dependency archive for offline Rust builds.
Tiri is built on top of niri by Ivan Molodetskikh (YaLTeR). The rendering pipeline, Wayland protocol work, compositor architecture, and much of the surrounding documentation come from niri's excellent foundation.
Useful niri resources:
Contributions are welcome, especially around i3/sway behavior parity, layout correctness, testing, documentation, packaging, and real-world bug reports.
See CONTRIBUTING.md and the Getting Started docs.
Tiri is licensed under GPL-3.0-or-later.
