River 0.3.0, Waylock 1.0.0, Status Update

by Isaac Freund

Things have been a bit quiet on this blog recently. I spent most of 2023 writing my bachelor’s thesis and finishing up my degree. That’s all wrapped up now though, which means I’ve finally had time to wrap up some other things for my open source projects.

River 0.3.0

The river 0.3.0 release has finally been tagged! This one’s been in the pipeline for quite a while, it’s been over a year since 0.2.0 was released and river has seen significant improvements since then. The past few months I’ve done my best to fix as many bugs as possible but a non-bugfix release always entails new code reaching a lot of people with diverse setups. If you find a bug in river please open an issue.

The biggest change in river 0.3.0 is not immediately visible: river 0.3.0 uses the wlroots scene graph API and has see a lot of internal improvements related to that transition. An initial version of the wlroots scene graph API was landed in wlroots over two years ago and has seen steady improvement since. I helped to push it forward in upstream wlroots over the years and am very happy to finally be using it in river. It brings finely-grained damage tracking and other performance optimizations to river which should positively impact battery life and make running river with software rendering bearable.

Aside from that more behind-the-scenes work, river 0.3.0 brings many nice usability enhancements. There is now a “rules system” for automatically assigning tags to new windows and performing other actions. The input-method-v2 and text-input-v3 protocols are supported, allowing use of alternative input software for users that speak a language not well supported by western keyboards. River also now has basic support for drawing tablet input. For a full list of changes, see the release notes here

Thank you to everyone who has contributed code and bug reports to river! River would not be where it is today without you.

In other river news, the upstream river repository has moved to https://codeberg.org/river/river. Github is a proprietary platform with interests increasingly misaligned with my values. Free and open source software like river should not require contributors to have a github account or interact with github in any way. There is still a read-only mirror of the river repository on github for now to ease the transition, it may be dropped eventually if/when I decide to delete my personal github account.

River also now has a page here on my website, I’ve written a bit about my future plans for river there if you’re curious :) River also has gained a written Code of Conduct documenting the existing standards and moderation practice. Luckily, we have a wonderful community and haven’t yet had to deal with any notable unacceptable behavior I’m aware of.

Waylock 1.0.0

There haven’t been any breaking changes to waylock in over a year and I’m happy with its feature set. Therefore, I’ve tagged a stable 1.0 release. The only change since the last waylock release is the addition of the -ready-fd flag contributed by tiosgz. This is an alternative to the -fork-on-lock flag for notification that waylock has successfully locked the session. The new flag is compatible with the readiness notification protocol used by the s6 and dinit service managers as well as being more flexible than -fork-on-lock for use in scripting.

Don’t be alarmed if waylock development slows down to a snail’s pace after this release. I consider it to be feature complete and as long as there are no bugs found there is little reason to make changes. I will of course continue to update it to be compatible with new Zig releases as needed.

Website Rewrite

You may have noticed that my website looks a bit different than it used to and has a few new pages. I’d been wanting to add some new pages for a while but had entirely forgotten how to use hugo. Since I didn’t like hugo very much in practice anyways, I decided to switch to something more transparent and chose Bagatto. It has been lovely to work with and I’m much more confident that I’ll remember how to modify and extend my website years from now. Source code here for the curious. This was also my first time using Janet (or any lispy language) for anything “real” and I found the experience very pleasant.


If my work on river and waylock adds value to your life and you’d like to support me financially you can find donation information here.