#media-player #mpris #pause #play #skip #music

app empress

A D-Bus MPRIS daemon for controlling media players

15 stable releases

2.0.0 Aug 1, 2023
1.6.0 Mar 28, 2022
1.5.0 Feb 28, 2022
1.4.2 Nov 14, 2021
0.0.0 Mar 5, 2021

#24 in Multimedia

AGPL-3.0-or-later

120KB
3.5K SLoC

empress: MPRIS media controls made simple

This tool functions as a simple command-line abstraction over the D-Bus MPRIS specification which allows for querying and controlling media players. It functions similarly to playerctl, but features more basic controls and a more complex method of tracking which player you want to control. empress uses its own D-Bus daemon to keep track of which players are currently playing (and which players have been updated the most recently), and uses this information to determine you wanted to pause Spotify rather than playing a minimized YouTube video.

Installation

To install empress, simply use Cargo:

$ cargo install empress

(or, if you use Arch, I maintain this package in the AUR:)

$ yay -S empress

Then launch the daemon process in order to use it — you will probably want to put this in an rcfile (or see below for setting up a service):

$ empress server

The server will gracefully shut down if interrupted or signaled with SIGTERM.

Usage

Once you have the daemon set up, you can communicate with it using one of several subcommands, e.g.:

$ empress play-pause

Empress has commands for basic player operations (e.g. now-playing, play/pause/play-pause/stop, next/previous/seek, volume), as well as several utility subcommands for more advanced operation (such as list-players and switch-current). To see the list of commands at any time or get help for a particular command simply run empress help.

Installing empress as a Service

empress can be installed as a service to allow autostarting and lifecycle management using D-Bus and systemd. To do this, run the following:

$ scripts/install-services.sh -l <path to empress binary>

This will install the D-Bus and systemd service files into ~/.local/share. If you installed empress with cargo install, the path to the binary will probably look something like /home/<user>/.cargo/bin/empress.

If you want to make a system-wide installation, simply omit the -l flag. This will install the session service files into /usr instead (but note that empress never runs as a D-Bus system bus).

Once empress has been installed as a service, running any of the empress client commands listed above will autostart the daemon.

Uninstalling

To remove installed service definitions, simply run:

$ scripts/install-services.sh -rl

Like with above, remove the -l to uninstall the service files from the system folders.

Dependencies

~15–30MB
~440K SLoC