RDP black-screen root-caused: kwin_x11 compositing crash-loop; fixed (#611)

Server-side bisect (session rendered pure black, colors=1) pinned it to
plasma-kwin_x11.service timing out and crash-looping: software-GL
compositing init under xorgxrdp never completes at 5160x2160. Fix:
Compositing=false for the RDP accounts (X11-only key, Wayland console
unaffected) + 300s kwin unit start timeout. 12-fix-rdp-bigres.sh now
installs both parts. freerdp harness matrix green across all four flows.

Details: https://projects.knownelement.com/issues/611
This commit is contained in:
2026-09-01 16:14:31 -05:00
parent ebf3c1d2f3
commit 32dd4e64ea
2 changed files with 39 additions and 1 deletions
+38
View File
@@ -33,3 +33,41 @@ else
fi
grep -q XRDP_GFX_MAX_COMPRESSED_BYTES "$DROPIN" && echo "drop-in present: $DROPIN"
###############################################################################
# Part 2 — kwin_x11 black-screen fix (root-caused 2026-09-01, #611)
#
# Symptom: RDP login -> KDE spinner -> BLACK screen. Server-side bisect
# showed display :10 rendering pure black (colors=1): kwin_x11 was
# crash-looping (plasma-kwin_x11.service "start operation timed out",
# restart counter 12+). Cause: software-GL compositing init under
# xorgxrdp (no DRI) at 5160x2160 never finishes inside the unit's
# start timeout; systemd kills kwin -> no desktop. The "spinner" the
# user sees is KSplash firing on every kwin restart.
#
# Fix: disable X11 compositing for the RDP accounts (kwin runs
# uncomposited = instant, no GL) and give the kwin unit start-time
# headroom. Wayland console session unaffected (Compositing/Enabled is
# an X11-only key). Verified with the freerdp harness on rdptest:
# fresh 1408x945 / fresh 5160x2160 / resize up mid-session / resize
# down on reconnect — all render real desktops.
###############################################################################
for ACCOUNT in reachableceo reachableceo-offstage; do
runuser -u "$ACCOUNT" -- kwriteconfig6 --file kwinrc \
--group Compositing --key Enabled false
echo "kwinrc Compositing=false: $ACCOUNT"
done
mkdir -p /etc/systemd/user/plasma-kwin_x11.service.d
cat > /etc/systemd/user/plasma-kwin_x11.service.d/bigres-timeout.conf <<'EOF'
[Unit]
# big-res xorgxrdp sessions: software-GL init is slow; give kwin room
# instead of kill+crashloop (#611)
TimeoutStartSec=300
EOF
systemctl daemon-reload
echo "kwin unit override: /etc/systemd/user/plasma-kwin_x11.service.d/bigres-timeout.conf"
echo
echo "If a session is currently black: loginctl terminate-session <id> (or"
echo "loginctl terminate-user <user> for their RDP sessions) and reconnect."