v0.1.0-alpha.2

niri-wm/niriv0.1.0-alpha.2Dec 23, 2023by YaLTeR

AI Summary

This alpha release implements pointer locking protocols for games and adds popup unconstraining to prevent off-screen popups. It also introduces a `struts` option for layout gaps.

Key Highlights

  • Relative-pointer and pointer-constraints protocols for mouse locking.
  • Popup unconstraining to keep popups on-screen.
  • Struts option for outer layout gaps.
  • Tablet support improvements (monitor aspect ratio and bounds).

New Features

  • Relative-pointer protocol.
  • Pointer-constraints protocol.
  • Popup unconstraining.
  • Struts option.
  • Tablet support improvements.
  • Config validation subcommand.
  • Workspace switch binds at column edges.

Full Release Notes

Several important additions have landed since alpha.1.

### Implemented the relative-pointer and pointer-constraints protocols

These protocols allow apps to lock or confine the mouse pointer within their window. In particular, Xwayland makes use of these protocols to make 3D games with mouse look "just work"!

https://github.com/YaLTeR/niri/assets/1794388/d1a1e0ec-a80c-44ac-b527-bfaf79a995fb

Other examples include Blender and virtual machines.

https://github.com/YaLTeR/niri/assets/1794388/7212e1ae-a9f9-4e85-8d43-e703757fc18e

### Implemented popup unconstraining

Popups will no longer open partially off-screen. Niri will also try to position popups within the application's window horizontally so that if a window is fully on-screen, the popup will also be fully visible.

![Fractal screenshot with open emoji popup](https://github.com/YaLTeR/niri/assets/1794388/6515f06b-7f4f-4f97-a5e4-cc50b638676c)

### Added a `struts` option

This one allows you to add a kind of "outer gaps" if you like those layouts. Also, left and right struts will make windows to the sides always partially visible, which can help with mouse-only navigation.

![Screenshot from 2023-12-23 10-21-20](https://github.com/YaLTeR/niri/assets/1794388/6e4a3071-e1da-49fd-8c96-996d9bb4d14f)

### More improvements in this release

- New windows can no longer steal focus from a fullscreen window. All it took was a Syncthing dialog interrupting my Hollow Knight boss battle.
- Tablets will now match their target monitor's aspect ratio (works the same way as in GNOME Shell).
- Tablets can no longer move the cursor outside of their target monitor's bounds.
- Tablets will no longer send wl_pointer events (as they shouldn't), which makes them work correctly with GTK 4 apps.
- Added a `niri validate` subcommand that will check if your config parses successfully.
- Added a way to disable an output with an `off` config flag.
- Added `focus-window-or-workspace-up`/`down` and `move-window-up-or-to-workspace-up`/`down` bind commands that do a workspace switch when the focus is at the end of a window column (not bound to anything by default). This way you can avoid an extra set of workspace switch binds. Thanks @rabidpug for adding this.
- Keyboard config is now live-reloaded, including the XKB options.
- Fixed screen not immediately redrawing in some cases, most notably when a layer-shell surface shows a popup.
- Allegedly, high-resolution scroll wheel mice should now work after a Smithay update, but I don't have one so I don't know for sure.

This is an alpha tag. There are known bugs and missing features. Don't be surprised if there's a breaking config change in the future.

Please check the [README](https://github.com/YaLTeR/niri/blob/main/README.md) for building and installation instructions. Also, if you're on Fedora, I've got a [COPR](https://copr.fedorainfracloud.org/coprs/yalter/niri/).