#!/bin/sh printhelp () { exit } while getopts "hwxd:" o; do case "${o}" in w) DMENU="tofi" ;; x) DMENU="dmenu" ;; d) ARGS="$ARGS$OPTARG " ;; *) printhelp ;; esac done if [ -z "$DMENU" ]; then if [ -n "$WAYLAND_DISPLAY" ]; then DMENU="tofi" DEFARGS="--prompt-text" elif [ -n "$DISPLAY" ]; then DMENU="dmenu" DEFARGS="-p" else printf "Can't tell if Wayland or X; what gives?\n" exit 1 fi fi DMENU_PROMPT=$(playerctl -l | $DMENU $ARGS $DEFARGS 'Players:') [ -z "$DMENU_PROMPT" ] && exit 1 PLAYERCONTROLS_PROMPT=$(echo "play-pause pause play stop next previous position volume status shuffle" | $DMENU $ARGS $DEFARGS 'Action:') [ -z "$PLAYERCONTROLS_PROMPT" ] && exit 1 case "$PLAYERCONTROLS_PROMPT" in "pause"|"play"|"play-pause"|"stop"|"next"|"previous") playerctl -p "$DMENU_PROMPT" "$PLAYERCONTROLS_PROMPT" ;; "position") VALUE=$(seq -100 5 +100 | grep -v '^0$' | sed 's/^[0-9]/\+&/' | $DMENU $ARGS $DEFARGS 'Position:') [ -z "$VALUE" ] && exit 1 playerctl -p "$DMENU_PROMPT" "$PLAYERCONTROLS_PROMPT" "$VALUE" ;; "volume") VALUE=$(set 0 5 100 |$DMENU $ARGS $DEFARGS 'Volume:') [ -z "$VALUE" ] && exit 1 playerctl -p "$DMENU_PROMPT" "$PLAYERCONTROLS_PROMPT" "$VALUE" ;; "status") STATUS_MSG=$(playerctl -p "$DMENU_PROMPT" "$PLAYERCONTROLS_PROMPT") notify-send "$DMENU_PROMPT status" "$STATUS_MSG" ;; "shuffle") VALUE=$(echo "On Off Toggle Status" | $DMENU $ARGS $DEFARGS "Shuffle:") [ -z "$VALUE" ] && exit 1 case "$VALUE" in "On"|"Off"|"Toggle") playerctl -p "$DMENU_PROMPT" "$PLAYERCONTROLS_PROMPT" "$VALUE" ;; "Status") STATUS_MSG=$(playerctl -p "$DMENU_PROMPT" "$PLAYERCONTROLS_PROMPT") notify-send "$DMENU_PROMPT shuffle status" "$STATUS_MSG" ;; *) exit 1 ;; esac ;; *) exit 1 ;; esac exit 0