Wayland vs X11: Fix Broken Apps on Ubuntu 26.04

Ubuntu 26.04 "Resolute Raccoon" ships with GNOME 50, and GNOME 50 is Wayland-only. There is no X11 session at the login screen, and editing /etc/gdm3/custom.conf won't bring it back. Most apps still work fine through XWayland — the X11 compatibility layer that loads automatically. The remaining problems — screen sharing that shows a black square, Electron apps rendered in blurry XWayland, tools that need a real X server — all have practical fixes covered below.

What Actually Changed: Wayland vs X11 in Ubuntu 26.04

In Ubuntu 24.04 you could click a gear icon at login and pick "GNOME on Xorg." That option is gone. GNOME removed all X11 session code in GNOME 49 (which shipped in Ubuntu 25.10), and GNOME 50 in 26.04 carries none of it forward. Setting WaylandEnable=false in /etc/gdm3/custom.conf — a classic workaround — no longer has any effect on the default GNOME desktop.

XWayland is a different thing entirely. It's a full X server that runs inside a Wayland session as a Wayland client. Any application that speaks X11 protocol gets handed to XWayland automatically; you don't configure anything. So "X11 is gone" and "my old apps are gone" are not the same statement. They're almost certainly still running. What's gone is the ability to run GNOME itself on Xorg.

The security reason for this matters: under X11, any application could read pixel data from any other window and intercept keystrokes globally. Wayland isolates each app to its own surface. That isolation is exactly what breaks screen sharing in the naive sense — and why the fix requires a proper portal stack instead.

How to Confirm What's Running (and Which Apps Are in XWayland)

Check your session type first:

echo $XDG_SESSION_TYPE

If it says wayland, you're on the default Ubuntu 26.04 desktop. To see which applications are currently running through XWayland rather than natively:

xlsclients

Anything listed there is an XWayland application. Native Wayland apps don't appear. You can also confirm XWayland itself is loaded:

pgrep -a Xwayland

A running /usr/bin/Xwayland :0 -rootless -noreset … line means XWayland is active. If that command returns nothing, no X11 apps have asked for it yet.

Screen Sharing Not Working? Fix the Portal Stack First.

This is the most common complaint after upgrading. You join a Zoom or Teams call, try to share a window, and get either a black screen or no picker at all. The cause is almost always the same: the XDG Desktop Portal service is dead or mismatched.

On Wayland, screen sharing works through a chain: your app requests a capture via D-Bus → xdg-desktop-portal-gnome handles the picker and permission prompt → GNOME Shell exports the framebuffer → PipeWire carries the video stream to the app. If any link in that chain is broken, you get nothing.

Check the whole stack:

systemctl --user status xdg-desktop-portal
systemctl --user status xdg-desktop-portal-gnome
systemctl --user status pipewire pipewire-pulse wireplumber

All three should say active (running). If any of them aren't, restart them:

systemctl --user restart xdg-desktop-portal
systemctl --user restart pipewire wireplumber

Log out and back in if a restart doesn't stick. I've had the portal fail to start after wake-from-suspend on a fresh install — logging out fixed it immediately.

One gotcha specific to 26.04: screen sharing in Snap-packaged apps requires that the snap declares the right interface permissions for the portal. The same app installed as a Flatpak or .deb typically works fine. If you installed something like a messaging client via Snap and screen sharing is dead, try the Flatpak version first before digging deeper.

Also confirm your browser or conferencing app actually supports PipeWire-based capture. Firefox and Chromium-based browsers have supported it for a while. Zoom 6.x respects the portal when XDG_SESSION_TYPE=wayland is set. If you're on an old pinned version of something, update it.

Blurry Apps and Fractional Scaling

Ubuntu 26.04 enables fractional scaling by default. On a typical 1440p or 4K laptop display you'll likely be running at 125% or 150%. Native Wayland apps scale correctly at the compositor level. XWayland apps don't — they render at an integer scale and get stretched, which is why they look soft.

The fix is to stop the app from going through XWayland at all and force it onto the native Wayland path. How you do that depends on the toolkit:

GTK apps:

GDK_BACKEND=wayland app-name

Qt apps:

QT_QPA_PLATFORM=wayland app-name

To test whether a specific app supports Wayland natively, just run it with the variable set in the terminal. If it launches cleanly and looks sharp, you can make it permanent by editing its .desktop launcher (see the Electron section below for the exact steps — same process applies).

If you set QT_QPA_PLATFORM=wayland globally and an older Qt app crashes, override it back to xcb for that specific app. Don't set it system-wide unless everything in your workflow is tested.

Electron Apps: VS Code, Slack, Discord

Electron apps are the messiest category because they ship their own Chromium rendering engine and don't inherit session variables reliably. Most of them default to XWayland even when running under a Wayland session, producing blurry text on fractional-scaled displays and missing screen-sharing capability.

The simplest global fix is to set this environment variable permanently:

echo 'export ELECTRON_OZONE_PLATFORM_HINT=auto' >> ~/.profile

Log out and back in. auto tells Electron to use the Wayland backend when the session is Wayland, and fall back to X11 otherwise — it's safer than hardcoding wayland.

For a per-app fix without touching your profile, copy the app's desktop entry and edit the Exec line. Here's VS Code as an example:

cp /usr/share/applications/code.desktop ~/.local/share/applications/

Open ~/.local/share/applications/code.desktop in a text editor and find the Exec= line. Change it from:

Exec=/usr/share/code/code --unity-launch %F

to:

