Comparison of tiling compositors
This article provides an unbiased comparison of the most popular tiling Wayland compositors (as opposed to floating window managers).
Comparison table
| Window Manager | Written in | Configured with | Management style | System tray support | On-the-fly reload | Information bars | Default layouts | Pixel usage | External control | Library | Multiple (n) monitor behavior | Maintenance | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Cagebreak | C | Text | Manual | libx, wlroots | Active | ||||||||
| cwc | C | C, Lua | Dynamic | wlroots | Active | ||||||||
| dwl | C | C (recompile) | Dynamic | Optional patch | Optional patch | Optional patch | master, monocle | 1px border | Optional patch | wlroots | n regions, 9 workspaces fixed to each region | Active | |
| Hyprland | C++ | Lua | Dynamic, Scrolling | None | Yes (automatic) | None | dwindle (default), master, scrolling | Configurable titles and borders | hyprctl | Aquamarine | Configurable | Active | |
| MangoWM | C | Text | Dynamic, Scrolling | None | Yes | None | [1] | Variable borders, no titles | mmsg | wlroots | n regions, 9 workspaces fixed to each region | Active | |
| miracle-wm | C++ | YAML | Manual | None | Yes | Configurable titles and borders | swaymsg | Mir | Configurable | Active, in early development | |||
| niri | Rust | KDL | Scrolling | None | Yes | None | niri msg | Smithay | Per-monitor dynamic workspaces | Active | |||
| Qtile | Python | Python | Dynamic | Built-in, via freedesktop StatusNotifierItem | Built-in preview(?) | Built-in | Several built-in options | wlroots | Active | ||||
| river-classic | Zig | Bash (default), any language | Dynamic | Yes | Yes | riverctl | wlroots | Active, in early development | |||||
| Sway | C | Text | Dynamic(?) | Yes | Yes | Built-in (swaybar) | swaymsg | wlroots | Active | ||||
| Velox | C | Text | Dynamic | Built-in | swc | Inactive |