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.

69 lines
1.5 KiB

#!/usr/bin/env sh
# shellcheck disable=SC1090
. "$(which sxmo_common.sh)"
REDLED_PATH="/sys/class/leds/red:indicator/brightness"
BLUELED_PATH="/sys/class/leds/blue:indicator/brightness"
SWAYSOCK="$(cat "$CACHEDIR"/sxmo.swaysock)"
export SWAYSOCK
if ! swaymsg 2> /dev/null; then
unset SWAYSOCK
fi
if [ -z "$DISPLAY" ]; then
export DISPLAY=":0"
fi
finish() {
kill "$BLINKPID"
sxmo_screenlock.sh updateLed
if grep -q crust "$LASTSTATE" \
&& grep -q rtc "$UNSUSPENDREASONFILE" \
&& [ "$(sxmo_screenlock.sh getCurState)" != "unlock" ]; then
WAKEPROCS=$(pgrep -f sxmo_rtcwake.sh | wc -l)
if [ "$WAKEPROCS" -gt 2 ]; then
#each process also spawns a blink subprocess, so we check if there are more than two rather than one:
echo "sxmo_rtcwake: returning without crust, other sxmo_rtcwake process is still running ($(date))" >&2
else
echo "sxmo_rtcwake: going back to crust ($(date))" >&2
sxmo_screenlock.sh crust
fi
else
echo "sxmo_rtcwake: returning without crust ($(date))" >&2
fi
exit 0
}
blink() {
while [ "$(sxmo_screenlock.sh getCurState)" != "unlock" ]; do
echo 1 > "$REDLED_PATH"
echo 0 > "$BLUELED_PATH"
sleep 0.25
echo 1 > "$REDLED_PATH"
echo 1 > "$BLUELED_PATH"
sleep 0.25
done
}
if [ "$1" = "--strict" ]; then
shift
#don't run if we're not in crust or not waked by rtc
if ! grep -q crust "$LASTSTATE" || ! grep -q rtc "$UNSUSPENDREASONFILE"; then
exit 0
fi
fi
trap 'finish' TERM INT EXIT
blink &
BLINKPID=$!
echo "sxmo_rtcwake: Running sxmo_rtcwake for $* ($(date))" >&2
"$@"