Commit Diff


commit - 93ddae21ac250ee648365771f33fa21bb24bd415
commit + 70a17dbad95de2858111c141ddbe611c075f8271
blob - abf9adfeaaaf016c01b930e9611ed03c9c5ab4b0
blob + 3c4604e86e25caf28184ccc3b31f0bc74e9ab765
--- mpc-notify
+++ mpc-notify
@@ -19,27 +19,19 @@
 if [ -z "$WAYLAND_DISPLAY" ] && [ -z "$DISPLAY" ]; then
 	exit 2
 fi
+
+# globals
 command="$1"
+use_preview=0
 
-# set defaults
-# FEATURE: make width and height configurable through flags
+# defaults
+# FEATURE: make defaults configurable through flags
+preview_dir="${XDG_CONFIG_HOME:-$HOME/.config}/mpc/previews"
 preview_width=64
 preview_height=64
 default_song_icon="media-playback-start"
 
-# find xdg music directory
-
-# user-dirs.dirs is not guaranteed to exist
-# shellcheck disable=SC1091
-. "${XDG_CONFIG_HOME:-$HOME/.config}/user-dirs.dirs" 2>/dev/null || true
-xdg_music_dir="${XDG_MUSIC_DIR:-$HOME/Music}"
-
-# find mpc config directory
-mpc_config_dir="${XDG_CONFIG_HOME:-$HOME/.config}/mpc"
-[ -d "$mpc_config_dir" ] || mkdir -p "$mpc_config_dir"
-
 # issue an mpc command based on arguments and assemble notification message
-use_preview=0
 case "$command" in
 	"")
 		# use defaults
@@ -101,13 +93,17 @@ case "$command" in
 		[ "$command" = "next" ] || [ "$command" = "prev" ] && exit
 		;;
 esac
-song_body="$(mpc --format '[%title%[ \n%artist% - %album%]]|[%file%]' current)"
 
 # use album preview for song icon
 if [ "$use_preview" -eq 1 ]; then
-	preview_dir="$mpc_config_dir/previews"
 	[ -d "$preview_dir" ] || mkdir -p "$preview_dir"
 
+	# find xdg music directory
+	# user-dirs.dirs is not guaranteed to exist
+	# shellcheck disable=SC1091
+	. "${XDG_CONFIG_HOME:-$HOME/.config}/user-dirs.dirs" 2>/dev/null || true
+	xdg_music_dir="${XDG_MUSIC_DIR:-$HOME/Music}"
+
 	# get preview filename
 	song_filename="$(mpc --format "${xdg_music_dir}/%file%" current)"
 	song_album="$(mpc --format %album% current)"
@@ -140,7 +136,16 @@ if [ "$use_preview" -eq 1 ]; then
 				song_icon="$default_song_icon"
 			fi
 		fi
+		unset song_dirname
 	fi
+	unset preview_path
 fi
+unset xdg_music_dir song_filename song_album
 
+# send the actual notification
+song_body="$(mpc --format '[%title%[ \n%artist% - %album%]]|[%file%]' current)"
 notify-replace 'mpc-notify' "$song_head" "$song_body" -i "$song_icon" -u low
+
+# cleanup
+unset command preview_dir preview_width preview_height default_song_icon \
+	use_preview song_head song_body song_icon