Media Playing Module with Buttons

- Replace clicks and scroll actions with dedicated buttons
  for media playing module
- Add media-playing-change module to display current media
  source and left-click to change
- Add media-playing-prev/next to play previous or next
  track
- Add media-playing-play-pause to display pause button
  when media is playing and play button when media is
  paused
- Update media-playing to use Zscroll to scroll through
  artist and title text when over limit
- Add some extra helper scripts
This commit is contained in:
Sravan Balaji
2022-07-31 17:30:50 -04:00
parent 6e15a7f4ea
commit 60a43475a9
8 changed files with 253 additions and 112 deletions

View File

@ -5782,7 +5782,7 @@ font-5 = "IPAPGothic:size=11;3"
; modules-left = cpu ram
; modules-center = xwindow xbacklight
; modules-right = ipc clock
modules-left = powermenu-left powermenu powermenu-right dwm media-playing-left media-playing media-playing-right
modules-left = powermenu-left powermenu powermenu-right dwm media-playing-left media-playing-change media-playing-prev media-playing-play-pause media-playing-next media-playing media-playing-right
; modules-center =
modules-right = kernel-left kernel kernel-right cpu-left cpu cpu-right memory-left memory memory-right filesystem-left filesystem filesystem-right date-left date date-right time-left time time-right deadd-notification-center-left deadd-notification-center deadd-notification-center-right
@ -6073,82 +6073,138 @@ content-padding = ${sizes.module-padding}
#+BEGIN_SRC conf :tangle polybar/config.ini
[module/media-playing]
type = custom/script
; Available tokens:
; %counter%
; Command to be executed (using "/bin/sh -c [command]")
exec = ~/.config/dwm-flexipatch/polybar/scripts/get-media-playing.sh
; Conditional command that, if defined, needs to exit successfully
; before the main exec command is invoked.
; Default: ""
; exec-if = pgrep -x myservice
; Will the script output continous content?
; Default: false
tail = false
; Seconds to sleep between updates
; Default: 5 (0 if `tail = true`)
exec = ~/.config/dwm-flexipatch/polybar/scripts/scroll-media-playing.sh
tail = true
interval = ${intervals.media-playing}
; Available tags:
; <output> - deprecated
; <label> (default)
format = <label>
; format-padding = ${sizes.module-padding}
; format-background = ${colors.background}
; format-foreground =
; Available tokens:
; %output%
; Default: %output%
label = %output%
label-foreground = ${colors.media-playing-foreground}
label-background = ${colors.media-playing-background}
label-underline = ${colors.media-playing-underline}
label-overline = ${colors.media-playing-overline}
label-maxlen = ${sizes.maxlen}
label-padding = ${sizes.module-padding}
label-padding = 1
#+END_SRC
; Available tokens:
; %counter%
; %pid%
;
; "click-(left|middle|right)" will be executed using "/bin/sh -c [command]"
#+BEGIN_SRC conf :tangle polybar/config.ini
[module/media-playing-change]
type = custom/script
exec = /home/sravan/.config/dwm-flexipatch/polybar/scripts/get-media-source-icon.sh
interval = ${intervals.media-playing}
format = <label>
label = %output%
label-foreground = ${colors.media-playing-foreground}
label-background = ${colors.media-playing-background}
label-underline = ${colors.media-playing-underline}
label-overline = ${colors.media-playing-overline}
label-maxlen = ${sizes.maxlen}
label-padding = 1
click-left = "/home/sravan/.scripts/playerctl.sh --change"
#+END_SRC
#+BEGIN_SRC conf :tangle polybar/config.ini
[module/media-playing-prev]
type = custom/script
exec = echo "玲"
format = <label>
label = %output%
label-foreground = ${colors.media-playing-foreground}
label-background = ${colors.media-playing-background}
label-underline = ${colors.media-playing-underline}
label-overline = ${colors.media-playing-overline}
label-maxlen = ${sizes.maxlen}
label-padding = 1
click-left = "/home/sravan/.scripts/playerctl.sh --prev"
#+END_SRC
#+BEGIN_SRC conf :tangle polybar/config.ini
[module/media-playing-play-pause]
type = custom/script
exec = /home/sravan/.config/dwm-flexipatch/polybar/scripts/get-media-status-icon.sh
format = <label>
label = %output%
label-foreground = ${colors.media-playing-foreground}
label-background = ${colors.media-playing-background}
label-underline = ${colors.media-playing-underline}
label-overline = ${colors.media-playing-overline}
label-maxlen = ${sizes.maxlen}
label-padding = 1
click-left = "/home/sravan/.scripts/playerctl.sh --play-pause"
; click-middle = echo middle %counter%
click-right = "/home/sravan/.scripts/playerctl.sh --rofi"
double-click-left = "/home/sravan/.scripts/playerctl.sh --change"
; double-click-middle = echo double middle %counter%
; double-click-right = echo double right %counter%
#+END_SRC
; Available tokens:
; %counter%
; %pid%
;
; "scroll-(up|down)" will be executed using "/bin/sh -c [command]"
scroll-up = "/home/sravan/.scripts/playerctl.sh --next"
scroll-down = "/home/sravan/.scripts/playerctl.sh --prev"
#+BEGIN_SRC conf :tangle polybar/config.ini
[module/media-playing-next]
type = custom/script
exec = echo "怜"
format = <label>
label = %output%
label-foreground = ${colors.media-playing-foreground}
label-background = ${colors.media-playing-background}
label-underline = ${colors.media-playing-underline}
label-overline = ${colors.media-playing-overline}
label-maxlen = ${sizes.maxlen}
label-padding = 1
click-left = "/home/sravan/.scripts/playerctl.sh --next"
#+END_SRC
***** Script
#+BEGIN_SRC shell :shebang #!/bin/bash :tangle polybar/scripts/get-media-source-icon.sh
mediaStatus=$(playerctl --player=playerctld metadata 2>&1)
if [[ "$mediaStatus" == "No player could handle this command" ]]; then
echo "ﱙ"
else
trackid=$(playerctl --player=playerctld metadata --format '{{ mpris:trackid }}')
if grep -q -i "chromium" <<< "$trackid"; then
echo ""
elif grep -q -i "vlc" <<< "$trackid"; then
echo "嗢"
elif grep -q -i "spotify" <<< "$trackid"; then
echo ""
else
echo ""
fi
fi
#+END_SRC
#+BEGIN_SRC shell :shebang #!/bin/bash :tangle polybar/scripts/get-media-status-icon.sh
mediaStatus=$(/home/sravan/.config/dwm-flexipatch/polybar/scripts/get-media-status.sh)
if [[ "$mediaStatus" == "N/A" ]]; then
echo "懶"
else
if [[ "$mediaStatus" == "Playing" ]]; then
echo ""
elif [[ "$mediaStatus" == "Paused" ]]; then
echo "契"
fi
echo $status
fi
#+END_SRC
#+BEGIN_SRC shell :shebang #!/bin/bash :tangle polybar/scripts/get-media-status.sh
mediaStatus=$(playerctl --player=playerctld metadata 2>&1)
if [[ "$mediaStatus" == "No player could handle this command" ]]; then
echo "N/A"
else
status=$(playerctl --player=playerctld metadata --format '{{ status }}')
echo $status
fi
#+END_SRC
#+BEGIN_SRC shell :shebang #!/bin/bash :tangle polybar/scripts/get-media-playing.sh
mediaStatus=$(playerctl --player=playerctld metadata 2>&1)
if [[ "$mediaStatus" == "No player could handle this command" ]]; then
echo "N/A"
echo "N/A"
else
artist=$(playerctl --player=playerctld metadata --format '{{ artist }}')
title=$(playerctl --player=playerctld metadata --format '{{ title }}')
status=$(playerctl --player=playerctld metadata --format '{{ status }}')
if [[ $status == "Paused" ]]; then
status_icon=" "
elif [[ $status == "Playing" ]]; then
status_icon=" "
fi
if [[ $artist == "" ]]; then
artist="N/A"
@ -6158,10 +6214,23 @@ else
title="N/A"
fi
echo "$status_icon $title - $artist"
echo " $title | ﴁ $artist"
fi
#+END_SRC
#+BEGIN_SRC shell :shebang #!/bin/bash :tangle polybar/scripts/scroll-media-playing.sh
zscroll \
--length $(xrdb -get polybar.maxlen) \
--delay 0.2 \
--scroll-padding " | " \
--match-command "`dirname $0`/get-media-status.sh" \
--match-text "Playing" "--scroll 1" \
--match-text "Paused" "--scroll 0" \
--update-check true "`dirname $0`/get-media-playing.sh" &
wait
#+END_SRC
**** Date
#+BEGIN_SRC conf :tangle polybar/config.ini

