summaryrefslogtreecommitdiff
path: root/mprisctl
diff options
context:
space:
mode:
Diffstat (limited to 'mprisctl')
-rwxr-xr-xmprisctl59
1 files changed, 59 insertions, 0 deletions
diff --git a/mprisctl b/mprisctl
new file mode 100755
index 0000000..6ea7745
--- /dev/null
+++ b/mprisctl
@@ -0,0 +1,59 @@
+#!/sbin/sh
+
+DMENU_PROMPT=$(playerctl -l | barmenu -p 'Players:')
+[ -z "$DMENU_PROMPT" ] && exit 1
+
+PLAYERCONTROLS_PROMPT=$(echo "play
+pause
+play-pause
+stop
+next
+previous
+position
+volume
+status
+shuffle" | barmenu -p '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]/\+&/' | barmenu -p 'Position:')
+ [ -z "$VALUE" ] && exit 1
+ playerctl -p "$DMENU_PROMPT" "$PLAYERCONTROLS_PROMPT" "$VALUE"
+ ;;
+ "volume")
+ VALUE=$(set 0 5 100 |barmenu -p '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" | barmenu -p "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