52 lines
1.5 KiB
Bash
52 lines
1.5 KiB
Bash
|
|
#!/bin/sh
|
||
|
|
# Touch gesture daemon for the socktop display. Pass -v to log each detection.
|
||
|
|
#
|
||
|
|
# Single source of truth for the lisgd arguments -- referenced by the i3 autostart,
|
||
|
|
# the systemd unit and tools/test-foreground.sh, so they cannot drift apart.
|
||
|
|
#
|
||
|
|
# IMPORTANT: run exactly ONE instance. lisgd does not grab the input device
|
||
|
|
# exclusively, so two running copies make every swipe fire twice.
|
||
|
|
set -eu
|
||
|
|
|
||
|
|
for c in /usr/local/etc/socktop-swipe.env "$(dirname "$0")/config.env"; do
|
||
|
|
[ -r "$c" ] && . "$c" && break
|
||
|
|
done
|
||
|
|
|
||
|
|
: "${TOUCH_DEV:?no TOUCH_DEV -- is the config installed?}"
|
||
|
|
: "${SCREEN_W:=1024}"
|
||
|
|
: "${SCREEN_H:=600}"
|
||
|
|
: "${SWIPE_THRESHOLD:=80}"
|
||
|
|
: "${SWIPE_LENIENCY:=30}"
|
||
|
|
: "${FINGER_COUNTS:=1 2 3}"
|
||
|
|
: "${GESTURE_IN:=RL}"
|
||
|
|
: "${GESTURE_OUT:=LR}"
|
||
|
|
|
||
|
|
SWIPE_CMD=${SWIPE_CMD:-$(dirname "$0")/socktop-swipe}
|
||
|
|
[ -x /usr/local/bin/socktop-swipe ] && SWIPE_CMD=/usr/local/bin/socktop-swipe
|
||
|
|
|
||
|
|
verbose=
|
||
|
|
[ "${1:-}" = "-v" ] && verbose=-v
|
||
|
|
|
||
|
|
if [ ! -e "$TOUCH_DEV" ]; then
|
||
|
|
echo "socktop-gestures: $TOUCH_DEV not present" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
if [ ! -r "$TOUCH_DEV" ]; then
|
||
|
|
echo "socktop-gestures: cannot read $TOUCH_DEV -- are you in the 'input' group?" >&2
|
||
|
|
echo " sudo usermod -aG input $(id -un) then log out and back in" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
# Bind every configured contact count to the same action; see config.env for why.
|
||
|
|
set --
|
||
|
|
for f in $FINGER_COUNTS; do
|
||
|
|
set -- "$@" -g "$f,$GESTURE_IN,*,*,R,$SWIPE_CMD next"
|
||
|
|
set -- "$@" -g "$f,$GESTURE_OUT,*,*,R,$SWIPE_CMD prev"
|
||
|
|
done
|
||
|
|
|
||
|
|
exec lisgd $verbose \
|
||
|
|
-d "$TOUCH_DEV" \
|
||
|
|
-w "$SCREEN_W" -h "$SCREEN_H" \
|
||
|
|
-t "$SWIPE_THRESHOLD" -r "$SWIPE_LENIENCY" \
|
||
|
|
"$@"
|