fix: lock screen on lid close without desktop flash on open

- Add lid-close.sh: starts hyprlock in background and immediately cuts
  the display via dpms off, so the display is dark while hyprlock renders
- William.conf: bind lid close to lid-close.sh; bind lid open to kill dim
  and turn display back on
- lock.sh: pass --no-fade-in to hyprlock
- hyprlock.conf: disable fadeOut animation
- hypridle.conf: add inhibit_sleep = 3 and use loginctl lock-session
This commit is contained in:
Jeena 2026-05-08 23:10:37 +00:00
parent 0f64cf7137
commit 11d2d51544
4 changed files with 16 additions and 10 deletions

View file

@ -1,13 +1,7 @@
general { general {
# Define the lock command for hypridle inhibit_sleep = 3
# This is used whenever hypridle or listeners need to lock the screen lock_cmd = pidof hyprlock || ~/.config/hypr/scripts/lock.sh
lock_cmd = pidof hyprlock || hyprlock before_sleep_cmd = loginctl lock-session
# Runs before system suspend (safety net if you manually suspend)
# On a desktop, you can remove this if you never suspend manually
before_sleep_cmd = ~/.config/hypr/scripts/lock.sh
# Restore screen after sleep
after_sleep_cmd = hyprctl dispatch dpms on after_sleep_cmd = hyprctl dispatch dpms on
} }

View file

@ -1,3 +1,7 @@
animations {
animation = fadeOut, 0
}
background { background {
path = ~/.config/hypr/wallpapers/Purple.jpg path = ~/.config/hypr/wallpapers/Purple.jpg
blur_passes = 2 blur_passes = 2

8
hypr/scripts/lid-close.sh Executable file
View file

@ -0,0 +1,8 @@
#!/bin/bash
pkill -x dim
hyprctl switchxkblayout all 0
wpctl set-mute @DEFAULT_AUDIO_SINK@ 1
hyprlock --no-fade-in &
hyprctl dispatch dpms off
wait
wpctl set-mute @DEFAULT_AUDIO_SINK@ 0

View file

@ -2,4 +2,4 @@
hyprctl switchxkblayout all 0 hyprctl switchxkblayout all 0
fcitx5-remote -s keyboard-us-dvorak fcitx5-remote -s keyboard-us-dvorak
wpctl set-mute @DEFAULT_AUDIO_SINK@ 1 wpctl set-mute @DEFAULT_AUDIO_SINK@ 1
hyprlock && wpctl set-mute @DEFAULT_AUDIO_SINK@ 0 hyprlock --no-fade-in && wpctl set-mute @DEFAULT_AUDIO_SINK@ 0