· 6 min read ·

The Protocol Fragmentation That Made Wayland's Transition So Expensive

Source: hackernews

The claim made in a widely-discussed post that Wayland set the Linux desktop back by 10 years generates strong reactions because it contains enough truth to be uncomfortable. Screen capture broke. Clipboard managers stopped working. Remote desktop solutions vanished. Global hotkeys disappeared. Accessibility tools regressed. These were not minor inconveniences for edge users; they were complete feature removals for workflows that had functioned reliably on X11 for years.

But attributing the cost to Wayland’s architecture misses the more precise cause. The core design is sound. The expense came from two compounding mistakes: defaulting to Wayland before the surrounding ecosystem was ready, and failing to establish binding protocol standards that would give application developers a single stable target the way X11 always had.

What Actually Broke, and When

Wayland 1.0 shipped in October 2012. Fedora 25, released in November 2016, became the first major distribution to default to GNOME on Wayland. Four years is not a long time to bring a display protocol ecosystem to parity with X11’s three decades of accumulated extensions.

Screen capture was the most widely felt regression. Under X11, any application could call XGetImage() or use the MIT-SHM extension to capture framebuffer contents. OBS, scrot, ffmpeg’s X11grab, and recording tools of every kind relied on this. On native Wayland, none of them worked. The replacement, routing capture through xdg-desktop-portal with a PipeWire video stream, required three moving parts to land simultaneously: compositor support, portal implementation, and application integration.

PipeWire stabilized around version 0.3 in late 2019. Fedora 34, in April 2021, was the first major distribution to ship it as default. Firefox added PipeWire screen capture support in version 86, February 2021. Chrome followed in version 96, November 2021. OBS Studio didn’t ship native Wayland capture until OBS 28.0, September 2022. So from Fedora first defaulting to Wayland in November 2016, to OBS working correctly on Wayland in September 2022, is roughly six years. For anyone doing video production on Linux, the Wayland transition meant six years of --platform xcb workarounds.

Clipboard managers tell a similar story. The zwlr_data_control_v1 protocol, developed by the wlroots project, allows an application to monitor and control clipboard contents without being in focus. Tools like cliphist and wl-clipboard work correctly under Sway and other wlroots-based compositors. CopyQ, one of the most widely used clipboard managers on Linux, could not function under GNOME on Wayland because GNOME declined to implement zwlr_data_control_v1. The standardized replacement, ext-data-control-v1, went through the official wayland-protocols process and wasn’t practically available until 2023. In the interim, CopyQ users on GNOME either ran the application under XWayland explicitly or had no clipboard history at all.

Global hotkeys were gone in a different way. X11’s XGrabKey() allowed any application to register a key combination delivered to it regardless of window focus. Password managers, push-to-talk software, media control apps, all relied on this. Wayland has no equivalent in the core protocol. The xdg-desktop-portal GlobalShortcuts interface arrived in 2023. That is seven years after Fedora’s default switch before a standardized solution existed. Remote desktop fared worse: x11vnc requires X11 entirely, and the compositor-specific solutions that emerged (GNOME Remote Desktop, KDE’s KRdp in Plasma 6.1) did not arrive until 2023 and 2024 respectively.

The Compositor Fragmentation Problem

X11 presented application developers with one target. The X server had extensions: XFIXES, MIT-SHM, COMPOSITE, DAMAGE, RANDR. An application that worked with these extensions worked on every X11 desktop, regardless of which window manager was running. Wayland discarded this property in the name of security and modularity, and the consequences have been felt ever since.

Under Wayland, the compositor is simultaneously the display server, window manager, and extension host. When a feature requires a protocol extension, each compositor must implement it independently, or not at all. The result is a protocol landscape fractured along compositor lines.

