diff --git a/bin/mpd-monitor b/bin/mpd-monitor index 7cd2cc9..7f20022 100755 --- a/bin/mpd-monitor +++ b/bin/mpd-monitor @@ -1,10 +1,23 @@ #!/bin/sh +ID=$(mpc current -f %id% ) mpc idleloop | - while read event; do - if [[ $event == "player" ]]; then - dunstctl close-all - TITLE=$(mpc status -f %title% | awk 'NR==1') - ARTIST=$(mpc status -f %artist% | awk 'NR==1') + while read -r event; do + # if a player event is not output, skip rest of loop + [ "$event" = "player" ] || continue + + # get current id to compare to init id + NEW_ID=$(mpc current -f %id%) + # if a player even is output, but the track has not changed, skip rest of loop + [ "$NEW_ID" != "$ID" ] || continue + ID=$NEW_ID + + dunstctl close-all + TITLE=$(mpc current -f %title%) + ARTIST=$(mpc current -f %artist%) + + if [ -z $TITLE ]; then + notify-send "End of queue or queue empty" -i : + else notify-send "$TITLE" "$ARTIST" -i : fi done