hyprland: prepend PATH, gate idle inhibitors, allow lock restore
- Prepend ~/.local/bin to PATH so user scripts (hyprlock wrapper, weather.sh) resolve before system binaries. - Gate dpms-off and suspend on lock screen running (condition_cmd) so idle inhibitors from apps work while unlocked but screen still blanks and machine suspends after lock. - Enable allow_session_lock_restore so a crashed lock client can be replaced. - Temporarily enable debug logging to diagnose re-lock issues.
This commit is contained in:
@@ -2,3 +2,7 @@
|
||||
hl.env("XCURSOR_SIZE", "24")
|
||||
hl.env("QT_QPA_PLATFORMTHEME", "qt5ct") -- change to qt6ct if you have that
|
||||
hl.env("SUDO_ASKPASS", os.getenv("HOME") .. "/.local/bin/sudo-askpass.sh")
|
||||
-- Prepend ~/.local/bin so `hyprlock` (and other user scripts) resolve to the
|
||||
-- crash-guard wrapper instead of /usr/bin/hyprlock. Hyprland's exec/keybind
|
||||
-- PATH is otherwise the system PATH and misses user-local binaries.
|
||||
hl.env("PATH", os.getenv("HOME") .. "/.local/bin:" .. (os.getenv("PATH") or "/usr/bin:/bin"))
|
||||
|
||||
@@ -23,14 +23,26 @@ listener {
|
||||
on-timeout = loginctl lock-session # lock screen when timeout has passed
|
||||
}
|
||||
|
||||
# The dpms-off and suspend listeners ignore idle inhibitors (Steam, browsers,
|
||||
# etc. hold them) so the screen still blanks and the machine still suspends
|
||||
# after the screen is locked -- otherwise a held inhibitor would keep the
|
||||
# locked screen on forever. `condition_cmd` gates them on the lock screen
|
||||
# actually running, so inhibitors keep working as intended while unlocked
|
||||
# (e.g. a video keeps the screen awake).
|
||||
listener {
|
||||
timeout = 330 # 5.5min
|
||||
ignore_inhibit = true # fire even while apps hold idle inhibitors
|
||||
condition_cmd = pidof hyprlock > /dev/null # ...but only once the session is locked
|
||||
condition_retry = 30 # if not locked yet, re-check every 30s while idle
|
||||
on-timeout = hyprctl dispatch dpms off # screen off when timeout has passed
|
||||
on-resume = hyprctl dispatch dpms on && brightnessctl -r # screen on when activity is detected after timeout has fired.
|
||||
}
|
||||
|
||||
listener {
|
||||
timeout = 1800 # 30min
|
||||
ignore_inhibit = true # fire even while apps hold idle inhibitors
|
||||
condition_cmd = pidof hyprlock > /dev/null # ...but only while the session is locked
|
||||
condition_retry = 60 # if not locked yet, re-check every 60s while idle
|
||||
on-timeout = systemctl suspend # suspend pc
|
||||
}
|
||||
|
||||
|
||||
@@ -94,6 +94,9 @@ hl.config({
|
||||
mouse_move_focuses_monitor = false,
|
||||
-- Skip drawing the Hyprland logo in the corner of empty workspaces.
|
||||
disable_hyprland_logo = true,
|
||||
-- Allow a new hyprlock to take over the lock after a crash; without this a
|
||||
-- dead lock client leaves the session permanently locked (no lockscreen).
|
||||
allow_session_lock_restore = true,
|
||||
},
|
||||
})
|
||||
|
||||
@@ -103,5 +106,8 @@ hl.config({
|
||||
hl.config({
|
||||
debug = {
|
||||
vfr = true,
|
||||
-- Temporarily on to diagnose the mystery re-lock (disable_logs=true
|
||||
-- default hides dispatch exec lines from hyprland.log).
|
||||
disable_logs = false,
|
||||
},
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user