summaryrefslogtreecommitdiff
path: root/stasis
diff options
context:
space:
mode:
Diffstat (limited to 'stasis')
-rw-r--r--stasis/stasis.rune140
1 files changed, 140 insertions, 0 deletions
diff --git a/stasis/stasis.rune b/stasis/stasis.rune
new file mode 100644
index 0000000..5289b8a
--- /dev/null
+++ b/stasis/stasis.rune
@@ -0,0 +1,140 @@
+# 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