Reluctantly Switching to Wayland

⁜ 2026-05-13 (last updated: 2026-05-23) by giulianopz

In preparation for upgrading to the current Ubuntu LTS (26.04), I’m reluctantly switching to Wayland. This will indeed be the only protocol supported (see release notes) from now on. Mutter will be the Wayland compositor on GNOME.

Note: Compositors act as compositing window managers; they effectively replace what was called ‘window managers’ on Xorg. See § X11 and Wayland on Wikipedia for a brief historical overview.

Until today, I postponed this switch since a few tools my workflow depends on are based on X11, and the people who maintain it have done little or nothing to adapt to the new normal. Or, at least, this was the impression I got when I temporarily enabled Wayland on GNOME.

The fact that this project drew the same amount of hate as other new components in the Linux sphere (systemd, coff coff), did not encourage me to do it before… But on a closer inspection, this happens all the time, and, beyond that, it was ineluctable and even desirable.

This post is an attempt to document my journey to Wayland. It will come in handy since I have a number of Debian/Ubuntu machines to migrate similarly.

Guake

The first thing I noticed is that Guake can’t be opened up anymore with its standard keyboard shortcut (F12). But, luckily, this can be fixed by registering a new custom shortcut which runs the toggle-guake command.

That said, it works decently (since it still uses GTK3 and so XWayland, see below), except it does not always open in the last active display (see issue#2115). Which is really annoying if you work with an external monitor…

I’ve considered switching to ghostty, but guess what? They are still arguing on who should implement what (see this and this). Probably, I should just try to switch compositor (Sway, Hyprland, niri, river, Wayfire, …) since they all seem to implement the wlr layer shell protocol, which clients can use to create surfaces that are layers of the desktop (like panels, lock screens, wallpapers, on-screen keyboards, notifications, launchers, drop-down terminals etc.).

GNOME/Mutter developers have made substantially clear their refusal to implement layer-shell protocol (see issue#1141). TL;DR: they want this kind of client to run as GNOME shell extensions.

A little rant: in the past, Gnome developers also refused to add support for the Sixel image protocol (or any other image protocol) to gnome-terminal (which is now deprecated - a twist of fate). Read here. Why don’t they want us to have some fun??

Unfortunately, many new projects (and forks of old ones) are adopting it, and GNOME is one of the few desktop environments that does not implement it. That’s a big problem considering the amount of Linux desktops running Debian/Ubuntu and their derivatives…

rofi

rofi supports Wayland since last year (2025) thanks to @lbonn (kudos!), but it needs the layer shell protocol… which GNOME lacks. Unsetting the WAYLAND_DISPLAY env variable will make it work, forcing X11/XWayland, which allows running native X11 applications seamlessly in Wayland.

But this only works when rofi is run from a terminal emulator; it will fail to process any user input when executed from a keyboard shortcut (see issue#2214 and the related discussion).

Refusing to ditch rofi for any other launchers (or one of its forks), I dug into Wayland documentation, and I found out that there’s actually an actionable second path for clients like rofi which cannot rely on the layer shell on GNOME: the XDG shell protocol.

Patching the rofi code would have meant for me to study in depth for weeks the complex choreography involved in interacting with the Wayland API (read here). So, I tried to instruct Claude to patch rofi, and I was surprised to see it succeeding after a few attempts: what a time to be alive. Ye, I say this with both enthusiasm and skepticism. Anyway, the patch is here in case you want to give it a try (please, send feedback). I will consider sending it to the upstream when I’m sure I can understand better what it does. But I’ve been using it for a week, and I can say that it works, at least.

The Rest

Surprisingly, I discovered that the previous two graphical programs are the only ones I really care about. Anyway, the rest of the software you may want to install is working, judging from this page: Are we Wayland yet?. With the notable exceptions of Orca and OBS, apparently.

Issues not yet resolved

Working with two monitors, I see a lot of glitches and flikering. Firefox can’t open popup windows. Sometimes, windows are minimized when I try to move them from one monitor to another. Slack reload itself fro no reason. But maybe these are all issues resolved in the latest releases (I’m still running Ubuntu 24.04, with GNOME 46 and libmutter 14).

To be continued…


References: