#!/bin/sh # include common definitions # shellcheck source=scripts/core/sxmo_common.sh . "$(dirname "$0")/sxmo_common.sh" set -e LOCK=0 OFF=0 SUSPEND=0 readconfig() { if [ ! -f "$CACHEDIR"/sxmo.idle.state ]; then printf "LOCK 0\nOFF 0\nSUSPEND 0\n" >"$CACHEDIR"/sxmo.idle.state fi IDLE_STATE="$(cat "$CACHEDIR"/sxmo.idle.state)" LOCK="$( printf %s "$IDLE_STATE" | grep ^LOCK | cut -d' ' -f2 )" OFF="$( printf %s "$IDLE_STATE" | grep ^OFF | cut -d' ' -f2 )" SUSPEND="$( printf %s "$IDLE_STATE" | grep ^SUSPEND | cut -d' ' -f2 )" } start() { if pgrep swayidle; then notify-send "Already running !" exit 1 fi set -- if [ "$LOCK" -gt 0 ]; then set -- "$@" timeout "$LOCK" "sxmo_screenlock.sh lock" fi if [ "$OFF" -gt 0 ]; then set -- "$@" timeout "$OFF" "sxmo_screenlock.sh off" fi if [ "$SUSPEND" -gt 0 ]; then set -- "$@" timeout "$SUSPEND" "sxmo_screenlock.sh off" fi if [ "$#" -eq 0 ]; then notify-send "Idle monitor disabled" exit 1 fi exec swayidle "$@" } stop() { pkill swayidle || return 0 sleep 1 } configmenu() { PICKED="$( printf "LOCK %d\nOFF %d\nSUSPEND %d\n" "$LOCK" "$OFF" "$SUSPEND" | \ sxmo_dmenu_with_kb.sh )" target="$(printf %s "$PICKED" | cut -d" " -f1)" old_value="$(printf %s "$PICKED" | cut -d" " -f2)" while [ -z "$new_value" ]; do new_value="$( printf "" | \ sxmo_dmenu_with_kb.sh -p "New value" )" if ! [ "$new_value" -eq "$new_value" ]; then unset new_value # not an integer value elif [ "$new_value" -lt 5 ] && [ "$new_value" -ne 0 ]; then unset new_value fi done sed -i "s|$target $old_value|$target $new_value|" "$CACHEDIR"/sxmo.idle.state } readconfig action="${1:-start}" case "$action" in start) start sleep 1 if pgrep swayidle; then notify-send "Dpms Started" fi ;; stop) stop sleep 1 if ! pgrep swayidle; then notify-send "Dpms Stopped" fi ;; restart) stop swaymsg exec "$(basename "$0")" start sleep 1 if pgrep swayidle; then notify-send "Dpms Restarted" fi ;; config) configmenu swaymsg exec "$(basename "$0")" restart ;; esac