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.