mpvd (1157B)
1 #!/usr/bin/env bash 2 3 source ~/.config/scripts/properties 4 5 shopt -s nullglob globstar 6 7 prefix=${MUSIC_DIR-~/music} 8 musicdirs=( "$prefix"/*/) 9 10 for value in "${musicdirs[@]}" 11 do 12 songdirs+=( "$value" ) 13 subdir=( "$value"*/) 14 if [[ "$subdir" ]]; then 15 songdirs+=( "${subdir[@]#}" ) 16 fi 17 done 18 songdirs=( "${songdirs[@]#"$prefix"/}" ) 19 songdirs=( "${songdirs[@]%/}" ) 20 21 songdir=$(printf '%s\n' "${songdirs[@]}" | "$dmenu" -fn "$dmenu_font" -i -l "$dmenu_lines" "$@") 22 23 [[ -n $songdir ]] || exit 24 25 playsongdir=$(printf "no\nyes" | "$dmenu" -fn "$dmenu_font" -i "$@" -p "Play full directory?") 26 27 [[ -n $playsongdir ]] || exit 28 29 if [[ "$playsongdir" == no ]]; then 30 prefix=${MUSIC_DIR-~/music/"$songdir"} 31 songdirs=( "$prefix"/**/*) 32 songdirs=( "${songdirs[@]#"$prefix"/}" ) 33 songdirs=( "${songdirs[@]%}" ) 34 songdir=$(printf '%s\n' "${songdirs[@]}" | "$dmenu" -fn "$dmenu_font" -i -l "$dmenu_lines" "$@") 35 [[ -n $songdir ]] || exit 36 else 37 random=$(printf "no\nyes" | "$dmenu" -fn "$dmenu_font" -i "$@" -p "Shuffle?") 38 39 [[ -n $random ]] || exit 40 41 if [[ "$random" == yes ]]; then 42 shuffle=--shuffle 43 fi 44 fi 45 46 exec $terminal -e mpv --no-video "$prefix"/"$songdir" "$shuffle"