71 lines
1.1 KiB
Bash
Executable File
71 lines
1.1 KiB
Bash
Executable File
#!/bin/sh
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
# Copyright 2022 Sxmo Contributors
|
|
|
|
_swayidletoidles() {
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
timeout)
|
|
printf "%s|%s" "$2" "$3"
|
|
shift 3
|
|
case "$1" in
|
|
resume)
|
|
printf "|%s" "$2"
|
|
shift 2
|
|
;;
|
|
esac
|
|
printf "\n"
|
|
;;
|
|
*)
|
|
shift
|
|
;;
|
|
esac
|
|
done
|
|
}
|
|
|
|
xorgidle() {
|
|
idles="$(_swayidletoidles "$@")"
|
|
resumes=""
|
|
|
|
tick=0
|
|
new_idle="$(xprintidle)"
|
|
last_idle="$new_idle"
|
|
|
|
finish() {
|
|
sh -c "$resumes"
|
|
resumes=""
|
|
exit
|
|
}
|
|
trap 'finish' TERM INT EXIT
|
|
|
|
while : ; do
|
|
last_idle="$new_idle"
|
|
new_idle="$(xprintidle)"
|
|
if [ "$last_idle" -gt "$new_idle" ]; then
|
|
sh -c "$resumes"
|
|
tick=0
|
|
resumes=""
|
|
fi
|
|
|
|
if printf "%b\n" "$idles" | grep -q "^$tick|"; then
|
|
printf "%b\n" "$idles" | \
|
|
grep "^$tick|" | \
|
|
cut -d'|' -f2 | \
|
|
xargs -I{} -0 sh -c "{}"
|
|
resumes="$(printf "%b\n" "$idles" | grep "^$tick|" | cut -d'|' -f3);$resumes"
|
|
fi
|
|
|
|
sleep 1
|
|
tick=$((tick + 1))
|
|
done
|
|
}
|
|
|
|
case "$SXMO_WM" in
|
|
dwm)
|
|
xorgidle "$@"
|
|
;;
|
|
*)
|
|
exec "${SXMO_WM}idle" "$@"
|
|
;;
|
|
esac
|