Skip to content

Latest commit

 

History

History

player-mpris-tail

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 

Script: player-mpris-tail

This script displays the current track and the play-pause status without polling. Information is obtained by listening to MPRIS events, so it is updated instantaneously on change.

player-mpris-tail player-mpris-tail

Dependencies

  • python-dbus
  • python-gobject
  • python-gi

Configuration

The format of the output can be defined by passing an -f or --format argument. This argument supports metadata replacement using {tag} (e.g. {title}) as well as more advanced formatting, described below.

Players can be blacklisted by passing a -b or --blacklist argument. As an example, VLC can be blacklisted by passing -b vlc. To get a list of the current running players (and their status), run the script as player-mpris-tail.py list.

Commands

The current player can be controlled by passing one of the following commands:

Command Description
play Play the current track
pause Pause the currently playing track
play-pause Play the current track or unpause it if currently paused
stop Stop playback
previous Move to the previous track
next Move to the next track
raise Tell the current player to focus its window

General information about the current state can be printed using the following commands:

Command Description
status Print the normal output and exit immediately
current Print the currently detected player and its status
list List the detected players and their status
metadata Print the metadata object for the current track

Arguments

The following arguments are supported:

Argument Description Default
-b, --blacklist Blacklist / Ignore the given player
-w, --whitelist Whitelist / Permit the given player
-f, --format Use the given format string {icon} {artist} - {title}
--truncate-text Use the given string as the end of truncated text
--icon-playing Use the given text as the playing icon
--icon-paused Use the given text as the paused icon
--icon-stopped Use the given text as the stopped icon
--icon-none Use the given text as the icon for when no player is active ``

Formatting

Tags can be printed by surrounding them with { and }. Polybar formatting can also be given and will be passed through, including substituted tags and formatters.

Tags

The supported tags are:

Tag Description
artist The artist of the current track
album The album of the current track
title The title of the current track
track The track number of the current track
length The length of the current track
fmt-length The formatted length of the current track ([hours:]minutes:seconds)
position The track current time position
genre The genre of the current track
disc The disc number of the current track
date The date of the current track
year The year of the current track
cover The URL of the cover of the current track
icon The icon for the current status (playing / paused / stopped / none)
icon-reversed The pause icon when playing, else the play icon

String formatters

Parts of the format string can be manipulated by surrounding them with {: and :} and prepending a formatter followed by a : (e.g. {:t20:by {artist}:})

The following formatters are supported:

Formatter Argument Description Example Output
tag Only print the string if tag exists {:album: on {album}:} on Album Name
w Number Limit the width of the string to number {:w3:Hello:} Hel
t Number Truncate width of the string to number. If the string is shorter than or equal to number it is printed as given, else the string is truncated and appended a truncator text {:t3:Hello:} He…

Module

Basic output

[module/player-mpris-tail]
type = custom/script
exec = ~/polybar-scripts/player-mpris-tail.py -f '{icon} {artist} - {title}'
tail = true

Example: ⏵ Artist - Title

Basic output and mouse controls

[module/player-mpris-tail]
type = custom/script
exec = ~/polybar-scripts/player-mpris-tail.py -f '{icon} {artist} - {title}'
tail = true
click-left = ~/polybar-scripts/player-mpris-tail.py previous &
click-right = ~/polybar-scripts/player-mpris-tail.py next &
click-middle = ~/polybar-scripts/player-mpris-tail.py play-pause &

Example: ⏵ Artist - Title

Output using formatters

[module/player-mpris-tail]
type = custom/script
exec = ~/polybar-scripts/player-mpris-tail.py -f '{icon} {:artist:t5:{artist}:}{:artist: - :}{:t4:{title}:}'
tail = true
click-left = ~/polybar-scripts/player-mpris-tail.py previous &
click-right = ~/polybar-scripts/player-mpris-tail.py next &
click-middle = ~/polybar-scripts/player-mpris-tail.py play-pause &

Example: ⏵ Artis… - Titl… or ⏵ Titl…

Output using formatters and Polybar action handlers

[module/player-mpris-tail]
type = custom/script
exec = ~/polybar-scripts/player-mpris-tail.py -f '{icon} {:artist:t18:{artist}:}{:artist: - :}{:t20:{title}:}  %{A1:~/polybar-scripts/player-mpris-tail.py previous:} ⏮ %{A} %{A1:~/polybar-scripts/player-mpris-tail.py play-pause:} {icon-reversed} %{A} %{A1:~/polybar-scripts/player-mpris-tail.py next:} ⏭ %{A}'
tail = true

Example: ⏵ Artis… - Titl… ⏮ ⏸ ⏭ or ⏵ Titl… ⏮ ⏸ ⏭ or ⏸ Titl… ⏮ ⏵ ⏭

Output using formatters, Polybar action handlers and blacklisting

[module/player-mpris-tail]
type = custom/script
exec = ~/polybar-scripts/player-mpris-tail.py -f '{icon} {:artist:t18:{artist}:}{:artist: - :}{:t20:{title}:}  %{A1:~/polybar-scripts/player-mpris-tail.py previous -b vlc -b plasma-browser-integration:} ⏮ %{A} %{A1:~/polybar-scripts/player-mpris-tail.py play-pause -b vlc -b plasma-browser-integration:} {icon-reversed} %{A} %{A1:~/polybar-scripts/player-mpris-tail.py next -b vlc -b plasma-browser-integration:} ⏭ %{A}' -b vlc -b plasma-browser-integration
tail = true

Example: ⏵ Artis… - Titl… ⏮ ⏸ ⏭ or ⏵ Titl… ⏮ ⏸ ⏭ or ⏸ Titl… ⏮ ⏵ ⏭