otter-idle watches for inactivity and runs configured commands, usually loginctl lock-session or display power-off. It hooks into systemd-logind for sleep and screen saver inhibition.
Usage
Configuration
Config file:~/.config/otter-shell/otter-idle.conf
listener_1 through listener_8). Each has:
| Field | Description |
|---|---|
timeout | Idle seconds before firing (0 = disabled) |
on_timeout | Command when user becomes idle |
on_resume | Command when activity resumes (only if on_timeout ran) |
Built-in DPMS commands
| Command | Effect |
|---|---|
dpms:off | Turn displays off |
dpms:on | Turn displays on |
dpms:standby | Standby mode |
dpms:suspend | Suspend mode |
/bin/sh -c.
DPMS backend selection:
wlr-output-power-management-unstable-v1(preferred)- Compositor IPC fallback (Hyprland, Sway, Niri detected from
$XDG_CURRENT_DESKTOP)
Inhibitor handling
Three layers can block idle actions:- Wayland-native (
zwp_idle_inhibit_manager_v1): handled by compositor - D-Bus (
org.freedesktop.ScreenSaver): tracked by otter-idle (video players, etc.) - systemd (
loginctl inhibit): checked via logind ListInhibitors
ignore_dbus_inhibit = true or ignore_systemd_inhibit = true to skip those checks.
Logind integration
Responds to logindLock, Unlock, and PrepareForSleep signals. Default lock_cmd keeps otter-lock available when a lock is requested.