View File

@ -255,7 +255,7 @@ font-5 = "IPAPGothic:size=11;3"
; modules-left = cpu ram
; modules-center = xwindow xbacklight
; modules-right = ipc clock
modules-left = powermenu-left powermenu powermenu-right dwm media-playing-left media-playing media-playing-right
modules-left = powermenu-left powermenu powermenu-right dwm media-playing-left media-playing-change media-playing-prev media-playing-play-pause media-playing-next media-playing media-playing-right
; modules-center =
modules-right = kernel-left kernel kernel-right cpu-left cpu cpu-right memory-left memory memory-right filesystem-left filesystem filesystem-right date-left date date-right time-left time time-right deadd-notification-center-left deadd-notification-center deadd-notification-center-right
@ -522,63 +522,70 @@ content-padding = ${sizes.module-padding}
[module/media-playing]
type = custom/script
; Available tokens:
; %counter%
; Command to be executed (using "/bin/sh -c [command]")
exec = ~/.config/dwm-flexipatch/polybar/scripts/get-media-playing.sh
; Conditional command that, if defined, needs to exit successfully
; before the main exec command is invoked.
; Default: ""
; exec-if = pgrep -x myservice
; Will the script output continous content?
; Default: false
tail = false
; Seconds to sleep between updates
; Default: 5 (0 if `tail = true`)
exec = ~/.config/dwm-flexipatch/polybar/scripts/scroll-media-playing.sh
tail = true
interval = ${intervals.media-playing}
; Available tags:
; <output> - deprecated
; <label> (default)
format = <label>
; format-padding = ${sizes.module-padding}
; format-background = ${colors.background}
; format-foreground =
; Available tokens:
; %output%
; Default: %output%
label = %output%
label-foreground = ${colors.media-playing-foreground}
label-background = ${colors.media-playing-background}
label-underline = ${colors.media-playing-underline}
label-overline = ${colors.media-playing-overline}
label-maxlen = ${sizes.maxlen}
label-padding = ${sizes.module-padding}
label-padding = 1
; Available tokens:
; %counter%
; %pid%
;
; "click-(left|middle|right)" will be executed using "/bin/sh -c [command]"
[module/media-playing-change]
type = custom/script
exec = /home/sravan/.config/dwm-flexipatch/polybar/scripts/get-media-source-icon.sh
interval = ${intervals.media-playing}
format = <label>
label = %output%
label-foreground = ${colors.media-playing-foreground}
label-background = ${colors.media-playing-background}
label-underline = ${colors.media-playing-underline}
label-overline = ${colors.media-playing-overline}
label-maxlen = ${sizes.maxlen}
label-padding = 1
click-left = "/home/sravan/.scripts/playerctl.sh --change"
[module/media-playing-prev]
type = custom/script
exec = echo "玲"
format = <label>
label = %output%
label-foreground = ${colors.media-playing-foreground}
label-background = ${colors.media-playing-background}
label-underline = ${colors.media-playing-underline}
label-overline = ${colors.media-playing-overline}
label-maxlen = ${sizes.maxlen}
label-padding = 1
click-left = "/home/sravan/.scripts/playerctl.sh --prev"
[module/media-playing-play-pause]
type = custom/script
exec = /home/sravan/.config/dwm-flexipatch/polybar/scripts/get-media-status-icon.sh
format = <label>
label = %output%
label-foreground = ${colors.media-playing-foreground}
label-background = ${colors.media-playing-background}
label-underline = ${colors.media-playing-underline}
label-overline = ${colors.media-playing-overline}
label-maxlen = ${sizes.maxlen}
label-padding = 1
click-left = "/home/sravan/.scripts/playerctl.sh --play-pause"
; click-middle = echo middle %counter%
click-right = "/home/sravan/.scripts/playerctl.sh --rofi"
double-click-left = "/home/sravan/.scripts/playerctl.sh --change"
; double-click-middle = echo double middle %counter%
; double-click-right = echo double right %counter%
; Available tokens:
; %counter%
; %pid%
;
; "scroll-(up|down)" will be executed using "/bin/sh -c [command]"
scroll-up = "/home/sravan/.scripts/playerctl.sh --next"
scroll-down = "/home/sravan/.scripts/playerctl.sh --prev"
[module/media-playing-next]
type = custom/script
exec = echo "怜"
format = <label>
label = %output%
label-foreground = ${colors.media-playing-foreground}
label-background = ${colors.media-playing-background}
label-underline = ${colors.media-playing-underline}
label-overline = ${colors.media-playing-overline}
label-maxlen = ${sizes.maxlen}
label-padding = 1
click-left = "/home/sravan/.scripts/playerctl.sh --next"
[module/date-left]
type = custom/text

