#!/bin/bash # # colorizer - set of tools for Mabox (auto)theming # Copyright (C) 2022-2023 Daniel Napora # # 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 . me="colorizer-menus -s" . $HOME/.config/mabox/mabox.conf case "$jgmenu_theme" in obtheme) OBTHEME=$(awk '// {while (getline n) {if (match(n, //)) {l=n; exit}}} END {split(l, a, "[<>]"); print a[3]}' "$HOME/.config/openbox/rc.xml"); #echo "$OBTHEME" THEMERC="$HOME/.config/mabox/jgobthemes/${OBTHEME}.colorrc" jgmenu_theme="$OBTHEME";; #only to show real theme name in menu *) THEMERC="$HOME/.config/mabox/jgobthemes/${jgmenu_theme}.colorrc";; esac GRADIENT_FILE="$HOME"/.config/colorizer/gradients_menu.inc if [ ! -f "$GRADIENT_FILE" ]; then cp /usr/share/mabox-colorizer/gradients_menu.inc "$GRADIENT_FILE" fi # Backup original theme file if [ ! -f "${THEMERC}.bak" ]; then cp ${THEMERC} ${THEMERC}.bak fi case "$LANG" in pl*) MENU_THEME="Motyw menu" GENERATEFROMWP="Generuj z kolorów tapety..." LIGHTBG="Jasne tło" DARKBG="Ciemne tło" COLOR_MENU_BG="Tło menu" COLOR_MENU_BG_TO="Tło menu 2 (gradient)" COLOR_MENU_BORDER="Obramowanie menu" GRADIENT_POS="Kierunek gradientu" NONE="brak gradientu (none)" TOP="od góry (top)" RIGHT="od prawej (right)" BOTTOM="z dołu (bottom)" LEFT="od lewej (left)" TOP_LEFT="od góry z lewej (top_left)" TOP_RIGHT="od góry z prawej (top_right)" BOTTOM_LEFT="z dołu od lewej (bottom_left)" BOTTOM_RIGHT="z dołu od prawej (bottom_right)" PRE_GRADIENTS="Gotowe gradienty" GRADIENT_REVERSE="Odwróć kolory Gradientu" ITEM="Pozycja (element) menu " FONT="Czcionka" INCREASE="Powiększ do" DECREASE="Pomniejsz do" FONT_CUSTOM="Wybierz czcionkę i rozmiar..." FONT_FAMILY="rodzina" FONT_SIZE="rozmiar" ITEM_FONT="Czcionka elementu" TITLE_FONT="Czcionka nagłówka" COLOR_NORM_FG="Kolor tekstu" COLOR_SEL_BG="Tło aktywnej pozycji" COLOR_SEL_FG="Tekst aktywnej pozycji" COLOR_SEL_BORDER="Obramowanie akt. poz." ITEM_BORDER="Obramowanie (px)" ITEM_RADIUS="Zaokrąglenie (px)" COLOR_NORM_BG="Tło" SEPARATOR_TITLE="Separator/Nagłówek" COLOR_TITLE_BG="Tło nagłówka" COLOR_TITLE_FG="Kolor tekstu nagłówka" COLOR_TITLE_BORDER="Kolor obramowania" SEP_HALIGN="Wyrównanie nagłówka" H_LEFT="do lewej" H_CENTER="po środku" H_RIGHT="do prawej" COLOR_SEP_FG="Kolor separatora (linii)" MORE_MENU_SETTINGS="więcej ustawień menu" GLOBAL_MENU_SETTINGS="Globalne Ustawienia Menu" RESET="Resetuj motyw" TO_DEFAULT="" EDIT="Edytuj plik " FILE="plik" SET_RANDOM="Ustaw losowy motyw menu" ;; *) MENU_THEME="Menu theme" GENERATEFROMWP="Generate from wallpaper colors..." LIGHTBG="Light Background" DARKBG="Dark Background" COLOR_MENU_BG="Background" COLOR_MENU_BG_TO="Background to (gradient)" COLOR_MENU_BORDER="Menu Border" GRADIENT_POS="Gradient direction" NONE="none" TOP="top" RIGHT="right" BOTTOM="bottom" LEFT="left" TOP_LEFT="top_left" TOP_RIGHT="top_right" BOTTOM_LEFT="bottom_left" BOTTOM_RIGHT="bottom_right" PRE_GRADIENTS="Predefined gradients" GRADIENT_REVERSE="Reverse gradient colors" ITEM="Item" FONT="Font" INCREASE="Increase to" DECREASE="Decrease to" FONT_CUSTOM="Select custom font and size..." FONT_FAMILY="font family" FONT_SIZE="font size" ITEM_FONT="Item Font" TITLE_FONT="Title Font" COLOR_NORM_FG="Text Color" COLOR_SEL_BG="Selected Item Background" COLOR_SEL_FG="Selected Item Text" COLOR_SEL_BORDER="Selected Item Border" ITEM_BORDER="Item Border (px)" ITEM_RADIUS="Item Radius (px)" COLOR_NORM_BG="Item Background" SEPARATOR_TITLE="Separator/Title" COLOR_TITLE_BG="Title Background" COLOR_TITLE_FG="Title Foreground" COLOR_TITLE_BORDER="Title Border color " SEP_HALIGN="Title alignment" H_LEFT="left" H_CENTER="center" H_RIGHT="right" COLOR_SEP_FG="Separator (line) color" MORE_MENU_SETTINGS="more menu settings" GLOBAL_MENU_SETTINGS="Global Menu Settings" RESET="Reset" TO_DEFAULT="to default" EDIT="Edit" FILE="file" SET_RANDOM="Set random menu theme" ;; esac getvalues () { read MBG MBGA<<< "$(grep 'color_menu_bg ' ${THEMERC} | cut -d'=' -f2)" read MBGT MBGTA<<< "$(grep 'color_menu_bg_to' ${THEMERC} | cut -d'=' -f2)" read MBORDER MBORDERA<<< "$(grep 'color_menu_border' ${THEMERC} | cut -d'=' -f2)" read GRADIENT<<< "$(grep 'menu_gradient_pos' ${THEMERC} | cut -d'=' -f2)" if [ "$GRADIENT" == "" ]; then mb-setvar menu_gradient_pos=none ${THEMERC} read GRADIENT<<< "$(grep 'menu_gradient_pos' ${THEMERC} | cut -d'=' -f2)" fi read SEPHALIGN<<< "$(grep 'sep_halign' ${THEMERC} | cut -d'=' -f2)" read SEPFG SEPFGA<<< "$(grep 'color_sep_fg' ${THEMERC} | cut -d'=' -f2)" read TBG TBGA<<< "$(grep 'color_title_bg' ${THEMERC} | cut -d'=' -f2)" read TFG TFGA<<< "$(grep 'color_title_fg' ${THEMERC} | cut -d'=' -f2)" read TBORDER TBORDERA<<< "$(grep 'color_title_border' ${THEMERC} | cut -d'=' -f2)" read NORMBG NORMBGA<<< "$(grep color_norm_bg ${THEMERC} | cut -d'=' -f2)" read NFG NFGA<<< "$(grep color_norm_fg ${THEMERC} | cut -d'=' -f2)" read SBG SBGA<<< "$(grep 'color_sel_bg' ${THEMERC} | cut -d'=' -f2)" read SFG SFGA<<< "$(grep 'color_sel_fg' ${THEMERC} | cut -d'=' -f2)" read SBORDER SBORDERA<<< "$(grep 'color_sel_border' ${THEMERC} | cut -d'=' -f2)" read IBORDER<<< "$(grep 'item_border' ${THEMERC} | cut -d'=' -f2)" read IRADIUS<<< "$(grep 'item_radius' ${THEMERC} | cut -d'=' -f2)" } getvalues out+=("^sep($MENU_THEME: ${jgmenu_theme})") out+=("Quick Menu tweaks,^checkout(tweaks)") out2+=("^tag(tweaks)") out2+=("^sep(Overall style)") out2+=("Solid Color,jgctl tweak solid;$me") out2+=("Gradient,jgctl tweak gradient;$me") out2+=("^sep(Opacity)") out2+=("100% Opaque,jgctl tweak opacity 100;$me") out2+=("80%,jgctl tweak opacity 80;$me") out2+=("60%,jgctl tweak opacity 60;$me") out2+=("40%,jgctl tweak opacity 40;$me") out2+=("30%,jgctl tweak opacity 30;$me") out2+=("20%,jgctl tweak opacity 20;$me") out2+=("10%,jgctl tweak opacity 10;$me") out2+=("0% Fully transparent,jgctl tweak opacity 0;$me") out2+=("^sep(MENU_PADDING)") out2+=("wide,jgctl tweak padding wide;$me") out2+=("normal,jgctl tweak padding normal;$me") out2+=("tight,jgctl tweak padding tight;$me") out+=("^sep(Menu)") out+=("$(printf '%3s' "$MBGA") $COLOR_MENU_BG,^pipe(mbclr '$MBG' jgctl color_menu_bg '${COLOR_MENU_BG}' '$me')") out+=("$(printf '%3s' "$MBGTA") $COLOR_MENU_BG_TO,^pipe(mbclr '$MBGT' jgctl color_menu_bg_to '${COLOR_MENU_BG_TO}' '$me')") out+=("$(printf '%3s' "$MBORDERA") $COLOR_MENU_BORDER,^pipe(mbclr '$MBORDER' jgctl color_menu_border '${COLOR_MENU_BORDER}' '$me')") out+=("^sep()") case "$GRADIENT" in none)icon="";; top)icon="";; right)icon="";; bottom)icon="";; left)icon="";; top_left)icon="";; top_right)icon="";; bottom_left)icon="";; bottom_right)icon="";; esac out+=("$icon $GRADIENT_POS [ $GRADIENT ],^checkout(gradientpos)") #for i in $(pastel gradient "$MBGT" "$MBG" -n 13|pastel format hex) #do #gradrev+=(" ") #done #out+=("$(printf '%s' "${gradrev[@]}") 凌 $GRADIENT_REVERSE,jgctl gradient '${MBGT}' '${MBG}';$me") out+=(" 凌 $GRADIENT_REVERSE,jgctl gradient '${MBGT}' '${MBG}';$me") #for i in $(pastel gradient "$MBG" "$MBGT" -n 13|pastel format hex) #do #grad+=(" ") #done #out+=("$(printf '%s' "${grad[@]}") $PRE_GRADIENTS,^pipe(mbgrad menu)") out+=(" $PRE_GRADIENTS,^pipe(mbgrad menu)") out+=("^sep($ITEM)") out+=("󰛖 $FONT [ $menu_font_family $menu_font_size ],^checkout(mitemfont)") out+=("$(printf '%3s' "$NFGA") AbCd $COLOR_NORM_FG,^pipe(mbclr '$NFG' jgctl color_norm_fg '${COLOR_NORM_FG}' '$me')") out+=("$(printf '%3s' "$SBGA") $COLOR_SEL_BG,^pipe(mbclr '$SBG' jgctl color_sel_bg '${COLOR_SEL_BG}' '$me')") out+=("$(printf '%3s' "$SFGA") AbCd $COLOR_SEL_FG,^pipe(mbclr '$SFG' jgctl color_sel_fg '${COLOR_SEL_FG}' '$me')") out+=("$(printf '%3s' "$SBORDERA") $COLOR_SEL_BORDER,^pipe(mbclr '$SBORDER' jgctl color_sel_border '${COLOR_SEL_BORDER}' '$me')") out+=("^sep()") [[ ! -z "$NORMBG" ]] && out+=("$(printf '%3s' "$NORMBGA") $COLOR_NORM_BG,^pipe(mbclr '$NORMBG' jgctl color_norm_bg '${COLOR_NORM_BG}' '$me')" "^sep()") out+=("$ITEM_BORDER [ $IBORDER ],^checkout(itemborder)") out+=("$ITEM_RADIUS [ $IRADIUS ],^checkout(itemradius)") # Item font submenu out2+=("^tag(mitemfont)") out2+=("^sep($ITEM_FONT)") out2+=("󰛖 $FONT_CUSTOM,mb-setfont menu_item;$me") out2+=("^sep($FONT_SIZE)") out2+=("󰧴 $INCREASE $((menu_font_size+1)) px,mb-setvar menu_font_size=$((menu_font_size+1));$me") out2+=("󰧳 $DECREASE $((menu_font_size-1)) px,mb-setvar menu_font_size=$((menu_font_size-1));$me") out2+=("^sep()") sizes=(14 13 12 11 10 9 8) for i in "${sizes[@]}" do [[ "$menu_font_size" == "$i" ]] && out2+=(" $i px,$me") || out2+=(" $i px,mb-setvar menu_font_size=$i;$me") done if [ -f "$HOME/.config/mabox/fonts.list" ];then mapfile -t favfonts < <( grep -vE "^($|#)" ~/.config/mabox/fonts.list) else mapfile -t favfonts < <( grep -vE "^($|#)" /usr/share/mabox-colorizer/fonts.list) cp /usr/share/mabox-colorizer/fonts.list ~/.config/mabox/ fi if [ "${#favfonts[@]}" -gt 0 ];then out2+=("^sep($FONT_FAMILY)") for fon in "${favfonts[@]}";do [[ "$menu_font_family" == "$fon" ]] && out2+=(" ${fon},$me") || out2+=(" ${fon},mb-setvar \"menu_font_family='${fon}'\";$me") done fi out2+=("^sep()") out2+=(" Edit favorited fonts list,geany ~/.config/mabox/fonts.list") out+=("^sep($SEPARATOR_TITLE)") out+=("󰛖 $FONT [ $menu_sep_font_family $menu_sep_font_size ],^checkout(mtitlefont)") out2+=("^tag(mtitlefont)") out2+=("^sep($TITLE_FONT)") out2+=("󰛖 $FONT_CUSTOM,mb-setfont menu_sep;$me") out2+=("^sep($FONT_SIZE)") out2+=("󰧴 $INCREASE $((menu_sep_font_size+1)) px,mb-setvar menu_sep_font_size=$((menu_sep_font_size+1));$me") out2+=("󰧳 $DECREASE $((menu_sep_font_size-1)) px,mb-setvar menu_sep_font_size=$((menu_sep_font_size-1));$me") out2+=("^sep()") sizes=(14 13 12 11 10 9 8) for i in "${sizes[@]}" do [[ "$menu_sep_font_size" == "$i" ]] && out2+=(" $i px,$me") || out2+=(" $i px,mb-setvar menu_sep_font_size=$i;$me") done if [ "${#favfonts[@]}" -gt 0 ];then out2+=("^sep($FONT_FAMILY)") for fon in "${favfonts[@]}";do [[ "$menu_sep_font_family" == "$fon" ]] && out2+=(" ${fon},$me") || out2+=(" ${fon},mb-setvar \"menu_sep_font_family='${fon}'\";$me") done fi out2+=("^sep()") out2+=(" Edit favorited fonts list,geany ~/.config/mabox/fonts.list") out+=("$(printf '%3s' "$TBGA") $COLOR_TITLE_BG,^pipe(mbclr '$TBG' jgctl color_title_bg '${COLOR_TITLE_BG}' '$me')") out+=("$(printf '%3s' "$TFGA") AbCd $COLOR_TITLE_FG,^pipe(mbclr '$TFG' jgctl color_title_fg '${COLOR_TITLE_FG}' '$me')") out+=("$(printf '%3s' "$TBORDERA") $COLOR_TITLE_BORDER,^pipe(mbclr '$TBORDER' jgctl color_title_border '${COLOR_TITLE_BORDER}' '$me')") out+=("^sep()") case "$SEPHALIGN" in left) icon="";; center) icon="";; right) icon="";; esac out+=("$icon $SEP_HALIGN [ $SEPHALIGN ],^checkout(sephalign)") out+=("^sep()") out+=("$(printf '%3s' "$SEPFGA") ------ ${COLOR_SEP_FG},^pipe(mbclr '$SEPFG' jgctl color_sep_fg '${COLOR_SEP_FG}' '$me')") out2+=("^tag(gradientpos)") out2+=("^sep($GRADIENT_POS $GRADIENT)") out2+=("$NONE,jgctl menu_gradient_pos none;$me") out2+=("^sep()") out2+=(" $TOP,jgctl menu_gradient_pos top;$me") out2+=(" $RIGHT,jgctl menu_gradient_pos right;$me") out2+=(" $BOTTOM,jgctl menu_gradient_pos bottom;$me") out2+=(" $LEFT,jgctl menu_gradient_pos left;$me") out2+=(" $TOP_LEFT,jgctl menu_gradient_pos top_left;$me") out2+=(" $TOP_RIGHT,jgctl menu_gradient_pos top_right;$me") out2+=(" $BOTTOM_LEFT,jgctl menu_gradient_pos bottom_left;$me") out2+=(" $BOTTOM_RIGHT,jgctl menu_gradient_pos bottom_right;$me") out2+=("^tag(sephalign)") out2+=("^sep($SEP_HALIGN)") out2+=(" $H_LEFT,jgctl sep_halign left;$me") out2+=(" $H_CENTER,jgctl sep_halign center;$me") out2+=(" $H_RIGHT,jgctl sep_halign right;$me") out2+=("^tag(itemborder)") out2+=("^sep($ITEM_BORDER)") out2+=("0,jgctl item_border 0;$me") out2+=("^sep()") out2+=("1,jgctl item_border 1;$me") out2+=("2,jgctl item_border 2;$me") out2+=("^tag(itemradius)") out2+=("^sep($ITEM_RADIUS)") out2+=("0,jgctl item_radius 0;$me") out2+=("^sep()") out2+=("1,jgctl item_radius 1;$me") out2+=("2,jgctl item_radius 2;$me") out2+=("3,jgctl item_radius 3;$me") out2+=("4,jgctl item_radius 4;$me") out2+=("5,jgctl item_radius 5;$me") out2+=("6,jgctl item_radius 6;$me") out+=("^sep($GENERATEFROMWP)") out+=("$LIGHTBG,w2theme menu light;$me") out+=("$DARKBG,w2theme menu dark;$me") out+=("^sep($MORE_MENU_SETTINGS)") out+=(" $GLOBAL_MENU_SETTINGS,jgmenusettings-pipe -c") #out+=("$GLOBAL_MENU_SETTINGS,^pipe(jgmenusettings-pipe -r)") out+=("^sep()") if [ -f "${THEMERC}.bak" ]; then out+=("󰁯 $RESET ${jgmenu_theme} $TO_DEFAULT,jgctl reset;$me") fi out+=(" $EDIT ${jgmenu_theme} $FILE,xdg-open $THEMERC") ### We don't need many menu themes anymore #out+=(" $SET_RANDOM,mb-setvar jgmenu_theme=$(basename -s .colorrc $(ls ~/.config/mabox/jgobthemes/*.colorrc | shuf -n 1));$me") ### 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+=(" ⮜⮜⮜ Colorizer,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_PADDING_TOP=${jgtools_padding:-0} MENU_HALIGN="left" jgmenu_icon_size=0 JGWIDTH=40 [ $(pidof picom) ] && MENU_RADIUS=$jgtools_radius [ -z $jgmenu_use_borders ] && menu_border=0 JGWIDTH=$((jgtools_padding + 278 + jgtools_padding)) MENU_PADDING_TOP=$((jgtools_padding + 158)) #WALLPAPER read WALLPATH<<< $(grep file "$HOME"/.config/nitrogen/bg-saved.cfg | 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 cat < ${MENU_ITEMS} @icon,,$((jgtools_padding + 4)),$((jgtools_padding + 4)),270,150,4,left,top,,,${THUMB} @rect,,$((jgtools_padding + 4)),$((jgtools_padding + 120)),270,30,0,left,top,#222222 20,#222222 70, @text,,$((jgtools_padding + 158)),$((jgtools_padding + 120)),120,30,0,left,top,#FFFFFF ,${WINCLR},Colorizer Menus @rect,,$((jgtools_padding + 14)),$((jgtools_padding + 22)),35,80,2,left,top,${MBORDER} ${MBORDERA},${MBG} ${MBGA}, @rect,,$((jgtools_padding + 50)),$((jgtools_padding + 72)),35,60,2,left,top,${MBORDER} ${MBORDERA},${MBG} ${MBGA}, $(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[@]}"