added polybar music module
This commit is contained in:
parent
83b4203efa
commit
5bdc4fef2d
2 changed files with 95 additions and 0 deletions
|
@ -41,12 +41,15 @@ font-0 = PowerlineSymbols:size=14;4
|
||||||
font-1 = Font Awesome 5 Free Solid:pixelsize=12;2
|
font-1 = Font Awesome 5 Free Solid:pixelsize=12;2
|
||||||
font-2 = FiraCode Nerd Font Mono:pixelsize=10;2
|
font-2 = FiraCode Nerd Font Mono:pixelsize=10;2
|
||||||
|
|
||||||
|
modules-left = music music-prev music-play-pause music-next
|
||||||
modules-center = windows
|
modules-center = windows
|
||||||
modules-right = tray
|
modules-right = tray
|
||||||
|
|
||||||
cursor-click = pointer
|
cursor-click = pointer
|
||||||
cursor-scroll = ns-resize
|
cursor-scroll = ns-resize
|
||||||
|
|
||||||
|
enable-ipc = true
|
||||||
|
|
||||||
|
|
||||||
[colors]
|
[colors]
|
||||||
background = ${xrdb:background}
|
background = ${xrdb:background}
|
||||||
|
@ -143,6 +146,37 @@ label = RAM: %percentage_used%%
|
||||||
label-foreground = ${colors.text}
|
label-foreground = ${colors.text}
|
||||||
|
|
||||||
|
|
||||||
|
[module/music]
|
||||||
|
type = custom/script
|
||||||
|
tail = true
|
||||||
|
interval = 1
|
||||||
|
format-prefix = " "
|
||||||
|
format = <label>
|
||||||
|
exec = $HOME/.config/polybar/music.sh
|
||||||
|
|
||||||
|
|
||||||
|
[module/music-prev]
|
||||||
|
type = custom/script
|
||||||
|
exec = echo " "
|
||||||
|
format = <label>
|
||||||
|
click-left = $HOME/.config/polybar/music.sh --prev
|
||||||
|
|
||||||
|
|
||||||
|
[module/music-play-pause]
|
||||||
|
type = custom/ipc
|
||||||
|
hook-0 = echo " "
|
||||||
|
hook-1 = echo " "
|
||||||
|
initial = 1
|
||||||
|
click-left = $HOME/.config/polybar/music.sh --toggle
|
||||||
|
|
||||||
|
|
||||||
|
[module/music-next]
|
||||||
|
type = custom/script
|
||||||
|
exec = echo " "
|
||||||
|
format = <label>
|
||||||
|
click-left = $HOME/.config/polybar/music.sh --next
|
||||||
|
|
||||||
|
|
||||||
[module/pulseaudio]
|
[module/pulseaudio]
|
||||||
type = internal/pulseaudio
|
type = internal/pulseaudio
|
||||||
|
|
||||||
|
|
61
.config/polybar/music.sh
Executable file
61
.config/polybar/music.sh
Executable file
|
@ -0,0 +1,61 @@
|
||||||
|
#!/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"
|
||||||
|
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
|
Reference in a new issue