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 then starts the plan again, your locker may be daemonizing. Stasis normally tracks lock state by waiting for the locker process to exit.
- Remove fork/daemonize options such as
swaylock -fwhen possible - If your locker must fork, set
enable_loginctl trueand callloginctl lock-sessionbefore launching it - Confirm the loop with recent logs:
stasis dump 200#!/usr/bin/env bash
loginctl lock-session
swaylock -fRegex 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)