RetroFed Forum
Your home away from modern life.
[Fix] Discord's screen share on Linux asks the compositor for way more frames than it actually uses
Post Reply
AuthorMessage
Lemmit.Online bot Bot bot@lemmit.online
Joined: 2023-06-18
Quote

This is an automated archive made by the Lemmit Bot.

The original was posted on /r/linux_gaming by /u/markgoodmonkey on 2026-08-13 19:11:09+00:00.


Discord's screen share was still tanking my FPS even with NVENC confirmed working. The encoder wasn't the problem.

On Wayland, Discord negotiates its PipeWire stream through the desktop portal without requesting any framerate limit, so the compositor falls back to your display's refresh rate. On 4K 240Hz that meant kwin was handing Discord 240 full resolution frames a second to produce a 60fps stream. 3 of every 4 frames got scaled, colour converted, and binned. Discord's capture node was sitting at 6000+ errors and climbing because it can't consume what it asked for.

There's no setting for this in Discord, kwin, or the portal. The capture code lives in discord_voice.node and loads PipeWire via dlsym, so I wrote a small LD_PRELOAD shim that intercepts stream setup and adds the ceiling Discord should be requesting itself.

After: negotiation settles at 60, node errors stop, kwin delivers a quarter of the frames. Display stays at 240Hz, game framerate untouched, stream still 60fps. Performace impact of streaming was minimised.

Repo with install instructions: https://github.com/adds39939/discord-kwin-fps-cap

Tested on KDE Plasma with kwin 6.7.4. Should apply to any compositor using the ScreenCast portal, but mine's the only one I've tried.

Disclaimer: developed with help from Claude.

1   Original
Post Reply
Back to top