# This file was auto-generated by Stasis on first run # Feel free to customize it to your needs # Master config reference: `/usr/share/doc/stasis/stasis.rune` @author "Dustin Pilgrim" @description "Lightweight feature packed idle manager for Wayland" # Semantics: # - Everything lives under `default:` (and optional profile blocks). # - On laptops, Stasis chooses between: # `default.ac:` and `default.battery:` # depending on current power source. # - Lid actions live under `default:` (globals) so they apply on BOTH AC and Battery # unless a profile overlays/clears them. default: # Optional: listen for loginctl lock/unlock-session signals (default false) # NOTE: this only updates internal state when lock/unlock signals are received; # it does not actually run your locker command. #enable_loginctl true # Optional: listen for session D-Bus inhibit traffic (default true). # This gate is not browser-only: browsers, Steam, and other desktop apps can # request inhibit through standard D-Bus/portal paths. # Browser/media-tab inhibit lives here, not under monitor_media. # Disable this only if you explicitly do not want D-Bus inhibit requests # to pause idle progression. # enable_dbus_inhibit true # Optional: run before suspending (hook). # # Behavior: # - This command runs RIGHT BEFORE the suspend step, and Stasis currently WAITS # for it to exit before continuing to suspend. # - Therefore, a foreground screen locker (e.g. `swaylock -F`, `hyprlock`) will # BLOCK suspend unless it daemonizes / returns quickly. # - Also: do NOT run your locker BOTH here and in `lock_screen.command`. # If you already have a lock step, leave `pre_suspend_command` unset. # # Good uses: # pre_suspend_command "sync" # pre_suspend_command "~/.local/bin/my-pre-sleep-hook" # # If you do NOT have a lock step and you want "lock right before suspend", # use a locker that exits immediately (daemon/background), e.g. via a wrapper script. #pre_suspend_command "sync" # Non-browser media/audio inhibit only. Browser/media-tab inhibit is handled # by enable_dbus_inhibit above. monitor_media true ignore_remote_media true # ignore remote players (spotify/kdeconnect/etc.) # Optional: ignore these media sources for media inhibit (case-insensitive) #media_blacklist ["spotify"] # Debounce window in seconds before starting the plan (default 0) #debounce_seconds 4 # Notify when resuming from IPC pause (e.g., `stasis pause 1h`) #notify_on_unpause true # Global gate: notifications before steps only happen if this is true #notify_before_action true # App/process inhibit patterns (strings or regex literals) inhibit_apps [ "hayase" "fladder" "mpv" r"steam_app_.*" ] # ----------------------------- # Lid actions (LAPTOP ONLY) # # Shell commands run immediately on lid close or open. # Lid close/open also pause/resume the plan timers regardless. # # These are GLOBAL under `default:` so they apply to BOTH `ac:` and `battery:` plans. # A profile can override them or clear them (set to ""). # # Examples: # lid_close_action "swaylock" # lid_open_action "brightnessctl set 60%" # ----------------------------- lid_close_action "swaylock" #lid_open_action "" # Laptop plan: AC power (relaxed) ac: brightness: timeout 300 # 5 minute(s) command "brightnessctl set 50%" end dpms: timeout 120 # 2 minute(s) after brightness command "niri msg action power-off-monitors" resume_command "niri msg action power-on-monitors" end lock_screen: timeout 180 # 3 minute(s) after dpms command "swaylock" # Optional per-step notification: #notification "Locking session soon" #notify_seconds_before 10 end suspend: timeout 600 # 10 minute(s) after lock command "systemctl suspend" end end # Laptop plan: Battery power (aggressive) battery: brightness: timeout 60 # 1 minute(s) command "brightnessctl set 30%" end dpms: timeout 30 # 30 second(s) after brightness command "niri msg action power-off-monitors" resume_command "niri msg action power-on-monitors" end lock_screen: timeout 60 # 1 minute(s) after dpms command "swaylock" end suspend: timeout 120 # 2 minute(s) after lock command "systemctl suspend" end end end