The wlroots project, backing Sway, Hyprland, and others, developed wlr-protocols: a collection of extensions covering features the official wayland-protocols set did not address. This includes zwlr_screencopy_v1 for screen capture, zwlr_foreign_toplevel_management_v1 for window management by external clients, zwlr_data_control_v1 for clipboard access, and zwlr_layer_shell_v1 for panels and overlays.

GNOME declined to implement these protocols. The reasons were substantive: the zwlr_ protocols were designed around wlroots’ architecture, had design decisions GNOME’s developers objected to, and in GNOME’s view gave arbitrary clients too much access to sensitive information like clipboard contents. GNOME’s stated position was that these features should go through the official wayland-protocols staging process for proper review and broader design input.

The outcome was predictable. For roughly 2019 to 2023, a large class of applications simply did not work under GNOME on Wayland. Clipboard managers, taskbars requiring window information, screenshot tools, screen recorders: all of them worked on Sway, did not work on GNOME, and had worked on X11 everywhere. Application developers had to choose between GNOME-specific D-Bus interfaces, the xdg-desktop-portal for the limited subset it covered, or XWayland with its rendering penalties.

The ext- protocol namespace represents the eventual resolution: protocols going through proper wayland-protocols staging that all compositors are expected to implement. ext-data-control-v1, ext-foreign-toplevel-list-v1, and others have been landing since 2023. The resulting protocols are better-designed. The cost is that the process took years while users worked around broken workflows, and there is still no universal binding requirement that forces a compositor to implement even the staged ext- protocols before shipping as a distro default.

XWayland: The Safety Net With Holes

XWayland exists as the compatibility layer for X11 applications on Wayland desktops. In theory it means nothing breaks during the transition. In practice its limitations accumulated in ways not always visible to users.

Fractional scaling was the most visually apparent. On a 125% or 150% scaled display, X11 applications running through XWayland render at 1x resolution and are upscaled by the compositor, producing blurry text and UI elements. The wp-fractional-scale-v1 protocol and XWayland fractional scaling support both arrived in 2022. For users on HiDPI displays before that, the choice was blurry X11 apps or broken Wayland-native equivalents.

The explicit synchronization problem was more severe on NVIDIA hardware. Wayland’s original design used implicit GPU synchronization, which conflicted with NVIDIA’s driver model, causing screen corruption and tearing for XWayland applications on NVIDIA GPUs. The fix required the linux-drm-syncobj-v1 protocol, kernel 6.8 support, and compositor implementations, a set of changes that landed in early 2024. Users with NVIDIA cards running XWayland applications saw random rendering corruption for years, which contributed significantly to NVIDIA’s long reputation for Wayland problems even on hardware that was otherwise capable.

Whether “10 Years” Is Fair

The ten-year framing overstates the case for individual users while potentially understating the aggregate cost across the ecosystem. The features that regressed were eventually recovered. KDE Plasma 6.0, which defaulted to Wayland in February 2024, represents a point where a Wayland desktop is genuinely more capable than X11 for most users: better frame pacing, measurably lower input latency, better HiDPI support, no screen tearing by default. The architecture works. The security isolation model addresses real problems. X.Org’s codebase was genuinely becoming unmaintainable, and staying on X11 indefinitely was not a viable answer.

The specific cost was not the architecture itself. The cost was the decision to ship Wayland as a default before the portal infrastructure, explicit sync support, and protocol standardization work had resolved the most common regressions. And it was the failure to establish a mandatory protocol baseline that all compositors had to implement, which would have given application developers a single target rather than a compatibility matrix of compositor-specific subsets.

X11 gave developers one thing to target for thirty years. The Wayland ecosystem spent most of a decade converging toward that same property and is finally close. Whether that constitutes ten years of setback is a judgment call. What is not a judgment call is that a large number of users ran broken configurations, maintained workarounds, and filed bug reports against problems that would not have existed if the default switch had waited for the ecosystem to actually be ready. The right architecture, shipped too soon, with no governance mechanism to enforce a minimum viable baseline, produced a regression period that was entirely predictable and largely avoidable.

Was this interesting?