#!/bin/sh

PID=$(pgrep -x mpc)
if [ -n "$PID" ]; then
  echo "another instance of mpd-monitor already running"
  exit
fi

ID=$(mpc current -f %id% )
mpc idleloop |
  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 event 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" "or no metadata for track" -i :
    else
      notify-send "$TITLE" "$ARTIST" -i :
    fi
  done
