polybar/scripts/lemonbuddy_wrapper

52 lines
1012 B
Plaintext
Raw Normal View History

#!/usr/bin/env bash
set -eu
set -o pipefail
2016-05-19 14:41:06 +00:00
[ $# -eq 0 ] && {
echo "No bar specified" ; exit 1
}
command -v lemonbar >/dev/null || {
echo "Lemonbar is not installed" ; exit 1
}
lemonbuddy="${LEMONBUDDY_EXECUTABLE:-lemonbuddy}"
command -v "$lemonbuddy" >/dev/null || {
2016-05-19 14:41:06 +00:00
echo "Lemonbuddy is not installed" ; exit 1
}
lemonbar="$($lemonbuddy "$@" -x)"
wmname="$($lemonbuddy "$@" -w)"
2016-05-19 14:41:06 +00:00
logfile="${XDG_CACHE_HOME:-$HOME/.cache}/lemonbuddy/${wmname}.log"
logdir="$(dirname "$logfile")"
pipe="$(mktemp -u /tmp/lemonbuddy.in.XXXXX)"
[ -d "$logdir" ] || mkdir -p "$logdir"
exec 2> >(tee "$logfile")
2016-05-19 14:41:06 +00:00
mkfifo "$pipe"
cleanup_proc() {
pid=$1
kill -0 "$pid" 2>/dev/null && {
echo "$pid is running (sending term signal)..."
kill -TERM "$pid" 2>/dev/null
}
2016-05-19 14:41:06 +00:00
}
# shellcheck disable=SC2094
{ $lemonbuddy "$@" -p "$pipe"; kill -TERM $$ 2>/dev/null; } | $lemonbar >"$pipe" &
2016-05-19 14:41:06 +00:00
trap 'cleanup_proc $!' TERM INT
while kill -0 $! 2>/dev/null; do
sleep 0.5s
2016-05-19 14:41:06 +00:00
done
[ -e "$pipe" ] && rm "$pipe"
kill 0; wait