View File

@ -0,0 +1,19 @@
#!/bin/bash
mediaStatus=$(playerctl --player=playerctld metadata 2>&1)
if [[ "$mediaStatus" == "No player could handle this command" ]]; then
echo " N/A"
else
artist=$(playerctl --player=playerctld metadata --format '{{ artist }}')
title=$(playerctl --player=playerctld metadata --format '{{ title }}')
if [[ $artist == "" ]]; then
artist="N/A"
fi
if [[ $title == "" ]]; then
title="N/A"
fi
echo "$title - $artist"
fi

View File

@ -2,17 +2,10 @@
mediaStatus=$(playerctl --player=playerctld metadata 2>&1)
if [[ "$mediaStatus" == "No player could handle this command" ]]; then
echo "N/A"
echo "N/A"
else
artist=$(playerctl --player=playerctld metadata --format '{{ artist }}')
title=$(playerctl --player=playerctld metadata --format '{{ title }}')
status=$(playerctl --player=playerctld metadata --format '{{ status }}')
if [[ $status == "Paused" ]]; then
status_icon=" "
elif [[ $status == "Playing" ]]; then
status_icon=" "
fi
if [[ $artist == "" ]]; then
artist="N/A"
@ -22,5 +15,5 @@ else
title="N/A"
fi
echo "$status_icon $title - $artist"
echo " $title | ﴁ $artist"
fi

