X11 fallback monitor causes app confusion during DPMS (and other?) wakeups
**Issue Description** When a DisplayPort monitor wakes from DPMS sleep, xfdesktop resets all desktop icon positions to column 0, overwriting the saved `icons.screen0.yaml` with scrambled positions and injecting a ghost "Default Monitor" entry. **Steps to Reproduce** 1. Single monitor setup via DisplayPort, manual icon arrangement saved in `icons.screen0.yaml` 2. Let monitor enter DPMS sleep (or force with `xset dpms force off`) 3. Wake monitor 4. Desktop icons are rearranged to column 0 (intermittent — roughly 50% of wake cycles) **Expected Behavior** Icon positions saved in `icons.screen0.yaml` should be preserved across monitor sleep/wake cycles. **Actual Behavior** xfdesktop rewrites `icons.screen0.yaml` on wake, adding a ghost monitor entry and clearing saved positions: - level: 0 monitors: - id: "152a49732d4cb24514a7c04b38eebbf01d5e33e2" display_name: "Default Monitor" # ghost entry — not the real monitor geometry: x: 0 y: 0 width: 2560 height: 1440 - id: "f359e08b4a9cfbd55a1a64e33cbb62a2dd3c1ba0" display_name: "Microstep MSI G273Q CA8A421800157 (DisplayPort-0)" geometry: x: 0 y: 0 width: 2560 height: 1440 icons: {} # positions lost **Root Cause (confirmed via udevadm)** The monitor drops HPD on DPMS sleep, causing the GPU to fire DRM `change` events on wake (confirmed via `udevadm monitor --subsystem-match=drm`). xfdesktop responds to these events by reinitializing the desktop. During the brief moment the monitor has no EDID identity, xfdesktop creates a "Default Monitor" fallback entry with a different ID, finds no saved layout for it, and auto-arranges all icons. `KERNEL[16469.671535] change /devices/.../drm/card1 (drm) UDEV [16469.677745] change /devices/.../drm/card1 (drm) KERNEL[16470.081315] change /devices/.../drm/card1 (drm) UDEV [16470.082869] change /devices/.../drm/card1 (drm)` Two rapid change events per wake cycle are consistent with DP link retraining (negotiate → blip → settle). **Workaround** Setting the YAML immutable via `sudo chattr +i ~/.config/xfce4/desktop/icons.screen0.yaml` prevents overwriting but is not a real fix. **Environment** * OS: Arch Linux * Xfdesktop version: 4.20.2-1 * Windowing system: X11 * GPU: ASRock Radeon RX 6700 XT (amdgpu driver) * Monitor: Microstep MSI G273Q connected via DisplayPort * Single monitor setup
issue