upload
This commit is contained in:
235
bin/colorizer-cava
Executable file
235
bin/colorizer-cava
Executable file
@@ -0,0 +1,235 @@
|
||||
#!/bin/bash
|
||||
#
|
||||
# colorizer - set of tools for Mabox (auto)theming
|
||||
# Copyright (C) 2022-2023 Daniel Napora <napcok@gmail.com>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
wmctrl -R cavatransparent
|
||||
|
||||
me="colorizer-cava -s"
|
||||
|
||||
CFGFILE=~/.config/cava/config
|
||||
|
||||
# get wallpaper color palette
|
||||
WALLPALDIR="$HOME/.cache/colorizer/palettes"
|
||||
mkdir -p "$WALLPALDIR"
|
||||
read WALLPATH<<< $(grep file "$HOME"/.config/nitrogen/bg-saved.cfg | tail -1 | cut -d'=' -f2)
|
||||
|
||||
NAME=${WALLPATH////_}
|
||||
if [[ "${NAME}" =~ ^_home_.* ]]; then
|
||||
n=${#HOME}
|
||||
((n++))
|
||||
NAME=${NAME:${n}}
|
||||
fi
|
||||
if [ ! -f "$WALLPALDIR/$NAME.clr" ]; then
|
||||
convert ${WALLPATH} -resize 25% -colors 16 -unique-colors txt:- |grep -v '^#'| awk '{print substr($3,1,7)}' |pastel sort-by brightness |pastel format hex > "$WALLPALDIR/$NAME.clr"
|
||||
fi
|
||||
mapfile -t w < "$WALLPALDIR/$NAME.clr"
|
||||
if [[ "${#w[@]}" -lt 8 ]]; then
|
||||
w+=("#2e3440" "#4c566a" "#5e81ac" "#bf616b" "#b48ead" "#a3be8c" "#ebcb8b" "#d8dee9" "#eceff4")
|
||||
fi
|
||||
|
||||
case "$LANG" in
|
||||
pl*)
|
||||
INFO="Cava porady"
|
||||
COLORIZE_CAVA="Pokoloruj Cava"
|
||||
COLOR="Jednolity kolor"
|
||||
REVERSE_GRADIENT="Odwróć kolory gradientu"
|
||||
START_CAVA="Uruchom Cava"
|
||||
STOP_CAVA="Zakończ Cava"
|
||||
GENERATEFROMWP="Generuj z kolorów tapety..."
|
||||
LIGHTBG="Jasne do ciemnego"
|
||||
DARKBG="Ciemne do jesnego"
|
||||
BARS="Słupki"
|
||||
BAR_WIDTH="Szerokość słupków"
|
||||
BAR_SPACING="Odstęp między słupkami"
|
||||
COLOR_MODE="Tryb kolorowania"
|
||||
SOLID_COLOR="Jednolity kolor"
|
||||
GRADIENT="Gradient"
|
||||
PREGRADIENT="Zastosuj gotowy gradient"
|
||||
MODGRAD_FROM="Gradient kolor 1"
|
||||
MODGRAD_TO="Gradient kolor 2"
|
||||
EDITCONF="Edytuj plik konfiguracyjny"
|
||||
RELOAD="Przeładuj konfigurację"
|
||||
RELOAD_COLORS="Przeładuj kolory"
|
||||
_COLORIZER_ROOT="<b>Colorizer</b> - menu główne"
|
||||
;;
|
||||
*)
|
||||
INFO="CaVa tips & tricks"
|
||||
COLORIZE_CAVA="Colorize Cava"
|
||||
COLOR="Solid Color"
|
||||
REVERSE_GRADIENT="Reverse gradient's colors"
|
||||
START_CAVA="Start Cava"
|
||||
STOP_CAVA="Stop Cava"
|
||||
GENERATEFROMWP="Generate from wallpaper colors..."
|
||||
LIGHTBG="Light to Dark"
|
||||
DARKBG="Dark to Light"
|
||||
BARS="Bars"
|
||||
BAR_WIDTH="Bar width"
|
||||
BAR_SPACING="Bar spacing"
|
||||
COLOR_MODE="Color mode"
|
||||
SOLID_COLOR="Solid color"
|
||||
GRADIENT="Gradient"
|
||||
PREGRADIENT="Apply predefined gradient"
|
||||
MODGRAD_FROM="Modify Gradient From"
|
||||
MODGRAD_TO="Modify Gradient To"
|
||||
EDITCONF="Edit config file"
|
||||
RELOAD="Reload config"
|
||||
RELOAD_COLORS="Reload colors only"
|
||||
_COLORIZER_ROOT="<b>Colorizer</b> rootmenu"
|
||||
;;
|
||||
esac
|
||||
|
||||
getvalues () {
|
||||
read FG <<< "$(grep '.*foreground ' ${CFGFILE} | cut -d"'" -f2)"
|
||||
read BW <<< "$(grep '.*bar_width ' ${CFGFILE} | cut -d"=" -f2)"
|
||||
read BS <<< "$(grep '.*bar_spacing ' ${CFGFILE} | cut -d"=" -f2)"
|
||||
read GR <<< "$(grep '.*gradient ' ${CFGFILE} | cut -d"=" -f2)"
|
||||
read GR_FROM <<< "$(grep '.*gradient_color_1 ' ${CFGFILE} | cut -d"'" -f2)"
|
||||
read GR_TO <<< "$(grep '.*gradient_color_8 ' ${CFGFILE} | cut -d"'" -f2)"
|
||||
|
||||
|
||||
if [ ${#FG} != 7 ];then
|
||||
FGC="#59cc33"
|
||||
else
|
||||
FGC=${FG}
|
||||
fi
|
||||
FGT=$(pastel textcolor ${FGC}|pastel format hex)
|
||||
}
|
||||
getvalues
|
||||
pgrep -f cavatransparent > /dev/null && out+=("<big></big> $STOP_CAVA,mb-music cavakill;$me") || out+=("<big></big> $START_CAVA,mb-music cavastart;$me")
|
||||
out+=("^sep($COLORIZE_CAVA)")
|
||||
out+=("<tt><span bgcolor='$FGC' fgcolor='$FGT'> ${FGC} </span></tt> $COLOR,^pipe(mbclr '$FGC' cavactl foreground Cava_Bar_Color '$me')")
|
||||
out+=("^sep($GRADIENT)")
|
||||
out+=("<span bgcolor='$GR_FROM'> </span><span bgcolor='$GR_TO'> </span> $PREGRADIENT,^pipe(mbgrad cava)")
|
||||
out+=("<span bgcolor='$GR_TO'> </span><span bgcolor='$GR_FROM'> </span> $REVERSE_GRADIENT,cavactl gradient '${GR_TO}' '${GR_FROM}';$me")
|
||||
out+=("^sep()")
|
||||
out+=("<tt><span bgcolor='$GR_FROM'> </span></tt> $MODGRAD_FROM,^pipe(mbclr '$GR_FROM' cavactl grad_from Cava_Grad_From_Color '$me')")
|
||||
out+=("<tt><span bgcolor='$GR_TO'> </span></tt> $MODGRAD_TO,^pipe(mbclr '$GR_TO' cavactl grad_to Cava_Grad_To_Color '$me')")
|
||||
out+=("^sep($COLOR_MODE)")
|
||||
[[ "$GR" == "0" ]] && out+=("<big>綠</big> $SOLID_COLOR,cavactl mode solid;$me" "<big></big> $GRADIENT,cavactl mode gradient;$me") || out+=("<big></big> $SOLID_COLOR,cavactl mode solid;$me" "<big>綠</big> $GRADIENT,cavactl mode gradient;$me")
|
||||
|
||||
out+=("^sep(<i>$GENERATEFROMWP</i>)")
|
||||
out+=("<span bgcolor='${w[-3]}'> </span><span bgcolor='${w[3]}'> </span> $LIGHTBG,w2theme cava light;$me")
|
||||
out+=("<span bgcolor='${w[3]}'> </span><span bgcolor='${w[-3]}'> </span> $DARKBG,w2theme cava dark;$me")
|
||||
out+=("^sep($BARS)")
|
||||
out+=("$BAR_WIDTH [ <b>$BW</b> ],^checkout(barwidth)")
|
||||
out2+=("^tag(barwidth)")
|
||||
out2+=("^sep($BAR_WIDTH)")
|
||||
for i in 1 2 3 4 5 6 8 10
|
||||
do
|
||||
out2+=("$i,cavactl bar_width $i;$me")
|
||||
done
|
||||
|
||||
out+=("$BAR_SPACING [ <b>$BS</b> ],^checkout(barspacing)")
|
||||
out2+=("^tag(barspacing)")
|
||||
out2+=("^sep($BAR_SPACING)")
|
||||
for i in 0 1 2 3 4 5 6 8 10
|
||||
do
|
||||
out2+=("$i,cavactl bar_spacing $i;$me")
|
||||
done
|
||||
out+=("^sep()")
|
||||
out+=(" $EDITCONF,xdg-open ~/.config/cava/config")
|
||||
out+=(" $RELOAD,cavactl reload;$me")
|
||||
out+=(" $RELOAD_COLORS,cavactl reload_colors;$me")
|
||||
out+=("^sep()")
|
||||
out+=(" $INFO,cavactl info")
|
||||
|
||||
|
||||
### RUN
|
||||
if [[ "$1" == "-s" ]]; then
|
||||
. /usr/share/mb-jgtools/pipemenu-standalone.cfg
|
||||
. $HOME/.config/mabox/mabox.conf
|
||||
|
||||
CNF_DIR="$HOME/.config/colorizer"
|
||||
CNF_FILE="$CNF_DIR/colorizer.conf"
|
||||
source "$CNF_FILE"
|
||||
|
||||
out+=("^sep()")
|
||||
out+=(" ${arrow_string_left} $_COLORIZER_ROOT,colorizer -s")
|
||||
|
||||
if [[ "$colorizer_size" == "full" ]];then
|
||||
eval $(xdotool getdisplaygeometry --shell)
|
||||
MENU_HEIGHT_MIN="$HEIGHT"
|
||||
MENU_HEIGHT_MAX=$MENU_HEIGHT_MIN
|
||||
jgtools_radius=0
|
||||
menu_margin_x="0"
|
||||
else
|
||||
MENU_VALIGN="center"
|
||||
menu_margin_x=${submenu_spacing:-0}
|
||||
fi
|
||||
|
||||
|
||||
MENU_HALIGN="left"
|
||||
jgmenu_icon_size=0
|
||||
|
||||
[ $(pidof picom) ] && MENU_RADIUS=$jgtools_radius
|
||||
[ -z $jgmenu_use_borders ] && menu_border=0
|
||||
JGWIDTH=$((jgtools_padding + 270 + jgtools_padding))
|
||||
MENU_PADDING_TOP=$((jgtools_padding + 152))
|
||||
|
||||
#WALLPAPER
|
||||
read WALLPATH<<< $(grep file "$HOME"/.config/nitrogen/bg-saved.cfg | tail -1 | cut -d'=' -f2)
|
||||
THUMBDIR="$HOME/.cache/colorizer/thumbs"
|
||||
mkdir -p ${THUMBDIR}
|
||||
NAME=${WALLPATH////_}
|
||||
if [[ "${NAME}" =~ ^_home_.* ]]; then
|
||||
n=${#HOME}
|
||||
((n++))
|
||||
NAME=${NAME:${n}}
|
||||
fi
|
||||
THUMB="${THUMBDIR}/${NAME}.png"
|
||||
if [[ ! -f "$THUMB" ]]
|
||||
then
|
||||
convert ${WALLPATH} -resize 270x150^ -gravity center -extent 270x150 ${THUMB}
|
||||
fi
|
||||
|
||||
mkconfigfile
|
||||
|
||||
[[ "$GR" == "1" ]] && clr=${GR_FROM} || clr=${FG}
|
||||
|
||||
cat <<EOF > ${MENU_ITEMS}
|
||||
@icon,,$((jgtools_padding)),$((jgtools_padding)),270,150,4,left,top,,,${THUMB}
|
||||
|
||||
#@rect,,$((jgtools_padding)),$((jgtools_padding+100)),12,50,0,left,top,,${clr} 100,
|
||||
@rect,,$((jgtools_padding+20)),$((jgtools_padding+111)),12,35,0,left,top,,${clr} 100,
|
||||
@rect,,$((jgtools_padding+40)),$((jgtools_padding+120)),12,26,0,left,top,,${clr} 100,
|
||||
@rect,,$((jgtools_padding+60)),$((jgtools_padding+110)),12,36,0,left,top,,${clr} 100,
|
||||
@rect,,$((jgtools_padding+80)),$((jgtools_padding+96)),12,50,0,left,top,,${clr} 100,
|
||||
@rect,,$((jgtools_padding+100)),$((jgtools_padding+92)),12,54,0,left,top,,${clr} 100,
|
||||
@rect,,$((jgtools_padding+120)),$((jgtools_padding+70)),12,76,0,left,top,,${clr} 100,
|
||||
@rect,,$((jgtools_padding+140)),$((jgtools_padding+60)),12,86,0,left,top,,${clr} 100,
|
||||
@rect,,$((jgtools_padding+160)),$((jgtools_padding+72)),12,74,0,left,top,,${clr} 100,
|
||||
@rect,,$((jgtools_padding+180)),$((jgtools_padding+90)),12,56,0,left,top,,${clr} 100,
|
||||
@rect,,$((jgtools_padding+200)),$((jgtools_padding+110)),12,36,0,left,top,,${clr} 100,
|
||||
@rect,,$((jgtools_padding+220)),$((jgtools_padding+125)),12,21,0,left,top,,${clr} 100,
|
||||
@rect,,$((jgtools_padding+240)),$((jgtools_padding+115)),12,31,0,left,top,,${clr} 100,
|
||||
#@rect,,$((jgtools_padding+260)),$((jgtools_padding+106)),10,40,0,left,top,,${clr} 100,
|
||||
|
||||
@rect,,$((jgtools_padding+4)),$((jgtools_padding + 116)),262,28,0,left,top,#222222 20,#222222 70,
|
||||
@text,,$((jgtools_padding + 128)),$((jgtools_padding + 116)),120,28,0,left,top,#FFFFFF ,${WINCLR},<span size='10400' font_family='Ubuntu'><b>Colorizer</b> Cava</span>
|
||||
|
||||
|
||||
$(printf '%s\n' "${out[@]}")
|
||||
$(printf '%s\n' "${out2[@]}")
|
||||
EOF
|
||||
|
||||
jgmenu --config-file=${CONFIG_FILE} --csv-file=${MENU_ITEMS} 2>/dev/null
|
||||
exit 0
|
||||
fi
|
||||
|
||||
printf '%s\n' "${out[@]}"
|
||||
printf '%s\n' "${out2[@]}"
|
||||
|
||||
Reference in New Issue
Block a user