View File

@ -0,0 +1,18 @@
#!/bin/bash
mediaStatus=$(playerctl --player=playerctld metadata 2>&1)
if [[ "$mediaStatus" == "No player could handle this command" ]]; then
echo "ﱙ"
else
trackid=$(playerctl --player=playerctld metadata --format '{{ mpris:trackid }}')
if grep -q -i "chromium" <<< "$trackid"; then
echo ""
elif grep -q -i "vlc" <<< "$trackid"; then
echo "嗢"
elif grep -q -i "spotify" <<< "$trackid"; then
echo ""
else
echo ""
fi
fi

View File

@ -0,0 +1,14 @@
#!/bin/bash
mediaStatus=$(/home/sravan/.config/dwm-flexipatch/polybar/scripts/get-media-status.sh)
if [[ "$mediaStatus" == "N/A" ]]; then
echo "懶"
else
if [[ "$mediaStatus" == "Playing" ]]; then
echo ""
elif [[ "$mediaStatus" == "Paused" ]]; then
echo "契"
fi
echo $status
fi

View File

@ -0,0 +1,10 @@
#!/bin/bash
mediaStatus=$(playerctl --player=playerctld metadata 2>&1)
if [[ "$mediaStatus" == "No player could handle this command" ]]; then
echo "N/A"
else
status=$(playerctl --player=playerctld metadata --format '{{ status }}')
echo $status
fi

View File

@ -0,0 +1,11 @@
#!/bin/bash
zscroll \
--length $(xrdb -get polybar.maxlen) \
--delay 0.2 \
--scroll-padding " | " \
--match-command "`dirname $0`/get-media-status.sh" \
--match-text "Playing" "--scroll 1" \
--match-text "Paused" "--scroll 0" \
--update-check true "`dirname $0`/get-media-playing.sh" &
wait