diff --git a/src/servers/sidecar/vnc/vnc-manager.ts b/src/servers/sidecar/vnc/vnc-manager.ts index 9eb9cdaf..372d93a3 100644 --- a/src/servers/sidecar/vnc/vnc-manager.ts +++ b/src/servers/sidecar/vnc/vnc-manager.ts @@ -140,7 +140,10 @@ function readDisplayGeometry(xauthority: string, display: string): DisplayGeomet const out = proc.stdout.toString(); const fb = out.match(/current\s+(\d+)\s*x\s*(\d+)/); - const connected = (out.match(/^\S+ connected/gm) ?? []).length; + // Count ENABLED outputs, not merely connected ones: a screen that is plugged in but switched off + // still reports "connected" and contributes nothing to the framebuffer. Only an enabled output + // carries a WxH+X+Y geometry, so requiring that is what distinguishes the two. + const connected = (out.match(/^\S+ connected(?: primary)? \d+x\d+\+\d+\+\d+/gm) ?? []).length; // "HDMI-A-0 connected primary 3840x2160+0+0 (normal left ..." — the geometry only appears on an // output that is actually enabled, so a connected-but-off output correctly yields no match.