A small script for controlling mpv via the JSON IPC. Intended to resemble playerctl.
#!/usr/bin/env bash | |
# This script requires: | |
# - that the directory $HOME/.mpv exist | |
# - that the program socat be installed | |
# - that you start mpv with the unix socket feature pointing at that directory | |
# I recommend an alias in your .bashrc or equivalent file: | |
# alias mpv="mpv --input-unix-socket=$HOME/.mpv/socket" | |
socket="$HOME/.mpv/socket" | |
command() { | |
# JSON preamble. | |
local tosend='{ "command": [' | |
# adding in the parameters. | |
for arg in "$@"; do | |
tosend="$tosend \"$arg\"," | |
done | |
# closing it up. | |
tosend=${tosend%?}' ] }' | |
# send it along and ignore output. | |
# to print output just remove the redirection to /dev/null | |
echo $tosend | socat - $socket &> /dev/null | |
} | |
# exit mpv | |
[ "$1" = "stop" ] && command 'quit' | |
# toggle play-pause | |
[ "$1" = "play-pause" ] && command 'cycle' 'pause' | |
# start playing | |
[ "$1" = "pause" ] && command 'set' 'pause' 'yes' | |
# stop playing | |
[ "$1" = "play" ] && command 'set' 'pause' 'no' | |
# play next item in playlist | |
[ "$1" = "next" ] && command 'playlist_next' | |
# play previous item in playlist | |
[ "$1" = "previous" ] && command 'playlist_prev' | |
# add item(s) to playlist | |
[ "$1" = "add" ] && shift && | |
for video in "$@"; do | |
command 'loadfile' "$video" 'append-play'; | |
done; |
This comment has been minimized.
This comment has been minimized.
Thank you very much, exactly what I was looking for! |
This comment has been minimized.
This comment has been minimized.
Exactly that. Although using --input-unix-socket gave me a warning for possible deprecation in the future. Just needed to change it to --input-ipc-server. |
This comment has been minimized.
This comment has been minimized.
This is probably a small subset of |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
This comment has been minimized.
thank you very much for this