July 28, 2021

My journey to Wayland

Few weeks ago, I finally decided to switch to Wayland-only setup, on my primary machine. It was an exciting journey I started few years ago and it allowed me to improve how I use my computers. This article will not list the benefits and the drawbacks of Wayland. Other people attempted to do it before me, without being unbiased sometimes.

In the last past years when I was young, I played with Gnome 2, KDE 4, XFCE, dwm, evilwm or cwm (ported from OpenBSD to Linux). I didn't want to see my ressources being consumed by the graphical interface or optional processes. Therefore, window managers quickly became an evidence. At that time (around march 2019), Sway was the most featureful WM on Wayland, even if wlroots was not created yet. Sway tends to be "a drop-in replacement for the i3 wm" as mentioned on the official website, it seemed easier for me to try i3 first in order to be comfortable with Sway then. As of today, I still run i3 on some computers.

By the end of 2019, I migrated to Sway. Enabling XWayland to launch the non-native softwares is easy. Aside from some glitches like font rendering or DPI, the softwares are perfectly usable. It becomes much HARDER when you disable XWayland, especially when you have to ditch your favorite tools. Here a summary.

Terminal emulator

I do most of my work in terminals, so it is important to find the right tool. For a year, I simply launched alacritty (was running rxvt-unicode through XWayland few weeks before), but recently moved to foot. Alacritty font rendering or line height were inconsistent after updates, memory usage was too high for my taste or QR codes were strangely rendered. At the beginning of my tests, foot was having a few issues, but they were solved by the reactive main dev. So far so good.

Firefox / Thunderbird

They are natively supported with MOZ_ENABLE_WAYLAND=1 (Thunderbird only installed for CalDAV calendars, using s-nail & alpine for emails).

QEMU

QEMU supports GTK+ 3 with --enable-gtk. No issue here.

Image viewer

Ditching sxiv which is probably the best viewer ever created, was painful. It was the most difficult part for me especially when the replacement, imv here, is far from being a close competitor. It doesn't create thumbnails, it is unable to display huge images like Firefox webpage screenshots, it vomits unnecessary message on stdout, default keybindings are complicated, it is not possible to display an image with its own width and height at launch (for example, a 160x120 picture will be displayed with a 728% zoom by default), zoom is reset when displaying next or previous picture. That is a lot of issues…

PDF viewer

I gave zathura a try (with Poppler backend) and I was pleasantly surprised. It does the trick. I also really like how it opens the document on the page where you left.

Geany

The interface is rendered with GTK+ 3. It is natively supported.

Remmina

The interface is rendered with GTK+ 3. It is natively supported.

Media player

mpv natively supports Wayland without any tweaks. Also disables your screen locker while watching videos.

Screen color temperature

With Xorg, sct was enough to set the color. With Wayland, there was an unofficial Redshift fork supporting wlr_gamma_control protocol, but it was never merged. Then, a fork called gammastep appeared, it includes this protocol. I adopted it.

pinentry

pinentry GUI is mandatory. On my setup, it was linked to GTK+ 2. I had to install pinentry-gnome3 to enable GTK+ 3 UI for Wayland (it is the shortened version, needed to play with dbus too, which was unpleasant).

mGBA

mGBA uses SDL2 library, so it natively supports Wayland. It is unable to disable screen locker though.

Minecraft

Minecraft is not compatible with Wayland because of GLFW. Upstream does not seem to really care, despite the requests. The official launcher does not seem to be functional too. So, no Minecraft for me at the moment.

This summary might be updated if I find time to do it and if I am not too lazy.