add spotify status to polybar
This commit is contained in:
parent
564c7bdf37
commit
479de0597d
@ -28,8 +28,9 @@ padding-right = 2
|
|||||||
module-margin = 1
|
module-margin = 1
|
||||||
|
|
||||||
font-0 = CartographCF Nerd Font;2
|
font-0 = CartographCF Nerd Font;2
|
||||||
|
font-1 = SauceCodePro Nerd Font:size=16;3
|
||||||
|
|
||||||
modules-left = xworkspaces
|
modules-left = xworkspaces spotify-title spotify-prev spotify-playpause spotify-next
|
||||||
modules-right = tray xwindow pulseaudio
|
modules-right = tray xwindow pulseaudio
|
||||||
modules-center = date
|
modules-center = date
|
||||||
|
|
||||||
@ -98,4 +99,39 @@ label-foreground = ${colors.primary}
|
|||||||
screenchange-reload = true
|
screenchange-reload = true
|
||||||
pseudo-transparency = true
|
pseudo-transparency = true
|
||||||
|
|
||||||
|
[module/spotify-title]
|
||||||
|
type = custom/script
|
||||||
|
tail = true
|
||||||
|
format-prefix = " "
|
||||||
|
interval = 2
|
||||||
|
exec = ~/.config/polybar/spotify.sh --scroll
|
||||||
|
click-left = kitty spt
|
||||||
|
click-right = playerctl --player=spotifyd metadata --format "{{ xesam:url }}" | xclip -selection clipboard
|
||||||
|
|
||||||
|
[module/spotify-prev]
|
||||||
|
type = custom/text
|
||||||
|
content = " "
|
||||||
|
content-padding = 0
|
||||||
|
content-spacing = 0
|
||||||
|
content-margin = 0
|
||||||
|
click-left = ~/.config/polybar/spotify.sh --previous
|
||||||
|
|
||||||
|
|
||||||
|
[module/spotify-next]
|
||||||
|
type = custom/text
|
||||||
|
content = " "
|
||||||
|
content-padding = 0
|
||||||
|
content-spacing = 0
|
||||||
|
content-margin = 0
|
||||||
|
click-left = ~/.config/polybar/spotify.sh --next
|
||||||
|
|
||||||
|
|
||||||
|
[module/spotify-playpause]
|
||||||
|
type = custom/text
|
||||||
|
content = " "
|
||||||
|
content-padding = 0
|
||||||
|
content-spacing = 0
|
||||||
|
content-margin = 0
|
||||||
|
click-left = ~/.config/polybar/spotify.sh --play-pause
|
||||||
|
|
||||||
; vim:ft=dosini
|
; vim:ft=dosini
|
||||||
|
118
desktop/configs/polybar/.config/polybar/spotify.sh
Executable file
118
desktop/configs/polybar/.config/polybar/spotify.sh
Executable file
@ -0,0 +1,118 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Author : https://github.com/Crash-Zeus
|
||||||
|
|
||||||
|
readonly command=$1
|
||||||
|
|
||||||
|
# Set the source audio player here.
|
||||||
|
# Examples: spotify, vlc, chrome, mpv and others.
|
||||||
|
# See more here: https://github.com/altdesktop/playerctl/#selecting-players-to-control
|
||||||
|
readonly PLAYER="spotify"
|
||||||
|
|
||||||
|
# Delay (in seconds) for scrolling update; lower this for faster scrolling
|
||||||
|
readonly ZSCROLL_DELAY="0.3"
|
||||||
|
|
||||||
|
# Time in seconds to wait in between running update checking commands
|
||||||
|
# Make also a "pause" in scroll but its just due by playerctl hang time to get informations
|
||||||
|
readonly ZSCROLL_UPDATE_DELAY="2"
|
||||||
|
|
||||||
|
# if display text lenght > number the text is going to scroll
|
||||||
|
readonly ZSCROLL_LENGTH="20"
|
||||||
|
|
||||||
|
function get_status() {
|
||||||
|
PLAYERCTL_STATUS=$(playerctl --player=$PLAYER status)
|
||||||
|
EXIT_CODE=$?
|
||||||
|
|
||||||
|
if [ $EXIT_CODE -eq 0 ]; then
|
||||||
|
STATUS=$PLAYERCTL_STATUS
|
||||||
|
else
|
||||||
|
STATUS="No player is running"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function get_metadata() {
|
||||||
|
DATA=$(playerctl --player=$PLAYER metadata --format "$1")
|
||||||
|
echo $DATA
|
||||||
|
}
|
||||||
|
|
||||||
|
function display_data() {
|
||||||
|
if [ "$STATUS" = "Stopped" ]; then
|
||||||
|
echo "No music is playing"
|
||||||
|
elif [ "$STATUS" = "Paused" ]; then
|
||||||
|
get_metadata "Paused"
|
||||||
|
elif [ "$STATUS" = "No player is running" ]; then
|
||||||
|
echo "$STATUS"
|
||||||
|
else
|
||||||
|
get_metadata "{{ title }} by {{ artist }}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function display_status() {
|
||||||
|
if [ "$STATUS" = "Stopped" ]; then
|
||||||
|
echo ""
|
||||||
|
elif [ "$STATUS" = "Paused" ]; then
|
||||||
|
echo ""
|
||||||
|
elif [ "$STATUS" = "No player is running" ]; then
|
||||||
|
echo ""
|
||||||
|
else
|
||||||
|
echo ""
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
function exec_player_command() {
|
||||||
|
readonly CMD=$1
|
||||||
|
playerctl --player=$PLAYER $CMD
|
||||||
|
}
|
||||||
|
|
||||||
|
case $command in
|
||||||
|
|
||||||
|
"--get-infos")
|
||||||
|
get_status
|
||||||
|
display_data
|
||||||
|
;;
|
||||||
|
|
||||||
|
"--get-status")
|
||||||
|
get_status
|
||||||
|
display_status
|
||||||
|
;;
|
||||||
|
|
||||||
|
"--scroll")
|
||||||
|
$0 --get-infos | zscroll -d $ZSCROLL_DELAY -U $ZSCROLL_UPDATE_DELAY -l $ZSCROLL_LENGTH -u true "`dirname $0`/spotify.sh --get-infos"
|
||||||
|
# -d update scroll delay
|
||||||
|
# -U launch update command delay
|
||||||
|
# -l length of scrolling text
|
||||||
|
# -u Update command
|
||||||
|
;;
|
||||||
|
|
||||||
|
"--play-pause")
|
||||||
|
get_status
|
||||||
|
if [ "$STATUS" = "Playing" ] ; then
|
||||||
|
exec_player_command pause
|
||||||
|
elif [ "$STATUS" = "Paused" ] ; then
|
||||||
|
exec_player_command play
|
||||||
|
elif [ "$STATUS" = "Stopped" ] ; then
|
||||||
|
exec_player_command play
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
|
||||||
|
"--next")
|
||||||
|
exec_player_command next
|
||||||
|
;;
|
||||||
|
|
||||||
|
"--previous")
|
||||||
|
exec_player_command previous
|
||||||
|
;;
|
||||||
|
|
||||||
|
*)
|
||||||
|
echo "No command specified."
|
||||||
|
echo ""
|
||||||
|
echo "Available commands :"
|
||||||
|
echo "--get-infos Get the song name if playing or return No playing song / Paused"
|
||||||
|
echo "--get-status Get the current status of player like Playing | Stopped | Paused but return icon"
|
||||||
|
echo "--scroll Display the song metadata with zscroll to scroll text"
|
||||||
|
echo "--play-pause Execute play or pause command (depend on playerctl status)"
|
||||||
|
echo "--next Execute next command"
|
||||||
|
echo "--previous Execute previous command"
|
||||||
|
exit 0
|
||||||
|
;;
|
||||||
|
esac
|
Loading…
Reference in New Issue
Block a user