# ============================================================================= # hypridle.conf — Idle management daemon configuration # # hypridle watches for user inactivity and triggers actions (lock, suspend) # after configurable timeouts. It integrates with the presence-detection daemon # (presence-detect.sh) which resets the idle timer every 20s (backed off to 120s # under heavy CPU/RAM load) while the webcam detects motion, so these timeouts # only fire when the user has truly stepped away from the machine. # # Reference: https://wiki.hypr.land/Hypr-Ecosystem/hypridle/ # ============================================================================= general { # Command to run when the lock screen should be shown. # `pidof hyprlock || hyprlock` first checks if hyprlock is already running # (pidof returns 0 if found) and only launches a new instance if it is not. # This prevents stacking multiple lock screen instances on repeated trigger. lock_cmd = pidof hyprlock || hyprlock # Lock the session immediately when the system is about to suspend. # loginctl lock-session sends the Lock D-Bus signal to the session manager, # which hyprlock listens to, ensuring the screen is locked before the # display blanks during suspend. before_sleep_cmd = loginctl lock-session # fprintd restart ensures fingerprint sensor is ready after resume # Turn the display back on after the system wakes from suspend. # `hyprctl dispatch dpms on` sends DPMS power-on to all connected monitors. after_sleep_cmd = hyprctl dispatch dpms on # ignore_dbus_inhibit = false means hypridle honours D-Bus idle-inhibit locks. # This allows systemd-inhibit (used by the presence-detect daemon and the # caffeine script) to pause the idle timer while they are active. ignore_dbus_inhibit = false # respect systemd-inhibit locks (presence-detect, caffeine) } # Presence detection resets the idle timer every 20s (up to 120s under load) # while motion is detected, so these timeouts only run when you've actually # stepped away. # First idle listener: lock the screen after 30s of inactivity. listener { timeout = 30 # 30s — lock screen # loginctl lock-session triggers the session lock signal; hyprlock picks it up. on-timeout = loginctl lock-session } # Second idle listener: sleep after 1 minute of inactivity. suspend-then-hibernate # suspends to RAM immediately (fast resume); HibernateDelaySec — set system-wide by # hypr/systemd-sleep.conf, deployed to /etc/systemd/sleep.conf.d/ by sysupdate.sh — # then hibernates (writes RAM to disk, fully powers it down) 79 minutes later, so # hibernate lands ~80 minutes after the machine first went idle (1min + 79min). listener { timeout = 60 # 1 min — sleep on-timeout = systemctl suspend-then-hibernate }