30 lines
830 B
Bash
30 lines
830 B
Bash
#!/bin/sh
|
|||
|
|
# ocd-waybar-ctl: send a command to the ocd-waybar daemon.
|
||
|
|
# Usage: ocd-waybar-ctl {advance|lock|poll|quit}
|
||
|
|
# wired into the waybar custom/ocd module as on-click / on-click-right.
|
||
|
|
|
||
|
|
set -eu
|
||
|
|
cmd="${1:-advance}"
|
||
|
|
sock="${XDG_RUNTIME_DIR:-/run/user/$(id -u)}/ocd-waybar.sock"
|
||
|
|
|
||
|
|
if [ "$#" -gt 0 ]; then
|
||
|
|
cmd="$1"
|
||
|
|
fi
|
||
|
|
|
||
|
|
case "$cmd" in
|
||
|
|
advance|lock|poll|quit) ;;
|
||
|
|
*) echo "ocd-waybar-ctl: unknown command '$cmd'" >&2; exit 2 ;;
|
||
|
|
esac
|
||
|
|
|
||
|
|
if [ ! -S "$sock" ]; then
|
||
|
|
echo "ocd-waybar-ctl: daemon socket not found at $sock" >&2
|
||
|
|
exit 1
|
||
|
|
fi
|
||
|
|
|
||
|
|
printf '%s\n' "$cmd" | socat - UNIX-SENDTO:"$sock" 2>/dev/null \
|
||
|
|
|| printf '%s\n' "$cmd" | nc -U -u -w1 "$sock" 2>/dev/null \
|
||
|
|
|| python3 - "$sock" "$cmd" <<'PY'
|
||
|
|
import socket, sys
|
||
|
|
s = socket.socket(socket.AF_UNIX, socket.SOCK_DGRAM)
|
||
|
|
s.sendto((sys.argv[2] + "\n").encode(), sys.argv[1])
|
||
|
|
PY
|