Archived
0
0
Fork 0
This repository has been archived on 2024-02-06. You can view files and clone it, but cannot push or open issues or pull requests.
dotfiles/.config/polybar/music.sh
2022-07-16 21:28:15 -07:00

62 lines
1.4 KiB
Bash
Executable file

#!/bin/bash
PARENT_BAR="bottom"
PARENT_BAR_PID=$(pgrep -a "polybar" | grep "$PARENT_BAR" | cut -d" " -f1)
PLAYERS=$(playerctl -l)
readarray -t PLAYERS_ARRAY <<< "$PLAYERS"
PLAYER=
for CHECK_PLAYER in "${PLAYERS_ARRAY[@]}"; do
PLAYERCTL_STATUS=$(playerctl status -p "$CHECK_PLAYER")
if [ "$PLAYERCTL_STATUS" = "Stopped" ]; then
continue
elif [ "$PLAYERCTL_STATUS" = "Playing" ]; then
PLAYER="$CHECK_PLAYER"
break
else
PLAYER="$CHECK_PLAYER"
fi
done
FORMAT="{{ title }} - {{ artist }}"
update_hooks() {
while IFS= read -r id
do
polybar-msg -p "$id" hook music-play-pause $2 1>/dev/null 2>&1
done < <(echo "$1")
}
PLAYERCTL_STATUS=$(playerctl --player=$PLAYER status 2>/dev/null)
EXIT_CODE=$?
if [ $EXIT_CODE -eq 0 ]; then
STATUS=$PLAYERCTL_STATUS
else
STATUS="No player is running"
exit
fi
if [ "$1" == "--status" ]; then
echo "$STATUS"
elif [ "$1" == "--toggle" ]; then
playerctl --player=$PLAYER play-pause
elif [ "$1" == "--next" ]; then
playerctl --player=$PLAYER next
elif [ "$1" == "--prev" ]; then
playerctl --player=$PLAYER previous
else
if [ "$STATUS" = "Stopped" ]; then
echo "No music is playing"
elif [ "$STATUS" = "Paused" ]; then
update_hooks "$PARENT_BAR_PID" 2
playerctl --player=$PLAYER metadata --format "$FORMAT"
elif [ "$STATUS" = "No player is running" ]; then
echo "$STATUS"
else
update_hooks "$PARENT_BAR_PID" 1
playerctl --player=$PLAYER metadata --format "$FORMAT"
fi
fi