I was a Wayland detractor, had very bad experiences with it in the past, but I decided to give it a try again, and it’s time to say goodbye to Xorg.
I tried Wayland for the first time in 2016, I was using ArchLinux, tried to create a Wayland setup using Sway on my Intel laptop. The remnants of that setup, can still be found in my GitHub repo.
I had a lot of problems with it, a LOT of applications didn’t work, not natively, not through XWayland, and the few applications that worked, had a lot of bugs, like closing unexpectedly, stop responding to mouse events, sporadic freezes, etc. I use my PC for work, therefore I can’t afford to have a buggy system, so I decided to go back to Xorg.
My setup was working perfectly with Xorg, using Xfce as my desktop environment, but the news about Fedora and other distributions going Wayland by default, Gnome 45 and its many Wayland improvements, Nvidia drivers supporting GBM, and the fact that I was curious about the advances of Wayland, made me want to give it a try again.
I’m not using my laptop anymore, currently I use a desktop PC with an AMD Ryzen 9 5950X, 2 NVMe of 1TB each one, 64GB of RAM, and an Nvidia RTX 3090 Ti (one of the main reasons of the curiosity to try Wayland). The software installed is ArchLinux with Gnome (45.3), BTRFS, the Nvidia drivers from the official repositories (545.29.06 at this date), and, Xwayland (23.2.4).
I switched from Xfce (Xorg) to Gnome (Wayland) about 2 months ago, and I have to say that I’m very happy with it, I haven’t had any problems with it after tweaking some configs, I’m using it with the Nvidia drivers, and I haven’t had any problems with it either, Xwayland works very well too, I like to play games on my PC using Steam and Lutris and everything has worked perfectly there as well.
I only have noticed some bugs on the Steam client, which creates some artifacts in the application while scrolling, but it’s not a big deal.
I use my PC for work, so I use a lot of software, which includes a lot of the infamous Electron apps: VSCode, Slack, Discord, Spotify, Element Desktop, Obsidian, Signal Desktop, Termius, Insomnia, Tidal HiFi, and many others, as well as Google Chrome, WeeChat, Dino (XMPP client), and a lot of other software. Again, I haven’t had any problems with the mentioned software after tweaking some configs.
As usual, there are some alternatives that should “just work” with Wayland, but the amount of configurations required to get the previous software working is very small, plus, the fact that I’m already used to that software for years, makes me want to keep using them and I’m very happy with the results.
Xorg and Wayland are totally different, so, it’s expected that some settings need to be updated, here are some of the settings I had to update to get my setup working properly:
Many users have noticed that when running a Xwayland application inside a Wayland session, the screen sharing feature doesn’t work as expected. It’s because Wayland security model doesn’t allow X clients to access the content of Wayland applications, so, the screen sharing feature will only show the applications running under X. To solve it, all you need to do is install xwaylandvideobridge and it will do the job.
Some apps don’t respect or just ignore the system’s dark mode (i.e xfce4-terminal, Element Desktop, and others), to fix it you need to:
# Install the gnome-themes-extra package
pacman -S gnome-themes-extra
# Set the following setting using gsettings
gsettings set org.gnome.desktop.interface gtk-theme "Adwaita-dark"
All you need is a
.conf file in your
$XDG_CONFIG_HOME folder (usually
$HOME/.config), or whatever the application read it (if capable) with the following content:
There are applications that doesn’t read the
.conf file, so you need to update the
.desktop file, to avoid changes being overwritten, you can copy the
.desktop file to your
$HOME/.local/share/applications) folder, and update the
Exec line with the following content:
Exec=/usr/bin/executable --enable-features=UseOzonePlatform,WaylandWindowDecorations --ozone-platform=wayland
and it will configure the application to use Wayland.
At this point, Steam doesn’t support Wayland and you will have rendering issues when scrolling the webviews inside the app, unless you turn off hardware acceleration for the webviews rendering and then it will work fine. To do that, go to
Steam > Settings > Interface > Turn off "Enable GPU accelerated rendering in webviews".
I use the visual-studio-code-insiders-bin package, and it reads the configuration from
$HOME/.config/code-flags.conf, so you can add the same content as for the Electron apps. I decided to add this app here separately because as far as I know, the
code app from the official repositories doesn’t work with Wayland.
Please read the ArchWiki for more information about this. Basically, enable DRM KMS and you’re good to go. For Xwayland apps, you want to enable
kms-modifiers on Gnome, that’s as easy as running the following command:
gsettings set org.gnome.mutter experimental-features [\"kms-modifiers\"]
GTK 3 and 4 have Wayland enabled by default, but you can force it for another versions by setting the following environment variable (probably in your
Check this if you’re having issues with themes.
QT 5 and 6 have Wayland enabled by default only if the
qt6-wayland packages are installed, for another versions, set the following environment variable (probably in your
I use the following extensions:
- nautilus-open-any-terminal: Context-menu entry for opening other terminal in Nautilus. Note: I use Xfce terminal because Console/Gnome Terminal does have a focus issue when you open a link from the terminal and go back to it. You can use it to have the “Open in terminal” option in Nautilus for any terminal you want.
- vesktop: A standalone Electron app that loads Discord & Vencord. Supports streaming audio via Discord’s screen share feature, something that the official Discord app doesn’t support yet.
- Disable the “Activities” hot corner if you don’t like it.
- Set a fixed number of workspaces. That way, you can have pre-defined apps for each workspace number.
- If an app supports Wayland, please use it, it will improve your experience by a lot. Running apps through Xwayland is not bad, but it’s not the same as running them natively and you’ll notice it.
- You can use xorg-xeyes to check if an app is running through Xwayland or not, just run
xeyesin your terminal and move the mouse on the app’s surface. If you see the eyes moving, it’s running through Xwayland, if you don’t, it’s running natively.
I’m very happy with my current setup, I haven’t had any problems with it, and I’m very happy with the performance of Wayland, I’m not going back to Xorg, and I’m looking forward to the future of Wayland.