The NIX update

This commit is contained in:
2024-10-09 16:55:47 +01:00
parent 2122fdb629
commit 555c2bd5cb
341 changed files with 1136 additions and 44347 deletions

76
scripts/dm-mpd Executable file
View File

@@ -0,0 +1,76 @@
#!/bin/bash
all_name='[ALL]'
mode=library
d_artist() {
mpc list artist | sort -f | dmenu -p artist "${dmenu_args[@]}"
}
d_album() {
local artist="$1"
local albums
mapfile -t albums < <(mpc list album artist "$artist")
if (( ${#albums[@]} > 1 )) ; then
{
printf '%s\n' "$all_name"
printf '%s\n' "${albums[@]}" | sort -f
} | dmenu -p album "${dmenu_args[@]}"
else
# We only have one album, so just use that.
printf '%s\n' "${albums[0]}"
fi
}
d_playlist() {
local format="%position% %title%"
local extra_format="(%artist% - %album%)"
local track
local num_extras
# If all tracks are from the same artist and album, no need to display that
num_extras=$(mpc playlist -f "$extra_format" | sort | uniq | wc -l)
(( num_extras == 1 )) || format+=" $extra_format"
track=$(mpc playlist -f "$format" | dmenu -p track "${dmenu_args[@]}")
printf '%s' "${track%% *}"
}
i=2
for arg do
if [[ $arg == :: ]]; then
dmenu_args=( "${@:$i}" )
break
fi
case "$arg" in
-l) mode=library ;;
-p) mode=playlist ;;
esac
let i++
done
case "$mode" in
library)
artist=$(d_artist)
[[ $artist ]] || exit 1
album=$(d_album "$artist")
[[ $album ]] || exit 2
mpc clear
if [[ $album == "$all_name" ]]; then
mpc find artist "$artist" | sort | mpc add
else
mpc find artist "$artist" album "$album" | sort | mpc add
fi
mpc play >/dev/null
;;
playlist)
mpc play "$(d_playlist)" >/dev/null
;;
esac