From 15cc931155f67158b0306d89c4515a5fc0d60e0a Mon Sep 17 00:00:00 2001 From: Daniel Napora Date: Fri, 20 Sep 2024 20:07:14 +0200 Subject: [PATCH] mb-music --- usr/bin/mb-music | 171 +++++++++++++++++++++++++++-------------------- 1 file changed, 100 insertions(+), 71 deletions(-) diff --git a/usr/bin/mb-music b/usr/bin/mb-music index 68c6650..046fab5 100755 --- a/usr/bin/mb-music +++ b/usr/bin/mb-music @@ -1,5 +1,7 @@ #!/bin/bash # mb-music - play Internet streams with mpv or PyRadio +me="${0##*/} ipc" + wmctrl -R cavatransparent mkdir -p "$HOME/.config/mabox/mb-music/" @@ -43,59 +45,73 @@ NOWPLAYYT="$HOME/.config/mabox/mb-music/.yt-mpv" menu() { case $LANG in pl*) - SNM="Dźwięk i Muzyka" - VOL="Sterowanie głośnością" - RADIO="Radio Internetowe" - PYRADIO="Uruchom PyRadio" - LISTEN="Słuchaj radia..." - EDITSTATIONS="Edytuj listę stacji radiowych" - RADIOBROWSER="Szukaj stacji online" - MPV="Odtwarzaj (za pomocą mpv - bez gui)" - CAVA="Wizualizacja (cava)" - STOP="Wyłącz" - YTMUSIC="Odtwarzacz MPV" - PLAYYT="Odtwarzaj..." - EDITPLAYLIST="Edytuj listę" - SETTINGS="Ustawienia" + _SNM="Dźwięk i Muzyka" + _VOL="Sterowanie głośnością" + _RADIO="Radio Internetowe" + _PYRADIO="Uruchom PyRadio" + _LISTEN="Słuchaj radia..." + _EDITSTATIONS="Edytuj listę stacji radiowych" + _RADIOBROWSER="Szukaj stacji online" + _MPV="Odtwarzaj (za pomocą mpv - bez gui)" + _CAVA="Wizualizacja (cava)" + _STOP="Wyłącz" + _PAUSE="Pauza" + _PLAY="Graj" + _YTMUSIC="Odtwarzacz MPV" + _PLAYYT="Odtwarzaj..." + _EDITPLAYLIST="Edytuj listę" + _SETTINGS="Ustawienia" ;; *) - SNM="Sound and Music" - VOL="Volume Control" - RADIO="Internet Radio" - PYRADIO="Launch PyRadio" - LISTEN="Listen to the radio..." - EDITSTATIONS="Edit radio stations list" - RADIOBROWSER="Search Radio Stations online" - MPV="Play (with mpv - no gui)" - CAVA="Visualiser (cava)" - STOP="Stop" - YTMUSIC="MPV Player" - PLAYYT="Play..." - EDITPLAYLIST="Edit MPV playlist" - SETTINGS="Settings" + _SNM="Music & Sound Menu" + _VOL="Volume Control" + _RADIO="Internet Radio" + _PYRADIO="Launch PyRadio" + _LISTEN="Listen to the radio..." + _EDITSTATIONS="Edit radio stations list" + _RADIOBROWSER="Search Radio Stations online" + _MPV="Play (with mpv - no gui)" + _CAVA="Visualiser (cava)" + _STOP="Quit" + _PAUSE="Pause" + _PLAY="Play" + _YTMUSIC="MPV Player" + _PLAYYT="Play..." + _EDITPLAYLIST="Edit MPV playlist" + _SETTINGS="Settings" ;; esac -out+=("^sep($SNM)") -out+=("󰕾 $VOL W + v ,pavucontrol") -out+=("^sep($RADIO)") -out+=("$PYRADIO W + r ,terminator --icon=/usr/share/icons/pyradio.png --geometry=564x440-20-20 -x pyradio -lt") +#out+=("^sep($_SNM)") +out+=("󰕾 $_VOL  + v ,pavucontrol") +out+=("^sep($_RADIO)") +out+=("$_PYRADIO  + r ,terminator --icon=/usr/share/icons/pyradio.png --geometry=564x440-20-20 -x pyradio -lt") out+=("^sep()") NOWPL="0" -pgrep -f radio-mpv > /dev/null && NOW="$(<"$NOWPLAY")" NOWPL="1" out0+=(" $STOP $NOW,pkill -f radio-mpv;pkill -f yt-mpv") -out+=("$LISTEN,^checkout(mpvradio)") +#pgrep -f radio-mpv > /dev/null && NOW="$(<"$NOWPLAY")" NOWPL="1" out0+=(" $STOP $NOW,pkill -f radio-mpv;pkill -f yt-mpv") + +if pgrep -f radio-mpv > /dev/null +then +status="$(playerctl -p mpv status)" +NOW="$(<"$NOWPLAY")" NOWPL="1" +[[ "$status" == "Playing" ]] && out0+=("󰏤 $_PAUSE,playerctl -p mpv pause;${me}") || out0+=("󰐊 $_PLAY,playerctl -p mpv play;${me}") +out0+=("󰓛 $_STOP,pkill -f yt-mpv;pkill -f radio-mpv") +out0+=("^sep()") +fi + +out+=("$_LISTEN,^checkout(mpvradio)") out2+=("^tag(mpvradio)") -out2+=("^sep($LISTEN)") +out2+=("^sep($_LISTEN)") #mapfile -t stations < "$PLAYLIST" grp=0 while IFS=$'\r\n' read -r line do url=${line#*,} name=${line%,*} - if [ ${url} == "-" ];then + if [[ "${url}" == "-" ]];then ((grp++)) out2+=("${name},^checkout(${grp})") out3+=("^tag($grp)") @@ -112,8 +128,16 @@ done <<< $(grep -v '^\s*$\|^#\|^\s*#' $PLAYLIST) -out+=("^sep($YTMUSIC)") -pgrep -f yt-mpv > /dev/null && NOW="$(<"$NOWPLAYYT")" NOWPL="1" out0+=(" $STOP $NOW,pkill -f yt-mpv;pkill -f radio-mpv") +out+=("^sep($_YTMUSIC)") +#pgrep -f yt-mpv > /dev/null && NOW="$(<"$NOWPLAYYT")" NOWPL="1" out0+=(" $STOP $NOW,pkill -f yt-mpv;pkill -f radio-mpv") +if pgrep -f yt-mpv > /dev/null +then +status="$(playerctl -p mpv status)" +NOW="$(<"$NOWPLAYYT")" NOWPL="1" +[[ "$status" == "Playing" ]] && out0+=("󰏤 $_PAUSE,playerctl -p mpv pause;${me}") || out0+=("󰐊 $_PLAY,playerctl -p mpv play;${me}") +out0+=("󰓛 $_STOP,pkill -f yt-mpv;pkill -f radio-mpv") +out0+=("^sep()") +fi n=$(grep -v '^\s*$\|^#\|^\s*#' ${PLAYLISTYT} |wc -l) @@ -130,9 +154,9 @@ if (( $n <= 24 ));then #flat view in rootmenu fi done <<< $(grep -v '^\s*$\|^#\|^\s*#' $PLAYLISTYT) elif (( $n <= 30 ));then # flat view in submenu - out+=("$PLAYYT ,^checkout(ytmusic)") + out+=("$_PLAYYT ,^checkout(ytmusic)") out2+=("^tag(ytmusic)") - out2+=("^sep($YTMUSIC)") + out2+=("^sep($_YTMUSIC)") grp=0 while IFS=$'\r\n' read -r line do @@ -145,11 +169,11 @@ elif (( $n <= 30 ));then # flat view in submenu fi done <<< $(grep -v '^\s*$\|^#\|^\s*#' $PLAYLISTYT) out2+=("^sep()") - out2+=("$EDITPLAYLIST,xdg-open $PLAYLISTYT") + out2+=("$_EDITPLAYLIST,xdg-open $PLAYLISTYT") else # n > 30 - out+=("$PLAYYT ,^checkout(ytmusic)") + out+=("$_PLAYYT ,^checkout(ytmusic)") out2+=("^tag(ytmusic)") - out2+=("^sep($YTMUSIC)") + out2+=("^sep($_YTMUSIC)") grp=0 while IFS=$'\r\n' read -r line do @@ -172,16 +196,16 @@ else # n > 30 fi out+=("^sep(VISUALIZER)") -pgrep -f cavatransparent > /dev/null && out+=("$STOP 󰺢 $CAVA,mb-music cavakill;mb-music ipc" "Colorize Cava,colorizer-cava -s") || out+=("󰺢 $CAVA,mb-music cavastart;mb-music ipc") +pgrep -f cavatransparent > /dev/null && out+=("$_STOP 󰺢 $_CAVA,mb-music cavakill;mb-music ipc" "Colorize Cava,colorizer-cava -s") || out+=("󰺢 $_CAVA,mb-music cavastart;mb-music ipc") out+=("^sep()") -out+=(" $SETTINGS,^checkout(settings)") +out+=(" $_SETTINGS,^checkout(settings)") out2+=("^tag(settings)") -out2+=("^sep($RADIO)") -out2+=(" $EDITSTATIONS,xdg-open $PLAYLIST") -out2+=(" $RADIOBROWSER,xdg-open https://www.radio-browser.info") -out2+=("^sep($YTMUSIC)") -out2+=(" $EDITPLAYLIST,xdg-open $PLAYLISTYT") +out2+=("^sep($_RADIO)") +out2+=(" $_EDITSTATIONS,xdg-open $PLAYLIST") +out2+=(" $_RADIOBROWSER,xdg-open https://www.radio-browser.info") +out2+=("^sep($_YTMUSIC)") +out2+=(" $_EDITPLAYLIST,xdg-open $PLAYLISTYT") ### RUN if [[ "$1" == "-s" || "$1" == "ipc" ]]; then @@ -194,7 +218,8 @@ elif [[ $panels_heightpos == "bottom" ]]; then MENU_VALIGN="bottom" MENU_MARGIN_Y=${panels_topmargin:-0} else - MENU_VALIGN="top" + MENU_VALIGN="center" + menu_margin_x=4 fi MENU_PADDING_TOP=$((jgtools_padding+102)) @@ -217,32 +242,36 @@ mkconfigfile if [[ "$NOWPL" == "1" ]];then clr="#22FF22" read -r -d '' NOWPLAYLINES <${NOW}""" +#@rect,,${jgtools_padding},$((jgtools_padding+74)),298,24,0,left,top,,#222222 60, +@rect,,$((jgtools_padding+16)),$((jgtools_padding+70)),$((JGWIDTH-2*jgtools_padding-32)),20,4,left,top,,#222222 75, +@text,,$((jgtools_padding+20)),$((jgtools_padding+70)),$((JGWIDTH-2*jgtools_padding)),20,0,left,top,#FFFFFF 90,,""" 󰐊 󰐊 󰐊 ${NOW}""" EOF else -clr="#444444" +clr="#666666" +read -r -d '' NOWPLAYLINES <  + m """ +EOF fi cat < ${MENU_ITEMS} -@rect,,${jgtools_padding},${jgtools_padding},300,100,0,left,top,,#ffffff 15, +@rect,,${jgtools_padding},${jgtools_padding},300,100,4,left,top,,#111111 25, -@rect,,${jgtools_padding},$((jgtools_padding+64)),18,36,0,left,top,,${clr} 100, -@rect,,$((jgtools_padding+20)),$((jgtools_padding+44)),18,56,0,left,top,,${clr} 100, -@rect,,$((jgtools_padding+40)),$((jgtools_padding+64)),18,36,0,left,top,,${clr} 100, -@rect,,$((jgtools_padding+60)),$((jgtools_padding+14)),18,86,0,left,top,,${clr} 100, -@rect,,$((jgtools_padding+80)),$((jgtools_padding+64)),18,36,0,left,top,,${clr} 100, -@rect,,$((jgtools_padding+100)),$((jgtools_padding+54)),18,46,0,left,top,,${clr} 100, -@rect,,$((jgtools_padding+120)),$((jgtools_padding+34)),18,66,0,left,top,,${clr} 100, -@rect,,$((jgtools_padding+140)),$((jgtools_padding+54)),18,46,0,left,top,,${clr} 100, -@rect,,$((jgtools_padding+160)),$((jgtools_padding+84)),18,16,0,left,top,,${clr} 100, -@rect,,$((jgtools_padding+180)),$((jgtools_padding+94)),18,6,0,left,top,,${clr} 100, -@rect,,$((jgtools_padding+200)),$((jgtools_padding+95)),18,5,0,left,top,,${clr} 100, -@rect,,$((jgtools_padding+220)),$((jgtools_padding+96)),18,4,0,left,top,,${clr} 100, -@rect,,$((jgtools_padding+240)),$((jgtools_padding+81)),18,19,0,left,top,,${clr} 100, -@rect,,$((jgtools_padding+260)),$((jgtools_padding+90)),18,10,0,left,top,,${clr} 100, -@rect,,$((jgtools_padding+280)),$((jgtools_padding+64)),18,36,0,left,top,,${clr} 100, +@rect,,$((jgtools_padding+1)),$((jgtools_padding+63)),18,36,2,left,top,,${clr} 100, +@rect,,$((jgtools_padding+21)),$((jgtools_padding+43)),18,56,2,left,top,,${clr} 100, +@rect,,$((jgtools_padding+41)),$((jgtools_padding+38)),18,61,2,left,top,,${clr} 100, +@rect,,$((jgtools_padding+61)),$((jgtools_padding+13)),18,86,2,left,top,,${clr} 100, +@rect,,$((jgtools_padding+81)),$((jgtools_padding+43)),18,56,2,left,top,,${clr} 100, +@rect,,$((jgtools_padding+101)),$((jgtools_padding+53)),18,46,2,left,top,,${clr} 100, +@rect,,$((jgtools_padding+121)),$((jgtools_padding+33)),18,66,2,left,top,,${clr} 100, +@rect,,$((jgtools_padding+141)),$((jgtools_padding+53)),18,46,2,left,top,,${clr} 100, +@rect,,$((jgtools_padding+161)),$((jgtools_padding+83)),18,16,2,left,top,,${clr} 100, +@rect,,$((jgtools_padding+181)),$((jgtools_padding+93)),18,6,2,left,top,,${clr} 100, +@rect,,$((jgtools_padding+201)),$((jgtools_padding+97)),18,2,2,left,top,,${clr} 100, +@rect,,$((jgtools_padding+221)),$((jgtools_padding+86)),18,13,2,left,top,,${clr} 100, +@rect,,$((jgtools_padding+241)),$((jgtools_padding+80)),18,19,2,left,top,,${clr} 100, +@rect,,$((jgtools_padding+261)),$((jgtools_padding+58)),18,41,2,left,top,,${clr} 100, +@rect,,$((jgtools_padding+281)),$((jgtools_padding+43)),18,56,2,left,top,,${clr} 100, ${NOWPLAYLINES}