Your Linux desktop probably already runs Wayland, and the option to go back is disappearing. GNOME 50 removed the X11 session entirely, so Wayland is the only display server available at login. KDE Plasma 6.8 is Wayland-exclusive, and Xwayland handles X11 applications. This guide covers how the two protocols differ, how to check which session you are running, how to fix the common breakages (screen sharing, remote desktop, global hotkeys, NVIDIA flicker), and what to do if you still depend on X11.
Quick Takeaways
- GNOME 50+ and KDE Plasma 6.8+ ship no native X11 login session. X11 apps still run through XWayland.
- Most legacy tools that grab the screen, inject keystrokes, or position windows globally (
xdotool,xrandr,xclip,xev) do not work against native Wayland windows. Replace them with portal-based or compositor-native tools. - Diagnose your session with
echo $XDG_SESSION_TYPE. Expectwayland. - If you must stay on X11, pin an older release (Plasma 6.7 series, a pre-GNOME 50 distro) or use a distro and desktop that still ships an X11 session (Xfce, Cinnamon, MATE, LXQt).
| Desktop | X11 Session Status | Wayland Status |
|---|---|---|
| GNOME 50+ | Removed | Only session |
| KDE Plasma 6.8+ | Removed | Only session |
| Budgie 10.10+ | Removed | Only session |
| Xfce / MATE / Cinnamon / LXQt | Default | In progress |
Sources for the table: the XLibre compatibility tracker lists Budgie 10.10+, GNOME 50+, and Plasma 6.8+ as Wayland-only, while Cinnamon, MATE, LXQt, and Xfce keep X11 by default with Wayland support still in progress. Verify against your distribution’s release notes before planning a migration.
What “Wayland-First” Means in Practice
For three decades, the X Server (Xorg) sat between applications and the display. It handled drawing, input routing, and window management through a separate window manager. Wayland collapses those layers. The compositor (Mutter in GNOME, KWin in KDE) is the display server. Applications render into buffers, and the compositor composites them and talks to the kernel through DRM/KMS and libinput.
The key point: the compositor owns the screen and the input devices. No client can see another client’s pixels, read global keystrokes, or move another client’s windows without explicit permission.
Timeline of the Transition
- GNOME 49 disabled the GNOME-on-X11 session, while GDM could still launch other X11 sessions.
- GNOME 50 (March 2026) removed it completely.
- Ubuntu 26.04 LTS (April 2026) is the first Ubuntu LTS whose default desktop ships without a GNOME-on-Xorg session to fall back to.
- RHEL 10 removed the X.Org server and kept only XWayland.
- The Plasma X11 login session was officially removed in the Plasma 6.8 development branch, with X11-specific code paths in Plasma Shell, System Settings, and device configuration set for deletion. Plasma 6.8 was expected around October 2026.
- Official KDE X11 support ends once Plasma 6.7 is no longer supported, expected in early 2027.
X11 vs Wayland: Architecture and Trade-offs
| Feature | X11 (Xorg) | Wayland |
|---|---|---|
| Architecture | Client-server; separate WM and compositor | Compositor is the display server |
| Screen capture | Any client can capture | Portal + user consent (PipeWire) |
| Global hotkeys | Any client can grab keys | Portal GlobalShortcuts or compositor config |
| Input isolation | None; any app can keylog | Per-client isolation |
| Tearing / frame pacing | Prone to tearing without compositor | Tear-free by design |
| Fractional scaling / mixed DPI | Poor, hacky | Native per-output scaling |
| VRR / HDR | Limited | Supported by modern compositors |
| Network transparency | Native (ssh -X) |
Not built in; use Waypipe, RDP, or VNC |
| Automation tools | xdotool, wmctrl, xrandr |
ydotool, wtype, portals, compositor D-Bus |
| Maintenance | Maintenance mode | Active development |
Step 1: Verify Your Session Type
Run these in a terminal:
echo $XDG_SESSION_TYPE
Prints wayland or x11. This is the fastest check.
loginctl show-session $(loginctl | awk '/'$(whoami)'/ {print $1; exit}') -p Type
Queries systemd-logind directly. -p Type limits output to the session type.
echo $WAYLAND_DISPLAY
Returns a socket name such as wayland-0 when a Wayland compositor is active.
To see which individual windows run through XWayland instead of natively, use xlsclients (from x11-utils/xorg-xlsclients):
xlsclients
Lists only X11 clients. If an app is missing from the output, it is running as a native Wayland client.
On GNOME, press Alt+F2, type lg, and open the Windows tab in Looking Glass to see which windows are X11 vs Wayland. On KDE, run qdbus org.kde.KWin /KWin supportInformation | grep -i "platform".
Step 2: Fix the Most Common Wayland Breakages
Screen Sharing Shows a Black Screen
Browsers and conferencing apps need PipeWire and a working xdg-desktop-portal backend.
systemctl --user status pipewire wireplumber xdg-desktop-portal
Confirms the three services are active. --user targets your user session rather than system units.
Install the portal backend that matches your desktop:
# GNOME
sudo apt install xdg-desktop-portal-gnome pipewire wireplumber
# KDE
sudo apt install xdg-desktop-portal-kde pipewire wireplumber
# Fedora
sudo dnf install xdg-desktop-portal-gnome # or xdg-desktop-portal-kde
Then restart the portal service:
systemctl --user restart xdg-desktop-portal
For Chromium-based browsers and Electron apps, force native Wayland rendering:
chromium --enable-features=UseOzonePlatform --ozone-platform=wayland
--ozone-platform=wayland skips XWayland and uses the native Wayland backend. Many recent builds pick it automatically via --ozone-platform-hint=auto.
xdotool, xclip, and wmctrl Stop Working
These tools depend on X protocol calls that Wayland deliberately blocks. Replace them:
| X11 Tool | Wayland Replacement | Notes |
|---|---|---|
xclip / xsel |
wl-clipboard (wl-copy, wl-paste) |
Works with native Wayland clients |
xdotool type/key |
wtype or ydotool |
ydotool needs the ydotoold daemon and /dev/uinput access |
xrandr |
wlr-randr, kscreen-doctor, gnome-randr |
Compositor-specific |
scrot / maim |
grim, spectacle, gnome-screenshot |
grim is for wlroots compositors |
wmctrl |
KWin scripting via D-Bus, GNOME extensions | No universal tool |
Example, copying to the clipboard:
echo "hello" | wl-copy
wl-paste
wl-copy reads stdin into the Wayland clipboard. wl-paste prints it back.
Setting up ydotool for keystroke injection:
sudo usermod -aG input $USER
sudo systemctl enable --now ydotoold
Adds your user to the input group and starts the daemon that writes to /dev/uinput. Log out and back in afterward.
Remote Desktop and X11 Forwarding
ssh -X does not forward native Wayland windows. Xwayland covers X11 forwarding, and Waypipe provides similar functionality for Wayland.
waypipe ssh user@remote-host firefox
waypipe proxies the Wayland protocol over SSH. Install it on both ends.
For full-desktop access, use GNOME Remote Desktop (RDP) or KRdp:
sudo apt install gnome-remote-desktop
grdctl rdp enable
grdctl rdp set-credentials USERNAME PASSWORD
grdctl configures the RDP backend. Enable it in Settings → System → Remote Desktop if you prefer the GUI.
NVIDIA Flicker, Tearing, or Failure to Start
Use a recent proprietary driver (555+ for explicit sync support) and enable DRM kernel mode setting:
sudo nano /etc/modprobe.d/nvidia.conf
Add:
options nvidia_drm modeset=1 fbdev=1
Rebuild the initramfs:
# Debian/Ubuntu
sudo update-initramfs -u
# Fedora/RHEL
sudo dracut --force
Reboot and verify:
cat /sys/module/nvidia_drm/parameters/modeset
Expect Y. If the value is N, the module option did not load.
Global Hotkeys and Window Placement
Wayland clients cannot grab keys globally or position their own windows. Configure shortcuts in the compositor (Settings → Keyboard → Shortcuts) or via the GlobalShortcuts portal if the app supports it. For automation on KDE, use KWin scripting over D-Bus. On GNOME, use a Shell extension or a dconf keybinding:
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/']"
Registers a custom keybinding slot. Then set name, command, and binding keys on that path.
Step 3: Troubleshooting Scenarios
Scenario 1: Login Loop After a Distro Upgrade
Symptom: The graphical login returns you to the greeter immediately.
Cause: Your saved session or a stale ~/.xprofile/~/.xsession points at a removed X11 session, or a GPU driver fails to initialize KMS.
Fix:
journalctl -b -p err --no-pager | less
Shows error-level messages from the current boot. Look for gdm, sddm, mutter, kwin_wayland, or nvidia-drm entries.
mv ~/.xprofile ~/.xprofile.bak
mv ~/.xsession ~/.xsession.bak 2>/dev/null
Moves legacy X11 startup files out of the way. Wayland sessions do not source them. Move environment variables into ~/.config/environment.d/*.conf instead:
mkdir -p ~/.config/environment.d
echo 'MOZ_ENABLE_WAYLAND=1' > ~/.config/environment.d/wayland.conf
systemd reads these files at session start and exports them to your user environment.
Scenario 2: An Old App Needs X11 and Looks Blurry
Cause: XWayland clients get scaled up by the compositor under fractional scaling.
Fix (GNOME):
gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer','xwayland-native-scaling']"
Enables native scaling for XWayland clients. This flag is experimental. Check your GNOME version’s documentation first, since behavior can change between releases.
Fix (KDE): Open System Settings → Display & Monitor → Legacy Applications (X11) and choose Apply scaling themselves.
Scenario 3: You Must Keep an X11 Desktop
Options, in order of least disruption:
- Stay on a lightweight desktop that still ships X11: Xfce, MATE, Cinnamon, or LXQt. Check each project’s roadmap, since all are working on Wayland support.
- Stay on KDE Plasma 6.7, which keeps the X11 session into early 2027, and plan your migration before support ends.
- Stay on an older GNOME release (48 or earlier) on a distro that still supports it. Expect no new features and shrinking security coverage.
- Test XLibre or similar forks only with caution. The XLibre project’s own tracker notes that some distribution maintainers have raised concerns about packaging it or have declined to add it.
Scenario 4: Preventing Application Hangs from Mixed Sessions
If an app misbehaves under XWayland, force the platform explicitly:
GDK_BACKEND=wayland firefox # GTK apps
QT_QPA_PLATFORM=wayland app # Qt apps
SDL_VIDEODRIVER=wayland game # SDL games
Each variable tells its toolkit to use native Wayland. Swap wayland for x11 to force XWayland when a native backend is buggy.
Distribution and Desktop Comparison
| Distro | Default Desktop | Wayland Status | Notes |
|---|---|---|---|
| Ubuntu 26.04 LTS | GNOME 50 | Wayland only (default session) | Supported through at least Ubuntu 28.04 for most desktop users. |
| Fedora 44 | GNOME 50 | Wayland only | Ships GNOME 50 as its default desktop. |
| RHEL 10 | GNOME | Wayland only | Xorg server removed; XWayland retained |
| Arch Linux | Your choice | Depends on DE | Rolling release delivers GNOME 50 and Plasma 6.8 quickly |
| Debian stable | GNOME / KDE | Depends on release | Check release notes for session availability |
Best Practices for the Wayland Era
- Audit your scripts. Search for
xdotool,xclip,xrandr,wmctrl,xinput, andxsetin your dotfiles and automation. - Move session variables from
~/.xprofileto~/.config/environment.d/. - Prefer portals. Apps that use xdg-desktop-portal for file pickers, screen capture, and global shortcuts keep working across compositors.
- Test before upgrading. Boot a live ISO or a VM and confirm your GPU, multi-monitor layout, and remote access workflow.
- Keep XWayland installed. Packages like
xorg-xwayland(Arch) orxwayland(Debian/Fedora) let X11-only applications keep running.
Strategic FAQ
Is X11 dead on Linux?
No, but it is no longer the default on major desktops. The X.Org server and XWayland still exist. GNOME 50 and Plasma 6.8 simply no longer offer a native X11 login session. Lighter desktops such as Xfce, MATE, and Cinnamon still default to X11.
Can I still run X11 apps on Wayland?
Yes. XWayland runs inside the Wayland session and handles X11 clients transparently. Expect limits with tools that need global access, like screen recorders, automation utilities, and some accessibility software.
Why does screen sharing show a black screen on Wayland?
The app is not using the PipeWire portal. Install the correct xdg-desktop-portal-* backend for your desktop, make sure PipeWire and WirePlumber are running, and use a browser or app version with Wayland screen-capture support.
How do I switch back to X11 on GNOME or KDE?
You cannot on GNOME 50 or Plasma 6.8 and later. Those releases ship no X11 session. Use an older release, a desktop that still offers X11 (Xfce, Cinnamon, MATE, LXQt), or a community fork, and plan a migration since upstream X11 support is ending.




