mirror of
http://github.com/JaeUs3792/dotfiles
synced 2025-12-15 00:21:35 +09:00
77 lines
1.9 KiB
Bash
77 lines
1.9 KiB
Bash
#!/usr/bin/env bash
|
|
|
|
# Selects player based on if they're playing or if they have a cover
|
|
# Note: Being played takes priority
|
|
select_player () {
|
|
playingplayer=""
|
|
coverplayer=""
|
|
totalplayer=""
|
|
for player in "$player"s
|
|
do
|
|
art=`playerctl --player="$player" metadata mpris:artUrl 2> /dev/null`
|
|
status=`playerctl --player="$player" status 2> /dev/null`
|
|
[[ $status == "Playing" ]] && playingplayer="$player"
|
|
[[ $art != "" ]] && coverplayer="$player"
|
|
[[ $status == "Playing" && $art != "" ]] && totalplayer="$player"
|
|
done;
|
|
player=""
|
|
[[ ! -z $coverplayer ]] && player=$coverplayer
|
|
[[ ! -z $playingplayer ]] && player=$playingplayer
|
|
[[ ! -z $totalplayer ]] && player=$totalplayer
|
|
}
|
|
|
|
# Get general info
|
|
eww="eww -c $HOME/.config/eww/mybar"
|
|
players=`playerctl -l`
|
|
select_player
|
|
status=`playerctl --player="$player" status`
|
|
[[ $status == "" ]] && exit
|
|
|
|
# Toggle play pause and update status accordingly
|
|
toggle () {
|
|
[[ $status == "Playing" ]] && $eww update media_status=""|| $eww update media_status=""
|
|
playerctl --player="$player" play-pause
|
|
}
|
|
|
|
# Seek to an specific time
|
|
seek () {
|
|
seekt="$1"
|
|
position=`playerctl --player=$player position`
|
|
if [[ $? -eq 0 ]] && [[ `python -c "print(round(abs($seekt-$position)))"` -gt 3 ]]
|
|
then
|
|
playerctl --player=$player position $seekt
|
|
fi;
|
|
}
|
|
|
|
# Rewind or fast forward 5 seconds
|
|
move () {
|
|
move="$1"
|
|
startpos=`playerctl --player=$player position`
|
|
length=`playerctl --player="$player" metadata mpris:length`
|
|
length=`python -c "print($length/1000000)"`
|
|
if [[ $? -eq 0 ]]
|
|
then
|
|
endpos=`python -c "print(min($length, max(0, $startpos $move)))"`
|
|
playerctl --player=$player position $endpos
|
|
fi;
|
|
}
|
|
|
|
|
|
case $1 in
|
|
--toggle )
|
|
toggle
|
|
;;
|
|
--seek )
|
|
seek $2
|
|
;;
|
|
--move )
|
|
move $2
|
|
;;
|
|
--next )
|
|
playerctl --player=$player next
|
|
;;
|
|
--prev )
|
|
playerctl --player=$player previous
|
|
;;
|
|
esac
|