Skip to content

MPRIS

The MPRIS backend auto-discovers every MPRIS-compatible player (Spotify, VLC, Firefox, MPD, Kodi, Bluetooth devices) and exposes unified playback controls. Players appear and disappear in real time — no configuration needed.

GET /players

Returns all active players with their current state: playback status, track metadata, volume, shuffle, loop mode, and position.

POST /players/{player}/play
POST /players/{player}/pause
POST /players/{player}/play_pause
POST /players/{player}/stop
POST /players/{player}/next
POST /players/{player}/previous
POST /players/{player}/seek
{ "offset": 1000000 }
POST /players/{player}/position
{ "track_id": "...", "position": 0 }
POST /players/{player}/volume
{ "volume": 0.5 }
POST /players/{player}/loop
{ "loop": "None|Track|Playlist" }
POST /players/{player}/shuffle
{ "shuffle": true }
EventTrigger
player.updatedPlayback state, volume, or metadata change
player.addedNew player appeared
player.removedPlayer closed
player.positionPeriodic position tick

The backend listens on D-Bus for org.mpris.MediaPlayer2 interfaces. Player state is cached and invalidated via D-Bus signals, with a heartbeat for accurate position tracking.