I would like to know if there is a way to send a message to a running process on linux ?
For example, is it possible to programmatically "pause" a video launched with mpv
.
I would like to know if there is a way to send a message to a running process on linux ?
For example, is it possible to programmatically "pause" a video launched with mpv
.
To control mpv
remotely (eg from another terminal session) you can also start it with the option
--input-ipc-server=/tmp/mpvsocket
and control it by issuing commands like this:
echo '{ "command": ["set_property", "pause", true] }' | socat - /tmp/mpvsocket
See man mpv
for (many) more details.
edit: see also mpv --list-properties
edit2: The most simple way I've found to "toggle" pause/play is
{"command": ["cycle", "pause"]}
kill -s STOP $(pidof mpv)
and kill -s CONT $(pidof mpv)
or better :
xdotool key --window "$(xdotool search --class mpv)" p
The key "P", is set by default to pause the video.
It's possible to control mpv through IPC. From the manual mpv(1)
:
--input-ipc-server=<filename>
Enable the IPC support and create the listening socket at the given path.
On Linux and Unix, the given path is a regular filesystem path.
On Windows, named pipes are used, so the path refers to the pipe namespace (\\.\pipe\<name>). If the \\.\pipe\ prefix is missing, mpv will add it automatically before creating the pipe, so --input-ipc-server=/tmp/mpv-socket and --input-ipc-server=\\.\pipe\tmp\mpv-socket are equivalent for IPC on Windows.
See JSON IPC for details.
A couple of examples:
$ echo 'cycle pause' | socat - /tmp/mpv-socket
$ echo 'playlist-prev' | socat - /tmp/mpv-socket
$ echo 'playlist-next' | socat - /tmp/mpv-socket
See mpv(1)
to learn more.
See also:
© 2022 - 2024 — McMap. All rights reserved.
kill -s STOP 13021
andkill -s CONT 13021
. Thanks, that's a brilliant work around ! Is it maybe possible to send a key signal too ? – Stratumxdotool key --window "$(xdotool search --class mpv)" p
The key P is used to pause the video. – Stratum