Skip to content

v0.1.10

Compare
Choose a tag to compare
@YaLTeR YaLTeR released this 09 Nov 16:06
· 26 commits to main since this release

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.

Here are the improvements from the last release.

Interactive window moving

While not full-blown floating window support quite yet, this is an important step towards that. You can now move windows by dragging them by title bars, or anywhere while holding Mod.

niri-interactive-move.mp4

To prevent accidental layout changes, the windows rubber-band a little before you drag them out.

niri-interactive-move-rubberband.mp4

Furthermore, I made both interactive moving and resizing work on a touchscreen.

niri-touch-move-resize.mp4

Thanks to @Pajn for implementing a fairly complete proof-of-concept of this feature!

Locked pointer location hint

@sodiboo implemented the pointer location hint request. Apps like Blender use it to tell the compositor the final location after a locked pointer movement so that the compositor can update its own pointer location to match it.

niri-pointer-position-hint.mp4

Laptop lid and tablet mode switch bindings

Thanks to @cmeissl, you can now bind commands to laptop lid opening/closing and tablet mode switching. You can use this to automatically enable an on-screen keyboard when a convertible laptop enters tablet mode. See the switch events wiki page for more information and examples.

Additionally, I implemented disabling of the internal laptop monitor when closing the lid. So your workspaces will automatically move to the external screen. If for some reason this breaks for you, set the new keep-laptop-panel-on-when-lid-is-closed debug config flag.

Pointer hiding

@yzy-1 implemented new cursor hiding options: hide when typing (on any key press), and hide after a set inactivity period. See the wiki page for more details.

cursor {
    hide-when-typing

    // Or, after a timeout:
    // hide-after-inactive-ms 1000
}

To complement this, there are a few improvements to the hidden pointer behavior. The pointer will now show up on mouse button press, and on the contrary, it will stay hidden on programmatic and keyboard-triggered movement, like focusing a different monitor, or when using warp-mouse-to-focus.

Input configuration improvements

Thanks to @tazjin, @chillinbythetree and @elipp for:

  • Adding a trackball input config section.
  • Adding a scroll-button setting to mice, touchpads, trackpoints, and trackballs.
  • Adding a scroll-factor setting to mice and touchpads that you can use to speed up or slow down scrolling.

See the input config wiki page for more information.

Other improvements in this release

  • Tablet input no longer follows the monitor rotation: you need to rotate your graphics tablet together with your monitor. This makes convertible laptops work properly; this is also how input works on other desktop environments. Thanks @cmeissl.
  • The GTK Access portal is now explicitly set in niri-portals.conf, which makes it work. It is required for applications requesting PipeWire webcam and microphone access, such as the Firefox package on Fedora 41. Thanks @cmeissl.
  • The niri-ipc crate is now published to crates.io.
  • Active workspace is now preserved across monitor disconnects and reconnects.
  • Added a window --id argument to niri msg action consume-or-expel-window-left/right and to the IPC.
  • Added an explicit power-on-monitors action that can be useful with certain hardware. Niri still automatically powers on monitors on any input event.
  • Added support for running niri as a dinit service: files in resources/dinit/ and corresponding code in niri-session (thanks @markK24).
  • Added a disable-monitor-names debug config flag as a workaround for niri crashing when plugging in two monitors reporting the exact same make/model/serial. This issue is tracked in #734.
  • The focused window will now become visually inactive when a layer-shell app in front has keyboard focus.
  • Fixed focus-window-up-or-column-right focusing left instead of right.
  • Fixed an animation jump when expelling a narrower window from a column with uneven window widths.
  • Fixed the logind power key inhibit file descriptor leaking into processes spawned by niri.
  • Fixed window close view position restoration triggering for windows that didn't get focused upon opening.
  • Fixed a crash when an output disappears immediately after connecting.
  • Fixed used xdg-activation token memory leak.
  • Fixed lock screen clients hanging until a monitor is enabled when no monitors are enabled.
  • Updated Smithay:
    • Fixed memory leak when locking the screen.
    • Fixed occasional visual freezing of GTK and other apps.
    • Fixed a regression that made it so increasing the output scale in niri v0.1.9 didn't propagate to some clients, keeping them blurry.