MPRIS - ArchWiki

Jump to content

# MPRIS

From ArchWiki

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

This article or section needs expansion.

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

- celluloid
- Chromium
- deadbeefAUR (using deadbeef-mpris2-pluginAUR)
- Dragon Player
- Firefox
- gmusicbrowserAUR
- guayadequeAUR
- mpv#mpv-mpris
- Music Player Daemon/Tips and tricks#MPRIS support
- ncspotAUR
- rage
- smf-dsp-gitAUR
- Spotify#MPRIS
- Telegram
- VLC

## 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`. For better automation playerctl comes with a daemon that keeps track of media player activity and directs commands to the one with most recent activity. You can spun it into the background with:

    $ playerctld daemon

In order to start playerctld when you log in, you may create the following systemd/User service:

    ~/.config/systemd/user/playerctld.service

    [Unit]
    Description=Keep track of media player activity

    [Service]
    Type=oneshot
    ExecStart=/usr/bin/playerctld daemon

    [Install]
    WantedBy=default.target

You should then enable the service with the `--user` flag.

### 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.

Category:

- Multimedia

Hidden category:

- Pages or sections flagged with Template:Expansion