Interacting with Quod Libet
In Python
Quod Libet supports plugins written in Python. These plugins can interact with songs more directly than the other interfaces, changing or reading metadata using dict-like !AudioFile objects. The plugin interface has not yet stabilized, although we do not expect it to change drastically in the future.
The Unix Way
Querying the player
Quod Libet writes information about the current song to
~/.quodlibet/current
. The file is in key=value form. Key values are in
UTF-8, except for the ~filename
key, which has unknown encoding (but
will point to the file being played when interpreted as a sequence of bytes).
There is a --print-playing
option which can use the same syntax as the
RenamingFiles interface to print information about the current song:
quodlibet --print-playing '<artist> - <tracknumber~title>'
quodlibet --status
provides player state information. The first word
will be either playing, paused, or not-running, followed by
the selected View,
volume setting (0.0 - 1.0)
Playback order & repeat settings
Current song progress (0.0 - 1.0)
Controlling the player
Quod Libet understands a number of command line arguments to control a running player. For a full list, see the man page.
--next
,--previous
,--play
, and--pause
should be self-explanatory;--play-pause
toggles pause on and off.
--volume n
sets the volume to anywhere between 0 (muted) or 100 (full volume)
--seek <time>
seeks within the current song.
--query <search text>
searches in your library (if the current browser supports it).
--play-file <filename>
plays that file or directory.
Quod Libet can also be controlled via a FIFO , ~/.quodlibet/control
. To see
how the command-line arguments map to FIFO commands, refer to
process_arguments()
in
https://github.com/quodlibet/quodlibet/blob/main/quodlibet/cli.py;
as a simple example:
# Sets volume to 50%
echo volume 50 > ~/.quodlibet/control
Integration with third party tools
Quod Libet in Conky
Conky is a lightweight system monitor for X. It includes builtin objects for many popular music players, but not quodlibet (yet). That doesn’t mean you can’t use conky with quodlibet. After installing conky, add the following to your```~/.conkyrc`` file:
${if_existing /<path to your home directory>/.quodlibet/current}
${exec quodlibet --print-playing "<artist>"}
${scroll 50 ${exec quodlibet --print-playing "<title~album>"} }
${endif}
will display the current artist on one line with a scrolling display of song title and album on the next line. Conky will only attempt to display this information if quodlibet is playing.
eSpeak: Speech Synthesizer
You can use eSpeak to hear the current playing title.
quodlibet --print-playing "<~~people~title>" | espeak -s 120 -v $(quodlibet --print-playing "<language|<language>|en>")
In this example Quod Libet will use the value of the language tag to tell
eSpeak which language/voice to use for the specific title (Use espeak
--voices`
to get a list of all available languages).
You can also lower the volume during speaking:
VOL=$(echo $(quodlibet --status | head -n1 | cut -d\ -f3)*100 | bc)
quodlibet --volume=$(echo $VOL/3 | bc)
quodlibet --print-playing "<~~people~title>" | espeak -s 120 -v $(quodlibet --print-playing "<language|<language>|en>")
quodlibet --volume=$(echo $VOL/1 | bc)