Discord Screen Share Broken on KDE Wayland? Here's the fix

So I’m in a call, someone asks me to share my screen, I click the button and… nothing. No error, no dialog, no nothing. Just Discord pretending I never clicked anything. Cool cool cool.

I’m on KDE Plasma + Wayland. And oh, Arch btw (CachyOS specifically). Running the native discord package from pacman. Everything was working perfectly fine like two days ago. What changed? No idea. Something crashed silently. “It just works” said no linux user ever. 🙃

How screen sharing even works on Wayland

Okay so on Wayland, screen sharing goes through this whole chain:

Discord (Electron) → xdg-desktop-portal → KDE portal backend → PipeWire → your screen

Discord asks the portal “hey can I see the screen?”, the portal asks your desktop environment’s backend to handle it, and that backend uses PipeWire to actually grab the pixels. It’s a lot of moving parts. But it works.

The debugging rabbit hole

First thing I checked: are the right Electron flags set? On Wayland, Discord needs these or it won’t even try the proper screen capture path:

discord --enable-features=UseOzonePlatform,WebRTCPipeWireCapturer --ozone-platform=wayland

(These go in your .desktop file’s Exec= line. If you haven’t done this already, do it now.)

But that wasn’t it. I already had these set. Screen share was still completely dead.

So I dug deeper. Is the ScreenCast portal interface even available?

$ dbus-send --session \
    --dest=org.freedesktop.portal.Desktop \
    --type=method_call --print-reply \
    /org/freedesktop/portal/desktop \
    org.freedesktop.DBus.Properties.Get \
    string:org.freedesktop.portal.ScreenCast \
    string:version

Error org.freedesktop.DBus.Error.InvalidArgs: No such interface "org.freedesktop.portal.ScreenCast"

No ScreenCast interface. At all. There it is. The portal literally has no backend that knows how to capture screens. No wonder Discord was doing nothing — there was nothing to do.

The actual problem

Wanna guess?

$ systemctl --user status plasma-xdg-desktop-portal-kde.service

â—‹ plasma-xdg-desktop-portal-kde.service - Xdg Desktop Portal For KDE
     Active: inactive (dead)

Dead. The KDE portal backend was just… dead. This is the service that provides ScreenCast, Screenshot, RemoteDesktop — basically everything screen-related on KDE Plasma. Without it, the only portal running was the GTK one, which doesn’t provide ScreenCast on a KDE session (why would it).

So Discord asks to share screen, the portal goes “I don’t know how to do that”, and Discord goes “okay nevermind” without telling you anything. Super helpful error handling there 🤣

The fix (it’s two commands)

systemctl --user start plasma-xdg-desktop-portal-kde.service
systemctl --user restart xdg-desktop-portal.service

Start the KDE backend, then restart the main portal so it picks up the new backend. You can verify it worked:

$ dbus-send --session \
    --dest=org.freedesktop.portal.Desktop \
    --type=method_call --print-reply \
    /org/freedesktop/portal/desktop \
    org.freedesktop.DBus.Properties.Get \
    string:org.freedesktop.portal.ScreenCast \
    string:version

variant    uint32 5

Restart Discord after this. You should get the KDE screen picker dialog when you try to share. 🎉

But why did it die in the first place?

Here’s the annoying part — plasma-xdg-desktop-portal-kde is a static systemd unit. It doesn’t auto-restart on crash. Your Plasma session starts it once when you log in, and if it crashes mid-session (OOM, random segfault, who knows), it just stays dead. You just lose screen sharing until you notice and manually restart it, or log out and back in.

If this keeps happening to you, check the logs next time:

journalctl --user -u plasma-xdg-desktop-portal-kde

Maybe there’s a pattern. Maybe something is killing it. I haven’t figured that part out yet (added to my infinitely long todo list).

TL;DR

Discord screen share broken on KDE Wayland? Run systemctl --user status plasma-xdg-desktop-portal-kde.service. It’s probably dead. Start it, restart xdg-desktop-portal, restart Discord. Done.