Do not suspend on active inhibitors

This commit is contained in:
Xavier Del Campo Romero 2022-03-04 22:31:09 +01:00
parent b24bfb10c7
commit 312bc6955a
1 changed files with 12 additions and 4 deletions

View File

@ -23,7 +23,7 @@ wait_for_notifications() {
is_led_on=0 is_led_on=0
fi fi
if is_screen_on; then if is_screen_on_or_inhibitor_active; then
break break
fi fi
secs=$(($secs-1)) secs=$(($secs-1))
@ -40,7 +40,15 @@ reset_wake_time() {
> /sys/class/rtc/rtc0/wakealarm > /sys/class/rtc/rtc0/wakealarm
} }
is_screen_on() { is_screen_on_or_inhibitor_active() {
INHIBITORS=$(systemd-inhibit --list --no-legend \
| grep -e '[[:space:]]sleep[[:space:]]' \
| grep -e 'lock$')
if [ "$INHIBITORS" != "" ]; then
return 0
fi
return "$(cat /sys/class/backlight/backlight/bl_power)" return "$(cat /sys/class/backlight/backlight/bl_power)"
} }
@ -85,7 +93,7 @@ if [ "$1" == "start" ]; then
trap "$0 stop" EXIT trap "$0 stop" EXIT
while [ -d "$LOCK_DIR" ]; do while [ -d "$LOCK_DIR" ]; do
while is_screen_on; do while is_screen_on_or_inhibitor_active; do
sleep 60 sleep 60
done done
@ -97,7 +105,7 @@ if [ "$1" == "start" ]; then
echo "Failed going to sleep, try again in $WAKE_SECS seconds ..." >&2 echo "Failed going to sleep, try again in $WAKE_SECS seconds ..." >&2
wait_for_notifications wait_for_notifications
schedule_wake_time schedule_wake_time
if is_screen_on; then if is_screen_on_or_inhibitor_active; then
break break
fi fi
done done