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 bindl lines

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:

  1. hypridle (correctly) avoids dpms off and monitor disable because the i915 DRM driver on kernel 7.0.x with Arrow Lake-S fails to re-initialize the eDP-1 display pipe. Instead, hypridle uses brightnessctl to set backlight to 0 — screen is visually black but the Wayland output remains active.

  2. 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.