Wayland is pretty good, actually

Wayland is an interesting beast. X11, for all its faults, does a lot for the desktop environment. If you’re stretched for time, you could – in theory – just slap a panel onto the default X11 window manager and call it a day. The modern landscape of desktop environments built on top of X11 exists because developers have gotten really good at eschewing X11’s built-in crusty junk for their own new and shiny junk, so that things work as you’d expect them to. For the most part, this kinda works – with enough hacks, you can get things like variable refresh rate, fractional scaling, et cetera.

The problem here is that X11 definitely was not built for those things. Variable refresh rate works, but only if you’re using a single monitor, and mixed refresh rate monitors in a single X session don’t work at all outside of the hardware cursor. Fractional scaling is a hack. Compositing in general is optional and is sort of just stapled onto the existing architecture. X11 does do what it needs to do, which is display windows, but it’s kinda garbo when you need it to do anything more advanced.

Wayland is what happens when issues with the dominant windowing protocol have been festering for decades. It throws away everything and establishes a core set of standards that must be adhered to, along with a (very large) set of extensions that can be optionally implemented. The website https://wayland.app/ shows all the protocols worth knowing, and a lot more on top of that. It’s kinda like Vulkan, in a sense: the core has the basics, and everything else is extensions that can be queried for by clients.

Wayland is such a massive improvement over X11 it absolutely boggles the mind that people try to claim otherwise. I’m glad we’re finally at a point where Wayland has clearly won, and developers are finally free to focus their efforts on the clearly superior choice, instead of wasting more time trying to hack X11 into the 21st century.

48 Comments

  1. 2023-06-29 7:42 pm
    • 2023-07-01 3:08 pm
      • 2023-07-04 12:35 am
  2. 2023-06-29 9:49 pm
    • 2023-06-29 11:58 pm
      • 2023-06-30 9:47 am
        • 2023-06-30 10:40 am
    • 2023-06-30 6:22 am
    • 2023-06-30 7:48 am
  3. 2023-06-30 12:10 am
    • 2023-06-30 4:18 pm
      • 2023-07-01 10:13 am
        • 2023-07-03 10:42 am
  4. 2023-06-30 2:07 am
    • 2023-06-30 3:16 am
    • 2023-06-30 5:54 am
      • 2023-06-30 6:34 am
      • 2023-06-30 6:42 am
      • 2023-06-30 3:32 pm
    • 2023-06-30 9:51 am
      • 2023-06-30 10:31 am
        • 2023-06-30 10:55 am
          • 2023-06-30 11:03 am
  5. 2023-06-30 7:19 am
      • 2023-06-30 2:05 pm
        • 2023-06-30 10:21 pm
    • 2023-06-30 10:45 am
  6. 2023-06-30 10:10 am
    • 2023-06-30 10:32 am
    • 2023-06-30 12:21 pm
    • 2023-06-30 2:17 pm
    • 2023-06-30 8:34 pm
    • 2023-07-03 10:15 am
    • 2023-07-05 10:56 am
      • 2023-07-05 11:48 am
        • 2023-07-05 12:10 pm
          • 2023-07-05 12:32 pm
          • 2023-07-05 4:08 pm
  7. 2023-06-30 11:10 am
  8. 2023-06-30 12:43 pm
  9. 2023-07-01 7:11 am
  10. 2023-07-01 8:46 am
  11. 2023-07-01 5:21 pm
  12. 2023-07-02 11:15 am
  13. 2023-07-05 6:57 am
  14. 2023-07-07 7:30 am
  15. 2023-07-09 2:03 pm