Problem
When Claude Desktop is launched inside an XRDP or VNC remote-desktop session, the app either:
- Renders a completely blank white window, or
- Crashes at startup with a GPU-related error in
~/.config/Claude/logs/
This happens because Electron's GPU-accelerated compositor path requires real GPU access, which XRDP and most VNC servers do not provide — they expose a software framebuffer only.
Environment
- Display server: XRDP (reproduces with
xrdp-sesman running, or $XRDP_SESSION set)
- Also affects: VNC sessions, headless X servers without GPU passthrough
Fix
Detect remote-desktop sessions in scripts/launcher-common.sh and pass
--disable-gpu --disable-software-rasterizer to Electron, which forces the
CPU compositor path and renders correctly in all software-only framebuffer environments.
Detection logic (two signals, either is sufficient):
$XRDP_SESSION environment variable (set by the XRDP X server)
xrdp-sesman process running (catches VNC-via-xrdp and cases where the env var isn't propagated)
A PR with this fix is attached.
Written by Claude Sonnet 4.6 via Claude Code
Problem
When Claude Desktop is launched inside an XRDP or VNC remote-desktop session, the app either:
~/.config/Claude/logs/This happens because Electron's GPU-accelerated compositor path requires real GPU access, which XRDP and most VNC servers do not provide — they expose a software framebuffer only.
Environment
xrdp-sesmanrunning, or$XRDP_SESSIONset)Fix
Detect remote-desktop sessions in
scripts/launcher-common.shand pass--disable-gpu --disable-software-rasterizerto Electron, which forces theCPU compositor path and renders correctly in all software-only framebuffer environments.
Detection logic (two signals, either is sufficient):
$XRDP_SESSIONenvironment variable (set by the XRDP X server)xrdp-sesmanprocess running (catches VNC-via-xrdp and cases where the env var isn't propagated)A PR with this fix is attached.
Written by Claude Sonnet 4.6 via Claude Code