#!/bin/sh
# Rikkiti idle daemon — runs swayidle with timeouts read from
# ~/.config/rikkiti/power.conf. Re-run it to apply changes (it replaces the
# previous instance). A timeout of 0 disables that action (e.g. desktops with no
# suspend). The `lock` handler makes `loginctl lock-session` (and the panel's Lock
# button) lock the screen.
conf="$HOME/.config/rikkiti/power.conf"
val() { grep -E "^[[:space:]]*$1[[:space:]]*=" "$conf" 2>/dev/null | tail -1 | sed 's/^[^=]*=//; s/#.*//; s/[[:space:]]//g'; }

lock_t=$(val lock_timeout);    [ -z "$lock_t" ] && lock_t=300
susp_t=$(val suspend_timeout); [ -z "$susp_t" ] && susp_t=900
dpms_t=$(val dpms_timeout);    [ -z "$dpms_t" ] && dpms_t=0   # screen off after N s (0 = never)
before=$(val lock_before_sleep)

pkill -x swayidle 2>/dev/null

set --
[ "$dpms_t" -gt 0 ] 2>/dev/null && set -- "$@" timeout "$dpms_t" "rikkiti-msg dpms off" resume "rikkiti-msg dpms on"
[ "$lock_t" -gt 0 ] 2>/dev/null && set -- "$@" timeout "$lock_t" rikkiti-lock
[ "$susp_t" -gt 0 ] 2>/dev/null && set -- "$@" timeout "$susp_t" "systemctl suspend"
[ "$before" != false ] && set -- "$@" before-sleep rikkiti-lock
set -- "$@" lock rikkiti-lock        # respond to loginctl lock-session / panel Lock

exec swayidle -w "$@"
