Initial commit

This commit is contained in:
Tom Willemse 2023-03-06 00:01:33 -08:00
commit 66547ca113
2 changed files with 51 additions and 0 deletions

26
README.org Normal file
View file

@ -0,0 +1,26 @@
#+title: MPD Notify
A simple script that listens to an =mpc idleloop= and sends a notification whenever the playing state of MPD changes. This tries to show the album art along with the notification as long as there is one of these files present in the album's directory:
- =cover.jpg=
- =cover.jpeg=
- =cover.png=
- =folder.jpg=
- =folder.jpeg=
- =folder.png=
* Requirements
This script needs [[https://musicpd.org/clients/mpc/][mpc]], [[https://gitlab.gnome.org/GNOME/libnotify][libnotify]] and [[https://www.zsh.org/][zsh]].
* Installation
Put the =mpd-notify= script anywhere in your =$PATH=.
* Usage
Run the =mpd-notify= script without arguments. This script assumes that your MPD music directory is =$HOME/music= and any file path it gets from MPD will be relative to that.
Since this is meant to keep running in the background, you probably want it to do so by calling it as:
: mpd-notify &

25
mpd-notify Executable file
View file

@ -0,0 +1,25 @@
#!/usr/bin/env zsh
mpc idleloop player | while read _
do
song=$(mpc current)
state=$(mpc status %state%)
directory="$HOME/music/$(dirname "$(mpc --format "%file%" current)")"
icon=""
message="$state"
if [[ -e "$directory/cover.jpg" ]]; then icon="$directory/cover.jpg";
elif [[ -e "$directory/cover.jpeg" ]]; then icon="$directory/cover.jpeg";
elif [[ -e "$directory/cover.png" ]]; then icon="$directory/cover.png";
elif [[ -e "$directory/folder.jpg" ]]; then icon="$directory/folder.jpg";
elif [[ -e "$directory/folder.jpeg" ]]; then icon="$directory/folder.jpeg";
elif [[ -e "$directory/folder.png" ]]; then icon="$directory/folder.png";
fi
case "$state" in
paused )
message="Paused ..."
;;
playing )
message="Now playing ..."
;;
esac
notify-send --icon "$icon" "$song" "$message"
done