You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
126 lines
2.1 KiB
126 lines
2.1 KiB
#!/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 |
|
|
|
|