diff options
Diffstat (limited to 'damb')
-rwxr-xr-x | damb | 117 |
1 files changed, 80 insertions, 37 deletions
@@ -1,60 +1,103 @@ #!/bin/sh -# https://sinanmohd.com -#################### -## user variables ## -#################### # dir where audio files are stored amb_dir="$HOME/.local/share/damb" -# pid file location pid_file="/tmp/damb.pid" -# dir where config files are stored config_dir="$HOME/.config/damb" +menu="dmenu" -get_opt() +die() { - printf "select\nlinks\nrandom\nstream\nstop" | dmenu -p "הּ " + : "${1:?}" + + command -v notify-send > /dev/null && + notify-send " damb" "$1" + + printf "\033[31;1merr: %b\033[0m\n" "$1" + exit "${2:-1}" } -get_ambs() +dep_check() { - find "$amb_dir" -type f -exec basename {} \; + : "${1:?}" + + for dep; do + command -v "$dep" 1>/dev/null || + die "$dep not found, please install it" 127 + done + + unset dep } -send_err() +get_opt() { - printf "error: %s\n" "$1" - notify-send " damb" "error, $1" + printf "select\nlinks\nrandom\nstream\nstop" | "$menu" -p "הּ " +} +get_ambs() +{ + find "$amb_dir" -type f -exec basename {} \; } get_link() { grep -v "^#.*$" "$config_dir"/links | - grep "$(grep -v "^#.*$" "$config_dir"/links | cut -d '=' -f1 | dmenu -p " " -l 25)" | + grep "$(grep -v "^#.*$" "$config_dir"/links | cut -d '=' -f1 | "$menu" -p " " -l 25)" | cut -d '=' -f2 | tr -d ' ' } -case "$(get_opt)" in - select) ffplay -volume 20 -nodisp -loop 0 "$amb_dir/$(get_ambs | dmenu -p " " -l 25)" & - echo "$!" >> "$pid_file" - ;; - links) mpv --no-video --no-resume-playback "$(get_link)" & - echo "$!" >> "$pid_file" - ;; - random) ffplay -volume 20 -nodisp -loop 0 "$amb_dir/$(get_ambs | shuf -n1)" & - echo "$!" >> "$pid_file" - ;; - stop) while IFS= read -r process - do - kill -2 "$process" - done < "$pid_file" - - rm "$pid_file" - ;; - stream) mpv --no-video "$(xclip -o -sel clip)" & - echo "$!" >> "$pid_file" - ;; - "") ;; # stay quiet when user quits the program during selection - *) send_err "option not implemented";; -esac +main() +{ + [ -z "$DISPLAY" ] && + menu="bemenu" + + dep_check "$menu" + + case "$(get_opt)" in + select) + dep_check "ffplay" + ffplay -volume 20 -nodisp -loop 0 "$amb_dir/$(get_ambs | "$menu" -p " " -l 25)" & + echo "$!" >> "$pid_file" + ;; + links) + dep_check "mpv" + mpv --no-video --no-resume-playback "$(get_link)" & + echo "$!" >> "$pid_file" + ;; + random) + dep_check "ffplay" + ffplay -volume 20 -nodisp -loop 0 "$amb_dir/$(get_ambs | shuf -n1)" & + echo "$!" >> "$pid_file" + ;; + stop) + while read -r process + do + kill -2 "$process" + done < "$pid_file" + + rm "$pid_file" + ;; + stream) + paste= + dep_check "mpv" + + if [ -z "$DISPLAY" ] + then + dep_check "wl-paste" + paste="$(wl-paste)" + else + dep_check "xclip" + paste="$(xclip -o -sel clip)" + fi + + mpv --no-video "$paste" & + echo "$!" >> "$pid_file" + ;; + "") + ;; # stay quiet when user quits the program during selection + *) + "option not implemented";; + esac +} + +main |