1
0
Fork 0
chezmoi/bin/executable_mprisctl

49 lines
848 B
Bash

#!/bin/zsh
set -e
typeset -a playing
typeset -a paused
typeset -a all
process() {
local state=$1
shift
local pl
if (( ${#${(P)state}} > 1))
then
pl=$(rofi -dmenu<<<${(FP)state})
else
pl=${(FP)state}
fi
[[ -n $pl ]] && playerctl -p $pl $@
}
while read player ps
do
all+=$player
case $ps in
Playing) playing+=$player ;;
Paused) paused+=$player ;;
esac
done < <(playerctl -a status --format '{{playerName}} {{status}}')
case $1 in
toggle)
if (( ${#playing} ))
then
xargs -n1 playerctl pause -p <<<${playing}
else
process paused play
fi
;;
next)
process playing next
;;
prev)
process playing previous
;;
open)
shift
process all open "$@"
esac