Frequently Asked Questions
Stasis Not Detecting Apps
If Stasis isn't detecting your applications for idle inhibition:
- Ensure your compositor is supported (see Supported Compositors)
- Halley, Niri, and Hyprland have native app tracking; labwc and River use process-based fallback detection
- Start your compositor in a real session context (
niri-session,dbus-run-session, or compositor-recommended launcher) - Check that the app names in
inhibit_appsmatch the actual application names - For Halley, patterns match window
app_idvalues fromhalleyctl node list --json - Use
stasis -vor check~/.local/state/stasis/stasis.logfor detailed logs on detected apps
D-Bus Inhibits or Media Not Working
Browser and portal inhibit requests are handled by enable_dbus_inhibit, not by monitor_media. Audio playback and call detection use pactl through
PulseAudio or PipeWire Pulse.
- Keep
enable_dbus_inhibit truefor browser, Steam, and portal inhibit traffic - Start the compositor inside a real D-Bus session so session-bus monitoring is available
- Install
pulseaudioorpipewire-pulsesopactlis available - Use
media_blacklistonly for media sources you want to ignore
Lock Step Fires Repeatedly
If Stasis locks, immediately resumes, and starts the plan again, first check which completed-state signal your locker provides.
- Foreground lockers are tracked until their process exits
- Lockers such as Veila publish login1
LockedHint, which Stasis follows automatically - Remove fork/daemonize options such as
swaylock -fif the locker does not publishLockedHint - Do not use
loginctl lock-sessionas completion tracking; its lock/unlock signals are requests - Confirm the loop with recent logs:
stasis dump 200LockedHint takes authority for the current lock episode, so a short-lived
locker client can exit without producing a false unlock.Regex Patterns Not Matching
If your regex patterns in inhibit_apps aren't working:
- Ensure you're using raw string syntax:
r"pattern" - Test patterns with verbose logging to see what apps are detected
- Remember that process-based fallback detection may report different names than native compositor IPC
stasis -v) to see exactly what application names are being
detected, then adjust your patterns accordingly.Service Not Starting
If your systemd service won't start:
- Verify the
ExecStartpath in your systemd service file points to the correct binary location - Check service logs for specific errors:
journalctl --user -u stasis.serviceCommon issues include incorrect binary paths or missing dependencies.
If Stasis starts but cannot see Wayland, D-Bus, or compositor-specific environment variables, ensure your
user service receives WAYLAND_DISPLAY, XDG_RUNTIME_DIR, DBUS_SESSION_BUS_ADDRESS,
and compositor variables such as NIRI_SOCKET when required.
Configuration Not Reloading
If changes to your configuration aren't taking effect:
- Use
stasis reloadto send a reload signal to the running daemon - Check configuration syntax if reload fails
- Restart the service if reload continues to fail:
systemctl --user restart stasis.serviceConfiguration Errors
If Stasis reports configuration errors:
- Validate your RUNE syntax (see RUNE notes in documentation)
- Verify built-in action block names:
startuplock_screen/lock-screendpmssuspendbrightness*(custom actions can be named anything)
- Check the manual:
man 5 stasis - Use verbose logging to identify configuration issues
Need More Help?
If your problem isn't listed here and you've tried everything:
Visit the GitHub Issues page to report your problem. Please include:
- Your distribution and compositor
- Stasis version (
stasis --version) - Relevant log output from
~/.local/state/stasis/stasis.log - Your configuration file (sanitize any sensitive info)