[polybar] Refactor music display module
Refactored music module to use a constant tail output of the underlying script, to enable mode-switching, and to allow playing or pausing the current song.
This commit is contained in:
parent
3872eca254
commit
f6517df5a2
2 changed files with 56 additions and 16 deletions
|
@ -54,7 +54,7 @@ padding-right = 0
|
||||||
module-margin-left = 2
|
module-margin-left = 2
|
||||||
|
|
||||||
modules-left = workspaces
|
modules-left = workspaces
|
||||||
modules-center = mprisdisplay date papersdue
|
modules-center = music date papersdue
|
||||||
modules-right = networkspeed archupdates cpu temp backlight volume battery
|
modules-right = networkspeed archupdates cpu temp backlight volume battery
|
||||||
; do not use offsets for the bar, would only work with override-redirect
|
; do not use offsets for the bar, would only work with override-redirect
|
||||||
; and will mess up tray https://github.com/polybar/polybar/issues/1355
|
; and will mess up tray https://github.com/polybar/polybar/issues/1355
|
||||||
|
@ -207,6 +207,17 @@ date-alt = %A, %d %B %Y (W %V)
|
||||||
time-alt = %H:%M
|
time-alt = %H:%M
|
||||||
label = %date% %{T2} %{T-}%time%
|
label = %date% %{T2} %{T-}%time%
|
||||||
|
|
||||||
|
; display information on currently playing track, allows simple track manipulation
|
||||||
|
[module/music]
|
||||||
|
type = custom/script
|
||||||
|
exec = $XDG_CONFIG_HOME/polybar/scripts/poly-mprisdisplay
|
||||||
|
exec-if = type $XDG_CONFIG_HOME/polybar/scripts/poly-mprisdisplay
|
||||||
|
tail = true
|
||||||
|
click-left = kill -USR1 %pid%
|
||||||
|
click-right = kill -USR2 %pid%
|
||||||
|
; TODO: add album art display (on click?) - retrieved by playerctl metadata mpris:artUrl
|
||||||
|
|
||||||
|
; display information on remaining papers to read for the upcoming week
|
||||||
[module/papersdue]
|
[module/papersdue]
|
||||||
type = custom/script
|
type = custom/script
|
||||||
exec = $XDG_BIN_HOME/bib_due $BIBFILE | wc -l
|
exec = $XDG_BIN_HOME/bib_due $BIBFILE | wc -l
|
||||||
|
@ -231,13 +242,6 @@ type = custom/script
|
||||||
exec = $XDG_CONFIG_HOME/polybar/scripts/poly-networkspeed
|
exec = $XDG_CONFIG_HOME/polybar/scripts/poly-networkspeed
|
||||||
tail = true
|
tail = true
|
||||||
|
|
||||||
[module/mprisdisplay]
|
|
||||||
type = custom/script
|
|
||||||
exec = $XDG_CONFIG_HOME/polybar/scripts/poly-mprisdisplay
|
|
||||||
interval = 3
|
|
||||||
click-left = playerctl play-pause &
|
|
||||||
; TODO: add album art display (on click?) - retrieved by playerctl metadata mpris:artUrl
|
|
||||||
|
|
||||||
[module/volume]
|
[module/volume]
|
||||||
type = internal/pulseaudio
|
type = internal/pulseaudio
|
||||||
; Available tags:
|
; Available tags:
|
||||||
|
|
|
@ -1,11 +1,47 @@
|
||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
# script to echo the current playback situation
|
||||||
|
#
|
||||||
|
# call without args to return playing symbol or empty, depending on current playback status
|
||||||
|
# call with 1 to return 'artist - title' metadata (verbose mode)
|
||||||
|
# send SIGUSR2 signal to toggle pause/playing state of song (e.g. kill -USR2 %PID)
|
||||||
|
#
|
||||||
|
# depends on playerctl being installed
|
||||||
|
|
||||||
player_status=$(playerctl status 2>/dev/null)
|
exist playerctl low "polybar music" || exit 1
|
||||||
|
|
||||||
if [ "$player_status" = "Playing" ]; then
|
mode=${1:-0}
|
||||||
echo "ﱘ $(playerctl metadata artist) - $(playerctl metadata title)"
|
update_time=1
|
||||||
elif [ "$player_status" = "Paused" ]; then
|
symbol_playing=""
|
||||||
echo " $(playerctl metadata artist) - $(playerctl metadata title)"
|
symbol_paused=""
|
||||||
else
|
|
||||||
|
modetoggle() {
|
||||||
|
mode=$(((mode + 1) % 2))
|
||||||
|
}
|
||||||
|
trap "modetoggle" USR1
|
||||||
|
|
||||||
|
playpause() {
|
||||||
|
playerctl play-pause
|
||||||
|
}
|
||||||
|
trap "playpause" USR2
|
||||||
|
|
||||||
|
decorate() {
|
||||||
|
if [ "$player_status" = "Playing" ]; then
|
||||||
|
echo "${symbol_playing}$1"
|
||||||
|
elif [ "$player_status" = "Paused" ]; then
|
||||||
|
echo "${symbol_paused}$1"
|
||||||
|
else
|
||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
player_status=$(playerctl status 2>/dev/null)
|
||||||
|
|
||||||
|
if [ $mode -eq 0 ]; then
|
||||||
|
decorate ""
|
||||||
|
elif [ $mode -eq 1 ]; then
|
||||||
|
decorate " $(playerctl metadata artist) - $(playerctl metadata title)"
|
||||||
|
fi
|
||||||
|
sleep $update_time &
|
||||||
|
wait
|
||||||
|
done
|
||||||
|
|
Loading…
Reference in a new issue