CR-2026-06-19: P16g Hyprlock Lid Wake Failure
Change Summary
| Field | Value |
|---|---|
CR ID |
CR-2026-06-19-p16g-hyprlock-lid-wake |
Author |
Evan Rosado |
Risk Level |
Low (config file change, fully reversible) |
Approval |
Self-approval |
Target Date |
2026-06-19 |
Systems Affected |
modestus-p16g (ThinkPad P16 Gen 2, Arrow Lake-S) |
Rollback Window |
Immediate — restore original |
Related Incidents |
INC-2026-05-23-002 (P16g DPMS Wake Failure) |
Related Changes |
CR-2026-06-19-p16g-i915-psr-persistence |
Description
What
Replace the Hyprland lid switch bindings in ~/.config/hypr/hyprland.conf from monitor disable/enable to brightnessctl + loginctl lock-session. This keeps eDP-1 alive at the Wayland compositor level while visually blanking the screen via backlight control.
Why
Closing the laptop lid with no external monitor connected results in no hyprlock login screen when the lid reopens. The internal panel stays black — the machine appears dead until an external monitor is connected.
The root cause is a contradiction between two display strategies in the same system:
-
hypridle (correctly) avoids
dpms offandmonitor disablebecause the i915 DRM driver on kernel 7.0.x with Arrow Lake-S fails to re-initialize the eDP-1 display pipe. Instead, hypridle usesbrightnessctlto set backlight to 0 — screen is visually black but the Wayland output remains active. -
The lid switch bindings (incorrectly) use
hyprctl keyword monitor "eDP-1, disable", which tears down the entire display pipeline — the exact operation hypridle was designed to avoid.
When the lid closes without an external monitor:
-
monitor "eDP-1, disable"removes eDP-1 from Hyprland’s output list — zero outputs remain -
hyprlock either cannot launch (no output to render on) or launches with nothing to draw to
-
Lid opens —
monitor "eDP-1, preferred, auto, 2"fires -
i915 must fully re-initialize the display pipe — this re-init is unreliable on Arrow Lake-S
-
Result: black screen, no hyprlock visible
-
Connecting an external monitor triggers a different display pipe via hotplug modeset, bypassing the broken eDP-1 re-init — hence the "works with external monitor" workaround
i915.enable_psr=0 (CR-2026-06-19-p16g-i915-psr-persistence) prevents the Panel Self Refresh hang on self-refresh wakeup, but a full DRM pipe teardown/re-init via monitor disable is a fundamentally more aggressive operation. PSR=0 is necessary but insufficient.
Impact
-
Without fix: Closing the lid without an external monitor produces a dead-looking machine. Requires plugging in a monitor to recover. Breaks the basic laptop use pattern (close lid, walk, open lid, work).
-
With fix: Closing the lid locks the session and blanks the backlight. Opening the lid restores brightness with hyprlock waiting. No DRM re-initialization occurs.