https://bugs.kde.org/show_bug.cgi?id=519799

            Bug ID: 519799
           Summary: Panel destroyed in runtime when all DRM outputs become
                    disconnected (regression vs 6.5) breaks remote-only /
                    VNC workflows
    Classification: Plasma
           Product: plasmashell
      Version First 6.6.4
       Reported In:
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: major
          Priority: NOR
         Component: Panel
          Assignee: [email protected]
          Reporter: [email protected]
                CC: [email protected]
  Target Milestone: 1.0

SUMMARY
Plasma 6.6 destroys all panels in runtime when 0 DRM outputs are
`connected`. Plasma 6.5 and earlier kept panels rendered (orphaned
but functional), which was relied upon for remote-access workflows.

STEPS TO REPRODUCE
1. Run a Plasma X11 session on a machine accessed via x0vncserver
(mirror of :0).
2. Power off the physical monitor (most LCDs drop HDMI HPD when
powered off, even with cable plugged) — or unplug HDMI cable.
3. Connect via VNC.

OBSERVED
- All DRM connectors report `disconnected` in /sys/class/drm.
- plasmashell logs: `Did not find a valid screen to place a new panel`.
- Panel disappears entirely; system tray, kickoff and clock are gone.
- Reconnecting monitor / re-enabling HPD restores panel.

EXPECTED
Panel persists across transient `0 connected outputs` states, as in
Plasma 6.5. Remote-only workflows (VNC mirroring a powered-off-display
session) should not require workarounds.

REGRESSION RANGE
Worked: Plasma 6.5.x
Broken: 6.6.3 (and confirmed in 6.6.4)

Suspect commits in plasma-workspace (master, 6.5 → 6.6 window):

- 8bc6be2f "Better screen removal handling" (Marco Martin)
https://invent.kde.org/plasma/plasma-workspace/-/commit/8bc6be2f
- 728f0a7d "ShellCorona: ensure screenUiReadyChanged happens for
screens without panels" (2025-11-06)
- 03ed42834c "shell: fix availableScreenRectChanged connecting
to wrong signal" (2025-11-23)
- 0cc554a3 "shell: restore early destroyed guard for panel
containments" (2026-03-03)
- 99f84ed7 "shellcorona: do not crash on panels after their
destruction" (2026-03-10)

These progressively hardened ScreenPool::noRealOutputsConnected()
and ShellCorona::screenInvariants() — the path that destroys panels
when all outputs are disconnected.

WORKAROUND
Forcing the connector via debugfs (`edid_override` + `force=on`) keeps
the panel visible but is fragile and bypasses kernel HPD logic.

REQUEST
Either:
(a) revert the strict invariant so panels persist as "orphaned" when
no outputs are connected, OR
(b) expose a knob (env var or plasmashellrc setting) to opt out of
panel destruction on output loss.

SCOPE / AFFECTED WORKFLOWS
- Session type: X11 (not Wayland; not tested there)
- Remote-only desktop access (VNC via x0vncserver mirror) is the
primary affected workflow — users without a physical monitor on
the box rely on the panel persisting when the LCD is off.
- Also affects users who simply power-cycle their monitor: many
LCDs drop HDMI HPD when powered off even with cable connected.

SYSTEM
Fedora 43, kernel 6.19.10, X11 session, AMD Radeon (amdgpu),
TigerVNC x0vncserver mirroring :0.

(Debug and Written by Claude Code @ Opus 4.7)

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to