57 lines
1.4 KiB
Promela
57 lines
1.4 KiB
Promela
let ?socketPath = "/run/user/1000/mpv.sock"
|
|
|
|
let ?mpvSpace = dataspace
|
|
$mpvSpace [
|
|
; announce the dataspace when the translator is connected
|
|
? <connected $socketPath> [
|
|
$config <mpv $mpvSpace>
|
|
]
|
|
|
|
; translate <play-file …> to an MPV command
|
|
?? <play-file ?file> [
|
|
$log ! <log "-" { line: <play-file $file> }>
|
|
! <send-json { "command": ["loadfile" $file "append-play"] }>
|
|
]
|
|
|
|
; log anything that comes back from MPV
|
|
; ?? <recv-json ?js> [ $log ! <log "-" { mpv: $js }> ]
|
|
|
|
; clear the playlist on idle so it doesn't grow indefinitely
|
|
?? <recv-json {"event": "idle"}> [
|
|
! <send-json { "command": ["playlist-clear"] }>
|
|
]
|
|
]
|
|
|
|
; need the translator and the translator needs the daemon
|
|
<require-service <daemon mpv-translator>>
|
|
<depends-on <daemon mpv-translator> <service-state <daemon mpv-server> ready>>
|
|
|
|
? <service-object <daemon mpv-translator> ?cap> [
|
|
$cap {
|
|
dataspace: $mpvSpace
|
|
socket: $socketPath
|
|
}
|
|
]
|
|
|
|
; assert and retract the daemon as the daemon is built (this is a testing artifact)
|
|
? <built json_socket_translator ?path ?sum> [
|
|
|
|
<daemon mpv-translator {
|
|
argv: [$path]
|
|
protocol: application/syndicate
|
|
env: {BUILD_SUM: $sum}
|
|
}>
|
|
]
|
|
|
|
; start mpv regardless
|
|
<daemon mpv-server {
|
|
argv: [
|
|
"/run/current-system/sw/bin/mpv"
|
|
"--really-quiet"
|
|
"--idle=yes"
|
|
"--no-audio-display"
|
|
"--input-ipc-server=/run/user/1000/mpv.sock"
|
|
]
|
|
protocol: none
|
|
}>
|