The web site of Vas — 2021-05-04

How many decades do we need to wait for Wayland to be usable ?

I need 100% of the people evangelising about Wayland to shut the fuck up about muh protocol for a moment and make it accessible. I don’t mean making it noob-friendly. I mean making it friendly to anyone who isn’t a compositor author. I’m not an idiot, I’ve written my own X11 window manager, I can read documentation, I’ve been using Linux full time since Ubuntu 7.10, my day job is literally managing Linux servers, I’ve been following Wayland since 2010, I’ve seen all your fucking presentations on YouTube about why X11 sucks, and still I can’t figure out basic things about Wayland and its ecosystem, nor do I even know where to look to figure it out short of going through the source code. Since 2015, I’ve tried migrating to Wayland at least once a year, and while there are slight improvements, I stumble on the same fucking bullshit every single time and my patience is wearing thin.

I launch Weston, the reference implementation, and my first problem is that Firefox doesn’t work until I’ve set MOZ_USE_WAYLAND=1 and DISPLAY=wayland-0. I understand that is Mozilla’s problem, but figuring it out was miserable. The first environment variable is at least documented on the Arch wiki (manpages aren’t good enough for zoomers, I guess). I figured the other out by guessing. Under no circumstances should « just guess bro » be an acceptable solution to Firefox not working.

I notice Firefox scrolling is sluggish compared to X. Maybe it’s related to running nouveau on an ancient NVidia card, but it ran just fine on X with compton, which ought to have a lot more useless copying than Wayland — less copying is one of the points of Wayland. I also notice some weird bugs relating to the cursor size, on a display in uniform pixel density.

X applications of course don’t work, and I need to install and enable XWayland. Why merely the presence of the library on the file system doesn’t suffice, I do not understand.

Weston uses the weston.ini file whose documentation is at least present, albeit not ideal. I spend a few minutes on it and I figure out how to use my own keyboard layout, because not all of us use US Qwerty. Because I am trilingual, this is the easy part, so I try to figure out ibus. I give up soon after. Knowing more languages than just English is too difficult for Weston, apparently, since it’s a tiny minority of 7 billion people or so.

I am left-handed, so I use the mouse with my left-hand. I know Weston uses libinput for peripherals, so I google how to swap the mouse buttons. I get results for X11 configuration, but nothing about Wayland or Weston. I find a hilarious reddit comment saying the libinput protocol is documented and you can write a simple library for it. Great idea, maybe the reference implementation should have that. Making Weston accessible to 10% of the human population is too much to ask for.

Okay, whatever, let’s change the shortcuts at least. I read on the arch wiki that I can change the mod key from super to alt or something. Nothing on how to change the bindings themselves. If I dislike any of the default bindings or I want to make a new one, I’m supposed to get used to it, I guess.

Okay, fuck it. Weston provides the ability to write your own shell plugin. I try to find documentation on how to write a plugin so that I can port my X11 window manager to a weston shell plugin and side-step Weston’s retardation. The whole point is that it’s a better protocol, so hard could it be ? Naturally, I find nothing ; no readme, no manpage, no API. Guess I’m supposed to read through existing shells’ code and ask in the mailing lists.

Sometimes I hook my computer to a TV and I want to dynamically reconfigure the displays. Weston recognises external displays fine when you plug them in, but there is nothing equivalent to xrandr.

I have a password manager, and it’s important to have it type my password instead of copying it to the clipboard, where it can be highjacked. This doesn’t work in Wayland — I’m supposed to type it out every time, or copy-paste it, breaking the point of increased security.

I can’t even take fucking screenshots with an external tool.

Keep in mind that all of the above are trivial to solve under X, even if you know next to nothing about Linux and have decided dwm is the best blace to start as a noob. With a single google search, you will immediately find first-party and fan documentation about exactly what you need to compile software, how to get the source code, how to patch in extra features, how to initialise it and make it have all the bullshit you want. For programmers, Xlib will tell you exactly how to talk to it, what events it fires and what kind of responses it expects. For Wayland, the solutions are random arch wiki articles that document 10% of what you actually want on a good day and reddit comments about discussing new protocols (read : it isn't ready yet). This is the worst-case scenario for X versus the batteries-included reference Wayland compositor, and somehow after a decade of work, Wayland can't do 1% of what 10 German dudes who like Plan 9 too much did.

At this point, I’ve already given up on 2021’s attempt. Wayland had its initial release in 2008, almost 13 years ago. Since then, what it has to show for it is :

You want to tell me that over 13 motherfucking years, no one involved in Wayland thought that it would be a nice idea to have a central, standard, or at least conventionally common way for compositors to configure things like the screen, the keyboard, the mouse, and basic capability-based security for executables ?

Do you honestly believe that Gnome, KDE, and Sway are so immensely different in architecture that they can’t share basic infractucture through a protocol or library ? If it is so impossible to do, how the fuck do other operating systems do it ? How does X do it ?

It’s been 13 years my dude. 13 years and only now do people start worrying about how to kind of maybe make taking a screenshot possible if you configure things just right and all the features are baked into your compositor.

The V8 compiler is 12 years old. Clang is 13 years old. iOS is 13 years old. How much do I need to wait for Wayland to allow me to enter a line in a script that instructs ibus to start so that I can write in languages that don’t use the Latin script ?

I wish I could compare Wayland to PulseAudio or systemd, because as much as the last two are reviled, at least they work, they fix what they claim to fix, and they document their behaviour in some place that isn’t the arch wiki or a mailing list.

If X.Org is abandonware, then the correct term for Wayland is shitware. It’s irrelevant to me that all the hype is behind Wayland if the evangelists are too busy evangelising to actually make their platform usable. I don’t care how secure or fancy it is versus X. If I can’t even do basic things in Wayland that I can do in X, then all it’s done is redirect 13 years of effort that should have gone towards improving X into shitware for vehicle « entertaiment » systems instead.

How long do you guys need until you can sit down and agree on a common configuration file for things as basic as I/O devices ? Should we give you another 13 years ? Should we wait for NVidia to open-source their drivers ? Should we wait until Rust replaces C ? For some magical reason, Android, macOS, Windows, and even Haiku are able to have functional display systems without X’s garbage code and without Wayland’s artificial restrictions. Maybe you should stop blaming the ecosystem and realise it’s you who are incompetent, overpaid retards.