Integration

Quickshell

Quickshell integration is pending upstream support.

Status JSON

stasis info --json is the stable status-bar contract. The text field uses short labels: waiting, active, inhibited, locked, and manual.

The alt and class fields are intended for icon mapping and CSS styling. Tooltips include the active profile, plan source, state, manual pause status, app/media inhibitor counts, D-Bus inhibit state, and the next pending action when available.

{
  "text": "active",
  "alt": "idle_active",
  "class": "idle_active",
  "tooltip": "Profile: default\nPlan Source: Desktop\nState: active",
  "profile": "default"
}

Waybar

Example Custom Module

To use Stasis with Waybar, define a custom module that polls stasis info --json.

Icon-based Display

"custom/stasis": {
  "exec": "stasis info --json",
  "format": "{icon}",
  "format-icons": {
    "idle_active": "",
    "idle_waiting": "",
    "idle_inhibited": "",
    "manually_inhibited": "",
    "locked": "",
    "not_running": "󰒲"
  },
  "tooltip": true,
  "on-click": "stasis toggle-inhibit",
  "interval": 2,
  "restart-interval": 2,
  "return-type": "json"
}

Text-based Display

Or display text instead of icons:

"custom/stasis": {
  "exec": "stasis info --json",
  "format": "{text}",
  "tooltip": true,
  "on-click": "stasis toggle-inhibit",
  "interval": 2,
  "restart-interval": 2,
  "return-type": "json"
}

System Tray

stasis tray runs the optional StatusNotifier tray frontend. It is separate from the headless daemon and does not replace stasis info --json, so Waybar and other status bars can keep polling the JSON output directly.

The tray tooltip shows the current Stasis state. Its menu provides actions to toggle manual inhibition, pause, resume, reload the config, and quit only the tray process.

Tray host required

Start a StatusNotifier tray host first, such as Waybar's tray module, KDE Plasma, or another panel with tray support. The daemon remains headless and does not launch the tray automatically.

Run Manually

stasis tray

Systemd User Service

Run the daemon and tray as separate user services. Packages may already install this optional service file as stasis-tray.service.

[Unit]
Description=Stasis System Tray Frontend
PartOf=graphical-session.target
After=graphical-session.target stasis.service
ConditionPathExists=%t

[Service]
Type=simple
ExecStart=/usr/bin/stasis tray
Restart=on-failure
RestartSec=2

[Install]
WantedBy=graphical-session.target

NixOS and Home Manager users can enable the tray through the module option services.stasis.tray.enable.