Wayland Isn't Going to Save the Linux Desktop (2022)
dudemanguy.github.io
dudemanguy.github.io
Similar story for Pipewire; Pulseaudio had crackles and Pipewire didn't. Such is the way of life.
Having said that, I'm super-duper glad you found a workaround for trouble you were having.
Sure, let's go with that!
I think it is mostly because of individual applications, not particularly KDE/Plasma. Some software works better on Wayland, some on x11, some on both.
If, when Wayland becomes default, it is as faultless as PipeWire is right now, it will join the pantheon of successful open source software, alongside the kernel, git, gcc, clang, etc.
The laptop docking story is also significantly better. Waylands libinput lets me assign mouse accel and keyboard repeat rates/rebinds to specific devices, and they always get applied on hotswap, no custom udev rules needed. For audio, Pipewire is sensible and Just Works. Kanshi works sensibly in a way that I was never able to convince dockd to.
Wayland is what brought me from “I like Linux for a work/coding environment, but it’s too fiddly for a daily driver” to finally consistently using Linux in a personal and professional capacity.
The big problems are the social ones - I think the author is correct that allowing fragmentation is a big big mistake that cannot be recovered from and wastes everyone's time.
I'm also concerned about the "justify your usecase" issues. I know why people like to say that kind of thing when they have a philosophy that they don't want to toss out but to me it's never been a way to win people over to working on your system. Usually one cannot understand every single use case or at least understand how important it is to the people who want it. Making life difficult for others is not a recipe for success.
Your comment here actually feels like what Wayland is good at: creating a development model where concerns & priorities can organically emerge, versus the anti-fragmentation model where there is one and only one canonical protocol or implementation:
> Usually one cannot understand every single use case or at least understand how important it is to the people who want it.
Compare versus what came before too. X dead ended itself in a lot of ways. The decentralized model seems to be working pretty well, albeit many people disagree, and many expected a faster more seamless changeover, and hang this albatross of expectations around Wayland's neck.
Most users will never care, but Wayland seems to be remarkably implementable. People kick out fun random idea implemntatjons with surprising regularity. This starting light seems like a huge win, to me, that enables a lot more ecosystem innovation that alternatives. You're just managing some OS DRM object buffers, via some protocols? Simple, nice. And then the other concerns later on, ok. This is a good gradient to me, and one that promoted a systems diversity health, that feeds forward, brilliantly. Being small & targeted & organically growing other layers keeps seeming like a huge win.
The idea that it's fun for some developers because they get to try things is of no use to users like me. I also question that fun if people are trying to get important features out and cannot because someone doesn't accept the use case.
If you are going to doom & give up on Wayland or any idea because it's not popular enough, because it hasn't hit a critical overwhelming mass of support where the slow beleaguered giant corporations don't all support it, progress is impossible. We'll never meet your bar, change is impossible, & we shouldn't ever try doing anything but what we already did.
What people really need is a "desktop protocol" not a "display protocol".
Since there is no network transparency, you won't have the ability to interoperate with graphical applications running on non-Linux machines either.
Meanwhile I was able to ssh -X into my FreeBSD desktop with a low end Linux laptop and run the same apps with the same settings etc. by using X11 which runs on both systems.
That being said, I've migrated to Wayland this year because it has become more stable for what I run compared to Xorg, and from following the Wayland and Fedora projects closely, I feel it has recently reached a high level of development, and more importantly, development interest (both of which will likely cause it to supplant Xorg sooner than later). In short, Wayland definitely seems like the Way to go ;-)
(You know it's also GNOME devs behind it, judging purely from the feedback the author reported.)
This is the difference between application programming and infrastructure programming. When doing app development, it's best to limit scope as much as possible in order to reduce risk. If you don't need it, toss it.
On the other hand, infrastructure only exists to reduce overall risk across all apps. It does this by accepting risk and dealing with the gnarly bits so apps don't have to. Put too much opinion into infrastructure, and that pushes that risk onto all of the apps. Often, the apps don't have the leverage to deal with that, so people stop using the infrastructure.
Also, there's a difference between limiting scope and rejecting it. People are going to walk across the street whether you paint crosswalks or not. If your infrastructure fails to accommodate a present need, people will just work around/against it.
The implementations can be plenty different as long as they conform.
It's not that I'm not getting your point. But part of the reason I wrote this rant is better than others, is because it's not harping on the point of "omg! someone dared to write a standard that has multiple implementations! the audacity!", but instead has criticisms of the standard itself.
I understand you don't like the standard-and-multiple-impls model, but it's worth noting that the most popular Wayland implementations share plenty of auxiliary and utility code in the form of libraries (e.g. libinput, libdisplay-info, etc). It's not as fragmented as it may seem, people are pretty reasonable.
Personally I think this is a healthy way to run things, for example because changes to the standard can easily be validated in multiple implementations, which tends to promote better quality for all over time.
It's also not top-down, either. The Wayland governance model consists of voting members from the compositor authors, and for protocols to enter the wp or xdg namespaces, there must be multiple open source implementations. That means that by the time the protocol is official, at least first implementations already exist. It's not moving that slowly, overall.
Also, the Wayland model doesn't preclude compositors sharing as much of their code as they want. "Implement it ones and several projects benefit" also happens in the Wayland world, for example there are multiple compositors built on libraries like wlroots.
Xorg wasn't the only X11 implementations either. Fragmentation in the X Windows space did reduce over time as the open source impl sprinted and ahead and won out over everyone else by miles, but it did exist for many years. Most people are only familiar with an X11 space that already had 25 years of maturing and consolidation on it.
The web only really has 3 engines (gecko/webkit/blink), and they still vary enough that it causes problems.
> Also, the Wayland model doesn't preclude compositors sharing as much of their code as they want. "Implement it ones and several projects benefit" also happens in the Wayland world, for example there are multiple compositors built on libraries like wlroots.
Yeah, I used to have great hopes for wlroots uniting basically everything except KDE and GNOME and mostly solving the fragmentation. Then I found some cool new compositor that I wanted to try, and it ran alright so I went to configure it to my keyboard layout (I could kind of get by on QWERTY to test that it ran but I'm not gonna live like that), and hey wlroots implements keyboard configuration so it should be easy right? Yeah, so it turns out wlroots provides the ability to support kb layouts, but every compositor has to actually wire up that code and this one didn't. And that's the most recent time I gave up on wayland.
> Xorg wasn't the only X11 implementations either. Fragmentation in the X Windows space did reduce over time as the open source impl sprinted and ahead and won out over everyone else by miles, but it did exist for many years.
Agreed; I've actually run into other X servers that were worse and I'm glad Xorg won (which is unusual; usually I prefer diverse implementations, but it turns out I prefer one working implementation).
> Most people are only familiar with an X11 space that already had 25 years of maturing and consolidation on it.
X is 39 years old[1]. Wayland is 14 years old[0]. If it's going to take another 11 years for Wayland to catch up I'm going to just wait for Arcan or whatever replaces Wayland.
To tell you the truth, I'm not even aware if this is underway, or whether the computer I'm using right now uses some flavor of x11 or of wayland. But you can be certain that if every distro adopts it, every distro will have the same flavor. That problem is for early adopters only.
Ultimately, Wayland is where all the energy is. It has shortcomings but is good enough and all future work (HDR for example) is going to be done on Wayland.
Want to detect a left click? Sure! How about the back/forward buttons on the mouse? nope, not in the API; well, if you try pressing them you'll see them going to mouse button constants 8 & 9, but I didn't find that in any documentation.
Want to get scrolling events? There are mouse press things for that (even left/right!). Want to also handle touchpads which may have fractional scrolls? Well, there is some confusing "valuator" stuff, and you can take a delta between two valuator event floats.. but after using it for a while, you'll notice that the app will like randomly scroll by large distances. Turns out... that valuator value is a globally accumulated value, so you have to hack in a thing to "reset" the "calibration" of that any time the mouse exits a window (try it - move mouse out & in a window, scroll one tick, repeat - you'll never scroll anywhere).
For text input, you can thankfully call a thing that'll do XCompose & most key handling for you, but to handle xmodmap I believe you have to write the mapping functionality yourself; didn't bother. Then there's some stuff about how in some context a window was not focusable through some specific method for some undetermined amount of time after being made visible, but there might be some reason for that (never bothered to figure it out).
Now, I don't know if wayland does any better on any of this, but I sure hope it does, as it does seem to at least make an attempt at being usable. Maybe wayland will go the same route, with a middle-man library that handles all the DE-specific stuff. There's already some of that for window decorations.
Yes? They're just more buttons; how would you expect them to work?
[0]: https://wayland.app/protocols/wayland#wl_pointer:event:butto...
[1]: https://github.com/torvalds/linux/blob/4a0fc73da97efd23a383c...
Anytime I've ever had to map extra mouse buttons I've always had to do a discovery step to figure out what "button number" any specific mouse button mapped to.
https://www.x.org/releases/current/doc/man/man4/mousedrv.4.x...
"""
Option "ButtonMapping" "N1 N2 [...]"
Specifies how physical mouse buttons are mapped to logical buttons. Physical button 1 is mapped to logical button N1, physical button 2 to N2, and so forth. This enables the use of physical buttons that are obscured by ZAxisMapping. Default: "1 2 3 8 9 10 ...".
"""
I think it's more convention, as the applications are ultimately what are deciding to do with the mouse button. There's nothing to say that they could not put a context menu on the left click.
[0]: https://github.com/torvalds/linux/blob/4a0fc73da97efd23a383c...
That said, I do think it would be nice to have written down that 8/9 are commonly used as backwards/forwards. They are just not explicitly backward/forward buttons though.
I was looking to switch to wayland in my VM after noticing that it does have much lower cpu utilization, and better compositing behavior, at the same time. Yet, can't do it. right or wrong, wayland's stance on security before convenience on the whole clipboard access thing means I cannot copy-paste between VM and host, because those vm tools do not support wayland, and I don't know when they will.
Also, I noticed that people who prefer obscure window managers or desktop environments are mostly in a bad spot, as the amount of WMs that support wayland isn't much.
Guest needs to have spice-guest-tools installed and probably be using gnome - I have had no success with other environments but my testing was shallow.
Alternatively, you can share the host's wayland socket with the guest over the network via waypipe: <https://gitlab.freedesktop.org/mstoeckl/waypipe>
In this scenario the clipboard will function without any issues and with no further steps. And wouldn't require a compositor running in the guest.
You can also have a wayland connection between the guest and host through shared memory buffers via virtio-gpu. But this requires crosvm as qemu doesn't have this functionality. Guest kernel needs to be >=5.16 and be compiled with CONFIG_DRM_VIRTIO_GPU and this tool is required: <https://github.com/talex5/wayland-proxy-virtwl>
Well that's just a nonstarter.
(The waypipe thing is interesting, though)
I use Telegram Desktop a lot and I want their custom notifications, not the ugly thing that pops up on Wayland which doesn't even take me to Telegram when I click it.
Accessibility and readability, even for the sadness of the advocates of "content density", should come first.
copy/paste was a solved problem 20 years ago, yet nowadays it's always a crapshot as to whether or not you copied what you think you did, etc.
I've had websites insert non-printing characters into text and it will take forever to find it.
…which completely breaks any workflow that relies on observing the clipboard from a second application while using another…
- Last time I checked, I could not share my screen over Zoom. This could have been fixed now. (I know, it's a proprietary application but still...)
- My favorite screenshot application (KSnip) still has reduced functionality over Wayland.
I think these issues are representative of many users' experiences, that is, things usually work as usual or improved, but there are some corner cases where there are annoyances. Let's hope they will get sorted out.
Meanwhile the winners are the users who chose not to play this game with their machines or rant about how a basic app does not run on Wayland and runs on Xorg or vice versa and instead use either a Mac or Windows machine with standard defaults.
If you're app glitches on either windowing system and you continue to rant because you need to tweak the dotfiles, systemd services or dive into config files, then you might as well use WSL2 instead.
At least Windows has a much more pleasant desktop environment.
X11 was far ahead of anything out there when we had compiz with spinning desktop cubes and wobbly windows running absolutely smooth even with the most basic GPU in 2006(!). Something had to be done about that.
The only thing X (and KDE) seems to have gotten right is mixed (and fractional) scaling, Windows can't do even decimal scaling properly within just the core UI.
The only problem I ever had was the poorly packaged proprietary ATI/AMD driver, and now we have AMDGPU.
I just set my refresh rate and enable TearFree (via xrandr), and I'm set.
---
Windows is the desktop that constantly interrupts my life by either breaking or running straight-up malware. And then it gives me pointless notifications I'm not allowed to disable (group policy) and bullshit ads I would never ask for.
If you really believe the Windows desktop is pleasant, you must be really easy to please, and really difficult to annoy.
I've never not had things work in X, so your idea about going over to 2 user-hostile OSs to solve a non-issue doesn't resonate with me.
> At least Windows has a much more pleasant desktop environment.
Boy oh boy, that's not what people are saying after using windows 11. The entire reason to be on linux for me is to recreate & extend the best of what windows UX was, but windows UX is past its glory days and into active sabotage.
As a former X11 application developer I will say that X11 should have been put out to pasture a long time ago. It's been moribund since the 00s and the quicker that distributions move to Wayland only, the quicker Wayland will improve.
The only "drawback" was that when I launched windows (ex: wireshark) at root, it didn't work and I had to previously allow "root" to open windows on my login (with xhost). Thought it was quite neat
Steam doesn't seem to scale properly. Firefox struggles with native Wayland, especially if you also want GPU acceleration (same with Chromium though). Games are a mixed bag. A pure X environment didn't have these issues in my experience (but it obviously has others).
Windows, at least, seems to be getting worse by the day, and it was already pretty bad 10 years ago.
Mac at least seems to not be getting worse.
(On other areas and the overall experience I might agree. WSL2 was a big step forward though)
I've been using Linux for my desktop for 25 years now and every time I try Windows or Mac, I come away disappointed; these are not professional operating systems, they are hobbyists playthings, I discover every time and time again.
So I guess; YMMV?
I don't agree with it. I don't think it makes a good argument and it reads more like an angry rant than anything else.
I used to use and love Apple. Then I discovered the modern Linux desktop and never looked back.
I'd guess those numbers changed when Wayland became the default for Ubuntu 22.04, which was released in April 2022. Does anyone know of newer data?
Both macOS and Linux (X and Wayland both, actually) do scaling nicer on average.
So I don't know what decimal scaling you're talking about when Wayland can't even do 125% or 150% scaling without half the app ecosystem breaking.
It doesn't handle even decimal I don't dare try fractional. I guess our standards differ, it's not fine.
> You have to look really deep to find stuff that doesn't work (like event log or group policy editor, leftovers from a bygone era Windows, things I don't use day to day, and I'm sure nobody uses them every day)
It really doesn't take much to stumble upon things like that when you use Windows on a daily basis. I wouldn't call system menus "leftovers from a bygone era".
If you restrict yourself to only the parts of UI that mostly scale well, of course then scaling works well. But that's silly.
> As it is now, as a developer, using a browser and Jetbrains IDE or VS Code, Wayland is completely unusable and makes the whole Linux space feel more like a toy than a professional tool.
Neither JB IDEs or VS Code are native Wayland applications. Though I can't say I've had issue with JetBrains' software under Wayland's scaling.
It is about the experience you craft for yourself, my desktop is different than yours, it is supposed to be like that, and is the reason why linux scale from microcontrollers, to game consoles, to datacenters
These people are out of touch
How can anybody distribute complicated software that is supposed to support a wide range of kernels, X11 + Wayland, open + closed source drivers, several desktop environments, etc? To make matters worse there's endless combinatorics in the versions of those packages because nobody can agree on an upgrade strategy.
Maybe we could demand support if we had more users but Linux represents a small fraction of the desktop market.
This was shared just recently on HN and it perfectly describe the issue:
https://notes.volution.ro/v1/2023/09/remarks/64299f31/
I have some more, perhaps it is time for me to start blog posting.. we shall see
predictable.