dim creates a wlr-layer-shell surface that Hyprland never cleans up
when the process exits — leaves an opaque full-screen overlay (pid=-1)
covering the entire display until the layer tree is rebuilt.
Removing step 1 (dim) from hypridle prevents future occurrences.
unstick-display.sh now restarts waybar to force a layer tree rebuild
as a recovery measure.
Both scripts used ls | head -1 to find the socket, which picks the wrong
(dead) session when old socket dirs linger. Now iterates over all sockets
and picks the one that actually responds.
- AQ_DRM_DEVICES=/dev/dri/card0 forces Aquamarine to use only the
Intel iGPU, avoiding EGL_BAD_MATCH errors from the NVIDIA RTX 3060
after VT/DPMS cycles (page-flip lockups, black display)
- lock.sh: guard against duplicate hyprlock instances (second instance
steals surfaces, leaves screen black)
- lid-close.sh: same guard for laptop
- wake-display.sh: conditional DPMS cycle (only when display is off)
to restore hyprlock surfaces without flicker
- unstick-display.sh: emergency recovery script for tty3