MPRIS

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

MPRIS (Media Player Remote Interfacing Specification) is a standard D-Bus interface which aims to provide a common programmatic API for controlling media players.

It provides a mechanism for discovery, querying and basic playback control of compliant media players, as well as a track list interface which is used to add context to the active media item.

Supported clients

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: You can see your player of choise in the list and check if it supports mpris with playerctl utility. In case it does, add it to the following list. (Discuss in Talk:MPRIS)

Control utilities

Tip: Create a key binding for common control commands and multimedia keys such as XF86AudioPlay, XF86AudioStop, XF86AudioPrev and XF86AudioNext.

Playerctl

The playerctl utility provides a command line tool to send commands to MPRIS clients. The most common commands are play-pause, next and previous:

$ playerctl play-pause
$ playerctl next
$ playerctl previous

playerctl will send the command to the first player it finds. To select a player manually, use the --player option, e.g. --player=vlc.

mpris-player-control

The mpris_player_control is a shell script which integrates dbus-send and pactl to control MPRIS clients. It supports the Play, Pause, PlayPause and Stop actions and sink volume control (mute/unmute/up/down) for Spotify.

Run mpris_player_control -h to show basic script usage.

D-Bus

An alternative to the above is to manually use D-Bus, which should be available by default as it is a dependency of systemd.

For example, the following commands can be used to control Spotify:

$ dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.PlayPause
$ dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Next
$ dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Previous
$ dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Stop

Bluetooth

Media control from bluetooth headsets and similar devices may be forwarded to MPRIS.

Note: Some headphones such as Sony WH-1000XM3 provide an AVRCP interface. For these types mpris-proxy is not required. Just make sure you have key bindings set up for media keys.

Install the bluez-utils package and run mpris-proxy. In order to start up mpris-proxy in the background and/or when your system starts, you may create a systemd/User service:

~/.config/systemd/user/mpris-proxy.service
[Unit]
Description=Forward bluetooth media controls to MPRIS

[Service]
Type=simple
ExecStart=/usr/bin/mpris-proxy

[Install]
WantedBy=default.target

Then start/enable the service with the --user flag.