#!/bin/sh

# Send a command to every running mpv instance via its IPC socket
# (created by the mpvSockets.lua script in ~/.config/mpv/scripts).
#
# Usage: pauseallmpv [subcommand]
#   (no arg)    pause all mpv instances (original behavior)
#   toggle      toggle pause
#   play        unpause
#   next        playlist-next
#   prev        playlist-prev
#   stop        stop playback
#   seek-fwd    seek +10s
#   seek-back   seek -10s
#
# Exit status: 0 if at least one mpv instance was reached, 1 otherwise.

case "${1:-pause}" in
	pause)     cmd='["set_property","pause",true]' ;;
	toggle)    cmd='["cycle","pause"]' ;;
	play)      cmd='["set_property","pause",false]' ;;
	next)      cmd='["playlist-next"]' ;;
	prev)      cmd='["playlist-prev"]' ;;
	stop)      cmd='["stop"]' ;;
	seek-fwd)  cmd='["seek",10]' ;;
	seek-back) cmd='["seek",-10]' ;;
	*) echo "Usage: $0 [pause|toggle|play|next|prev|stop|seek-fwd|seek-back]" >&2; exit 2 ;;
esac

rc=1
for s in /tmp/mpvSockets/*; do
	[ -S "$s" ] || continue
	rc=0
	printf '{"command":%s}\n' "$cmd" | socat - "$s" >/dev/null
done

exit $rc
