XDG Shell Stable Supported by Mir

Support for the stable XDG Shell protocol has just landed in Mir, and it will ship with the next release. It will eventually replace XDG Shell unstable v6 as the primary way in which Wayland applications create traditional style windows. You can get it now in our development PPA: ppa:mir-team/dev.

Client Support and Usability

The difference between XDG Shell unstable v6 and XDG Shell stable are minimal, so there should be no effect from a user’s perspective. GTK+ 3 already defaults to using stable when available, thus all apps using it do as well. GTK versions new enough are shipped by Ubuntu 18.10, Fedora 28, Debian sid and Arch Linux. We plan to continue supporting XDG Shell unstable v6 and the long deprecated wl_shell protocols.

Implementation

To support XDG Shell stable, I simply copied our XDG Shell unstable v6 implementation, and made the required modifications. Before it made sense to do this, however, we had to split up protocol implementation from generic window logic, and clean up all code involved. To insure no breakage throughout this process, we added tests for various uses of XDG Shell to WLCS.

We now have good test coverage of both stable and unstable v6 versions of the protocol. Before merging the changes, I also manually tested stable with various apps on Ubuntu 18.10. @alan_g did the same on Fedora 28.

Importance

The switch of both clients and servers to support this protocol is an indication that the Wayland ecosystem is maturing. Because the protocol is marked stable, future revisions will not break backwards compatibility the way versions of an unstable protocol do. For display servers implementing the protocol, this means far less code and easier maintenance is required to support all clients, old and new.

In addition to supporting the latest clients, XDG Shell stable is a requirement to implement the new protocol Layer Shell. Layer Shell is written by the Sway/Wlroots developers, and gives clients a flexible method for drawing non-window surfaces. Task bars, notifications and lock screens are just a few examples of possible clients. We have not yet begun working on Layer shell support, but plan to in the near future. It will be an important step toward creating a stable, modular and featureful Wayland desktop.

5 Likes

Perhaps it’s just my imagination, but it seems to me that, upon upgrading Mir to today’s dev build (0.32.1+dev223-g87f34b2cdf-0ubuntu18.04), I can now resize windows on Unity8 much more easily than I could when using a dev build from a few days ago. Whatever the underlying cause, thanks!

Congratulations! xdg-shell is a beast of a protocol, it takes a lot of work to implement.
Also happy to hear you’re working on layer-shell support. We’re around if you want to ask any questions :slightly_smiling_face:

3 Likes