github YaLTeR/niri v0.1.5

latest release: v0.1.6
one month ago

Niri is a scrollable-tiling Wayland compositor. Windows are arranged in columns on an infinite strip going to the right. Opening a new window never causes existing windows to resize.

This time I decided to update the demo video in the README. Here's the new video if you're curious:

demo.mp4

Now let's go over the improvements from the last release.

More animations

A big focus in this release was on animations. I've animated many more actions: window movement, resizing, and closing. Each of these was challenging to implement in its own way, but I'm quite happy with the end result.

niri-new-anims.mp4

Naturally, all animations work well with windows blocked out from screencasts.

As usual, you can disable or configure individual animations if you prefer. Find instructions on the wiki page.

While working on these animations, I fixed a few minor issues with view positioning. So niri now works better even with animations disabled.

Spring animation improvements

Spring animations are now more robust: values and durations are clamped more aggressively where it makes sense. For example, a bouncy window opening animation will become fully opaque upon reaching the full window size, and won't become transparent again during the following bounces.

niri-open-anim-clamp.mp4

Also, when using slowdown, the touchpad gesture velocity is now scaled by the slowdown factor, making the animation smoother.

Variable refresh rate

Niri now has basic variable refresh rate (VRR) support. You can enable it by setting a variable-refresh-rate flag in the output config. Check the wiki for an example and caveats.

Additionally, niri msg outputs now shows whether VRR is supported and enabled.

IPC improvements

niri msg received a few quality-of-life improvements thanks to @sodiboo:

  • Added niri msg version that shows the running niri compositor version and the niri CLI version. They are the same binary, so their versions should match, but they can briefly go out of sync after a niri update.
  • When niri msg receives an error from the compositor, it will now check if the compositor and the CLI versions match, and if not, print a message reminding you that you may need to restart niri.
  • Added niri msg request-error that will always result in an error from the compositor. This can aid in script development to check that your error handling works right.

Other improvements in this release

  • Added an allow-when-locked=true flag for spawn key bindings that makes them work when the session is locked. Check the wiki for an example.
  • Previous view position is now restored upon unfullscreening a window.
  • The SIGPIPE handler is now set to default in niri msg to prevent panic backtraces from showing up when stdout is closed.
  • The mouse cursor is now hidden upon touchscreen interaction.
  • Corrected some DRM leasing behavior to fix crashes when DRM leasing is unavailable and better handle hotplugging.
  • Added an ease-out-quad easing curve.
  • Fixed warp-mouse-to-focus not triggering when a window is closed by unmapping its buffer.
  • Fixed the horizontal touchpad gesture redrawing continuously rather than only on touchpad events.
  • Fixed overdamped spring instability being able to crash the compositor.
  • Added a microphone mute example bind to the default config.

Don't miss a new niri release

NewReleases is sending notifications on new releases.