dwm-bar for archlinux
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

65 lines
2.0 KiB

#!/bin/sh
# A dwm_bar function that shows the current artist, track, duration, and status from Spotify using playerctl
# Joe Standring <git@joestandring.com>
# GNU GPLv3
# Dependencies: spotify/spotifyd, playerctl
# NOTE: The official spotify client does not provide the track position or shuffle status through playerctl. This does work through spotifyd however.
dwm_spotify () {
if ps -C spotify > /dev/null; then
PLAYER="spotify"
elif ps -C spotifyd > /dev/null; then
PLAYER="spotifyd"
fi
if [ "$PLAYER" = "spotify" ] || [ "$PLAYER" = "spotifyd" ]; then
ARTIST=$(playerctl metadata artist)
TRACK=$(playerctl metadata title)
POSITION=$(playerctl position | sed 's/..\{6\}$//')
DURATION=$(playerctl metadata mpris:length | sed 's/.\{6\}$//')
STATUS=$(playerctl status)
SHUFFLE=$(playerctl shuffle)
if [ "$IDENTIFIER" = "unicode" ]; then
if [ "$STATUS" = "Playing" ]; then
STATUS="▶"
else
STATUS="⏸"
fi
if [ "$SHUFFLE" = "On" ]; then
SHUFFLE=" 🔀"
else
SHUFFLE=""
fi
else
if [ "$STATUS" = "Playing" ]; then
STATUS="PLA"
else
STATUS="PAU"
fi
if [ "$SHUFFLE" = "On" ]; then
SHUFFLE=" S"
else
SHUFFLE=""
fi
fi
if [ "$PLAYER" = "spotify" ]; then
printf "%s%s %s - %s " "$SEP1" "$STATUS" "$ARTIST" "$TRACK"
printf "%0d:%02d" $((DURATION%3600/60)) $((DURATION%60))
printf "%s\n" "$SEP2"
else
printf "%s%s %s - %s " "$SEP1" "$STATUS" "$ARTIST" "$TRACK"
printf "%0d:%02d/" $((POSITION%3600/60)) $((POSITION%60))
printf "%0d:%02d" $((DURATION%3600/60)) $((DURATION%60))
printf "%s%s\n" "$SHUFFLE" "$SEP2"
fi
fi
}
dwm_spotify