MPRIS

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 language, wiki syntax or style improvements. See
Help:Style
for reference.
Reason:
It looks like most software now supports MPRIS, this section should probably be turned into a list of specific cases where manual configuration is needed. (Discuss in
Talk:MPRIS
)
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
)
Audacious
brave-bin
AUR
celluloid
Chromium
clementine
AUR
cmus
deadbeef
AUR
dragon
feishin
AUR
fooyin-bin
AUR
Firefox
gmusicbrowser
AUR
guayadeque
AUR
KDE#KDE Connect
mpv#mpv-mpris
Music Player Daemon/Tips and tricks#MPRIS support
ncspot
N Music
pear-desktop
AUR
(enable in
Plugins > Shortcuts (MPRIS)
)
plattenalbum
AUR
qmmp
(enable in
Settings > Plugins
)
Quod Libet
rage
resonance
AUR
smf-dsp-git
AUR
Spotify#MPRIS
spotify-player
spotube-bin
AUR
strawberry
tauon-music-box
Telegram
tidal-hifi-bin
AUR
tonearm
AUR
Vermilion
VLC
Control utilities
Tip
Create a
key binding
for common control commands and multimedia keys such as
XF86AudioPlay
,
XF86AudioPause
,
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
,
previous
and
stop
:
$ playerctl play-pause
$ playerctl next
$ playerctl previous
$ playerctl stop
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 spawn 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 do a
daemon-reload
before
enabling
the service with the
--user
flag.
Tip
The
playerctld-systemd-unit
AUR
package can be installed instead of manually creating the service.
Additionally,
playerctld
has the ability to change an "active" player, which can be useful when you have multiple simultaneous media streams:
To switch to the next player, use:
$ playerctld shift
To switch to the previous player, use:
$ playerctld unshift
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
with the supported
Methods
:
$ dbus-send --print-reply --dest=org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.
Method
Similarly using
busctl(1)
:
$ busctl --user call org.mpris.MediaPlayer2.spotify /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player
Method
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,
start/enable
mpris-proxy.service
with the
--user
flag.