Niri, the innovative scrollable-tiling Wayland compositor, has just released version 0.1.9, bringing a tons of changes, new features, and improvements.
For those unfamiliar, it is a new rising star in the tiling compositors’ field. It bets on Wayland and arranges windows in columns on an infinite strip extending to the right, ensuring that opening a new window never resizes existing ones. Now, let’s see what the new version has in store.
Niri 0.1.9: Key Highlights
Before diving into the new features, it’s important to mention that Niri now requires libdisplay-info. So, if you plan to use it, ensure you have this dependency installed to enjoy the latest enhancements.
In this release, Niri introduces an event stream in its IPC that lets you continuously listen to compositor events such as workspace or window changes. As a result, taskbar applications can now create accurate and efficient widgets tailored for Niri.
Moreover, Niri’s modules for workspaces, focused windows, and keyboard layout have been implemented in Waybar, a highly customizable Wayland status bar widely popular among tiling window manager users, available in its fresh 0.11.0 release.
Another novelty in this update is that IPC windows and workspaces now have unique IDs to improve window and workspace management. These IDs allow all individual window and workspace actions to target specific items. For example, you can list all windows with their IDs using:
niri msg windows
Code language: Bash (bash)
And perform actions on a specific window like so:
niri msg action fullscreen-window --id 2
Code language: Bash (bash)
Additionally, there are new commands, such as “niri msg action focus-window –id <ID>” and “niri msg keyboard-layouts.”
Listening to its community, one common feedback about Niri’s layout was that multi-window columns did not match the total height of the monitor. Resizing behaviors were sometimes unintuitive, leading to confusion. To address this, the window height distribution has been reworked:
- Columns with two or more windows now always aim to match the monitor’s height, respecting minimum window sizes.
- Resizing one window will proportionally resize the other windows in the column.
- The last resized window retains its height, allowing precise sizing that is unaffected by adding new windows or moving across monitors.
It’s worth noting also that single-window columns can still be resized freely, accommodating uses that require exact-sized windows until floating windows are implemented.
On the side of window sizing, Niri 0.1.9 now features a “preset-window-heights” layout option and a corresponding “switch-preset-window-height” bind. This works similarly to the existing column width presets, providing more flexibility in window management.
By default, this function is bound to the “Mod+Shift+R” keyboard shortcut, aligning with the convention that “Shift” modifies resize binds to affect height instead of width.
Furthermore, to ensure that “every frame is perfect,” Niri has implemented transactional updates for common actions like resizing and closing windows. So, when resizing, windows within the same column now adjust in unison, maintaining consistent widths and ensuring their heights add up to the monitor’s height.
At the same time, previously, closing a window could cause flickering due to the immediate resizing of other windows. With the new closing transaction, Niri waits until other windows have resized before hiding the closed window, resulting in a smoother transition.
Another striking feature in the new release is an improvement made to VRR. More specifically, Niri now supports on-demand VRR as a window rule. This new feature allows VRR to be enabled only when specific windows are on screen, such as video players or games, helping to avoid issues like monitor flickering at low refresh rates.
For NVIDIA users, an issue causing flickering on NVIDIA GPUs has been resolved. Previously, users needed to enable the “wait-for-frame-completion-before-queueing” debug flag to fix this. With this update, such workarounds are no longer necessary, and NVIDIA GPUs should operate smoothly with Niri out of the box.
But wait, that’s not all. There is more. Niri 0.1.9 brings several user experience enhancements, with the most notable being:
- The horizontal touchpad swipe gesture no longer goes past the first or last column on a workspace, providing a more intuitive navigation experience.
- The focus-follows-mouse feature has been refined to prevent unintended window focus when switching workspaces, which is especially beneficial when using new workspace bar modules.
- Niri will now attempt to read the config file from “/etc/niri/config.kdl” if “~/.config/niri/config.kdl” is missing.
- Niri now makes a more robust effort to activate monitors, potentially improving multi-monitor setups on various hardware.
On the bug fixes side, the highlights include:
- Resolved issues with “xdg-desktop-portal-gnome” when opening file choosers from Xwayland windows.
- Fixed crashes related to resuming from suspend or monitoring power-on events.
- Corrected rendering issues across monitor scale and transform changes.
- Addressed problems with moving columns between workspaces.
Check out the release announcement for more information about all novelties, where you will also find a few videos showing the new features of the Niri 0.1.9 scrollable-tiling Wayland compositor.