Announcing Wio: A clone of Plan 9's Rio for Wayland

Published 2019-05-01 on Drew DeVault's blog

For a few hours here and there over the past few months, I’ve been working on a side project: Wio. I’ll just let the (3 minute) screencast do the talking first:

Note: this video begins with several seconds of grey video. This is normal.

In short, Wio is a Wayland compositor based on wlroots which has a similar look and feel to Plan 9’s Rio desktop. It works by running each application in its own nested Wayland compositor, based on Cage - yet another wlroots-based Wayland compositor. I used Cage in last week’s RDP article, but here’s another cool use-case for it.

The behavior this allows for (each window taking over its parent’s window, rather than spawning a new window) has been something I wanted to demonstrate on Wayland for a very long time. This is a good demonstration of how Wayland’s fundamentally different and conservative design allows for some interesting use-cases which aren’t possible at all on X11.

I’ve also given Wio some nice features which are easy thanks to wlroots, but difficult on Plan 9 without kernel hacking. Namely, these are multihead support, HiDPI support, and support for the wlroots layer shell protocol. Several other wlroots protocols were invited to the party, useful for taking screenshots, redshift, and so on. Layer shell support is particularly cool, since programs like swaybg and waybar work on Wio.

In terms of Rio compatability, Wio has a ways to go. I would seriously appreciate help from users who are interested in improving Wio. Some notably missing features include:

  • Any kind of filesystem resembling Rio’s window management filesystem. In theory this ought to be do-able with FUSE, at least in part (/dev/text might be tough).
  • Running every application in its own namespace, for double the Plan 9
  • Hiding/showing windows (that menu entry is dead)
  • Joint improvements with Cage to bring greater support for Wayland features, like client-side window resize/move, fullscreen windows, etc
  • Damage tracking to avoid re-rendering everything on every frame, saving battery life and GPU time

If you’re interested in helping, please join the IRC channel and say hello: #wio on irc.freenode.net. For Wio’s source code and other information, visit the website at wio-project.org.

Have a comment on one of my posts? Start a discussion in my public inbox by sending an email to ~sircmpwn/public-inbox@lists.sr.ht [mailing list etiquette]

Are you a free software maintainer who is struggling with stress, demanding users, overwork, or any other social problems in the course of your work? Please email me — I know how you feel, and I can lend a sympathetic ear and share some veteran advice.


Articles from blogs I follow around the net

A Satisfactory Way of Building

With apologies, as usual, to Christopher Alexander. Satisfactory is a first-person factory construction game. COVID-19 has given me license to spend FAR too much time playing it, and I’d like to share a few thoughts that I hope might prove useful, or at le…

via Aphyr: Posts June 21, 2020

Time to upgrade your monitor

A non-comprehensive and opinionated guide to best monitor for programming

via tonsky.me June 17, 2020

Status update, June 2020

Time for a new monthly status update! Let’s start with Wayland stuff. Once again I’ve continued working on wlroots’ DRM backend. I’ve submitted a bunch of bugfixes for all of the atomic refactoring done last month. I’ve also started working on integrating…

via emersion June 17, 2020

Generated by openring