Exec=/usr/share/code/code --enable-features=UseOzonePlatform,WaylandWindowDecorations --ozone-platform=wayland --unity-launch %F

The same pattern works for Slack, Discord, and any other Electron app — just change the binary path and arguments to match. Files under ~/.local/share/applications/ override the system-wide ones in /usr/share/applications/, so your change survives app updates cleanly.

When You Actually Need a Real X11 Session

A small number of tools genuinely can't work through XWayland — things that rely on global input hooks, low-level window management, or screen-capture APIs that predate portals. Classic examples include some older RDP/VNC server configurations, certain automation tools, and legacy engineering software with custom drawing engines that explicitly demand an X display beyond what XWayland provides.

For these cases, you still have X11 sessions available — just not through GNOME. KDE Plasma and Xfce both ship X.org sessions on Ubuntu 26.04. Install one alongside your existing GNOME setup:

sudo apt install kubuntu-desktop   # KDE Plasma — includes X11 session option
# or
sudo apt install xubuntu-desktop   # Xfce — lighter, also has X.org session

Log out. At the GDM login screen, click the gear icon in the bottom-right corner. You'll see "Plasma (X11)" or the Xfce session available. Select it and log in. Your GNOME Wayland session is untouched and still shows up as an option.

Fair warning: KDE plans to remove its X11 session in Plasma 6.8, expected toward the end of 2026. Xfce has no announced plans to drop X11 support, so the Xubuntu route is more durable for now.

NVIDIA on Ubuntu 26.04 Wayland

For anyone who held off upgrading because of NVIDIA + Wayland instability: the desktop suspend/resume freeze that affected systems where NVIDIA was the primary GPU has been fixed in 26.04. The official release notes confirm this for desktop configurations. Laptop users still report occasional issues in some setups, so if you're on a discrete NVIDIA laptop, stay on top of system updates — it's a moving target. The default proprietary driver in 26.04 is the 595.x series; make sure you're on that rather than a manually pinned older version.

The open-source nouveau driver doesn't give you full Wayland acceleration. Stick with the proprietary driver: sudo ubuntu-drivers install will pick the right one automatically.

Quick Reference: Wayland vs X11 Session Options

Scenario Session What to do
Normal usage, modern apps Wayland (GNOME 50) Nothing — it's the default
Legacy app, doesn't mention Wayland Wayland + XWayland Just run it; XWayland loads automatically
Blurry Electron/GTK app on HiDPI Wayland + XWayland Set ELECTRON_OZONE_PLATFORM_HINT=auto or GDK_BACKEND=wayland
Screen sharing shows black screen Wayland Restart xdg-desktop-portal and pipewire
Snap app screen sharing broken Wayland Switch to Flatpak or .deb version
Tool requires raw X11 (no XWayland workaround) X11 (non-GNOME) Install kubuntu-desktop or xubuntu-desktop, select at login
NVIDIA desktop, resume from suspend Wayland Fixed in 26.04 with 595.x drivers
SimpleScreenRecorder / ffmpeg -f x11grab Wayland Use OBS with PipeWire, wf-recorder, or GNOME's built-in recorder (Ctrl+Shift+Alt+R)

Frequently Asked Questions

Can I switch back to X11 on Ubuntu 26.04?

Not for GNOME — that code was removed upstream in GNOME 49 and is gone in GNOME 50. Editing /etc/gdm3/custom.conf no longer works. If you need an X11 session, install KDE Plasma (kubuntu-desktop) or Xfce (xubuntu-desktop) and pick their X.org session at login. You can stay on Ubuntu 24.04 LTS until April 2029 if you need GNOME on Xorg.

Why does screen sharing show a black screen on Ubuntu 26.04?

Wayland prevents apps from reading other windows' pixels directly. Screen sharing now works via xdg-desktop-portal-gnome and PipeWire. If either service isn't running, you get a black screen. Check both with systemctl --user status xdg-desktop-portal-gnome pipewire and restart them if they're inactive. Also confirm your app actually supports PipeWire capture — older app versions often don't.

Why do some apps look blurry after upgrading to Ubuntu 26.04?

Ubuntu 26.04 enables fractional scaling by default. Apps running through XWayland render at integer resolution and get scaled up by the compositor, which produces blur. Force them onto the native Wayland path using ELECTRON_OZONE_PLATFORM_HINT=auto (Electron apps), GDK_BACKEND=wayland (GTK apps), or QT_QPA_PLATFORM=wayland (Qt apps).

Does XWayland slow down my applications?

For typical desktop use the difference is negligible. XWayland does add a translation layer, and some operations — like certain OpenGL workflows — may see minor overhead. Apps with latency-sensitive input (some drawing tools, certain games) can benefit from running natively on Wayland if the app supports it. For everything else, XWayland is fast enough that you won't notice.

Do NVIDIA cards work properly on Ubuntu 26.04 Wayland?

Better than ever on desktops — the suspend/resume freeze that affected machines where NVIDIA is the primary GPU was fixed in this release. You need the proprietary 595.x drivers; the open-source nouveau driver won't give you full compositor acceleration. Some NVIDIA laptop configurations (Optimus/hybrid graphics) may still have edge cases; keep your system fully updated and check the Ubuntu known issues page if you hit trouble.

What screen recording tools work on Wayland in Ubuntu 26.04?

SimpleScreenRecorder and ffmpeg -f x11grab don't work because they rely on X11's screen-reading model. Use OBS Studio (with the PipeWire screen capture source), wf-recorder, or GNOME's built-in recorder triggered with Ctrl+Shift+Alt+R. OBS is the most flexible if you need anything beyond a basic screencast.