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.
68 lines
1.5 KiB
68 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 |
|
"$@"
|
|
|