Wayland vs X11: Summary

2 minute read

I’ve been immersed in the world of Wayland on Linux since July. The journey hasn’t been entirely smooth, and I’ve found myself circling back to X11, which, surprisingly, seems to offer a more seamless experience for my daily tasks. While Wayland performed adequately for my everyday workflow involving IntelliJ products and web browsers, overcoming numerous obstacles was a constant theme. Some challenges were surmountable, but others proved insurmountable, prompting me to reevaluate my choice.

Here are my observations as of December 2023:

Pros of Wayland:

  • Lightweight: The codebase is leaner, free from the burden of legacy code that often complicates maintenance.
  • Vertical Sync: The entire experience operates smoothly without the need for tweaking, ensuring a seamless display in every frame. (This holds true until encountering programs using Xwayland without native Wayland support, a point I’ll get back to later.)
  • HiDPI Support: Wayland handles HiDPI screens more effectively. I can effortlessly drag a window between screens with different DPI settings, and it adjusts seamlessly. (Again, until Xwayland enters the picture.)

Brownie Points:

  • Linux-Centric: Wayland’s integration is deeply tied to the Linux ecosystem, making it a distant prospect for adoption in BSDs, especially OpenBSD.
  • Nvidia Woes: The closed-source nature of Nvidia drivers poses a significant hurdle, as their refusal to collaborate with other developers makes seamless integration nearly impossible. The plea to Nvidia: a change in attitude or open-sourcing the drivers!
  • Xwayland Quirks: This layer, facilitating the operation of X11-only applications on Wayland, comes with glitches. Some render certain programs unusable.
  • Scaling Woes: Xwayland lacks the ability to scale windows, and the attitudes of Wayland compositors toward this issue are less than ideal. While some resize windows with a blurry algorithm, others, like Hyprland, offer an option not to scale programs at all—preferring users to set DPI settings directly in the X application. Certain GitHub issues addressing this problem are prematurely closed by maintainers who insist on waiting for Xwayland to support fractional scaling—a development that might never materialize.
  • Performance Issues: Xwayland’s sluggish performance, coupled with randomly popping in old frames, renders some programs practically unusable. Glitches like popup menus appearing on the opposite side of the screen and disappearing upon mouse movement are persistent.

The tipping point came during the Christmas period when I ventured into game development. Bevy performed admirably, natively supporting Wayland. However, Godot relies on Xwayland for its game editor, leading to disruptive glitches such as random frame appearances and menus misaligned with the mouse cursor. Editing scenes became a frustrating ordeal, with frames from 10 seconds ago freezing on the screen until a mouse movement or click intervenes. This rendered Godot entirely impractical on Wayland.

While I’ll keep Wayland installed, I plan to periodically reassess its performance to see if improvements materialize over time.