Execute on song change
Rmpc provides on_song_change property in the config file which can be used to run a command whenever the song changes. This can be used for various purposes like showing a desktop notification.
Desktop notification on song change
Assuming you have a notification daemon with support for images like dunst running.
All song metadata are available to the script as environment variables. For example $TITLE
, $FILE
, $DURATION
, etc.
-
Create a script and place it somewhere. For example
~/.config/rmpc/notify
. Below is an example of such script. Edit it to your needs or create a new one.~/.config/rmpc/notify #!/usr/bin/env sh# Directory where to store temporary dataTMP_DIR="/tmp/rmpc"# Ensure the directory is createdmkdir -p "$TMP_DIR"# Where to temporarily store the album art received from rmpcALBUM_ART_PATH="$TMP_DIR/notification_cover"# Path to fallback album art if no album art is found by rmpc/mpd# Change this to your needsDEFAULT_ALBUM_ART_PATH="$TMP_DIR/default_album_art.jpg"# Save album art of the currently playing song to a fileif ! rmpc albumart --output "$ALBUM_ART_PATH"; then# Use default album art if rmpc returns non-zero exit codeALBUM_ART_PATH="${DEFAULT_ALBUM_ART_PATH}"fi# Send the notificationnotify-send -i "${ALBUM_ART_PATH}" "Now Playing" "$ARTIST - $TITLE" -
Make the script executable
Terminal window chmod +x ~/.config/rmpc/notify -
In your rmpc’s
config.ron
specify on_song_change property and point it at location of the script from step 1.config.ron #![enable(implicit_some)]#![enable(unwrap_newtypes)]#![enable(unwrap_variant_newtypes)](address: "/tmp/mpd_socket",on_song_change: ["~/.config/rmpc/notify"],... -
Restart rmpc