#!/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 . MBCOLORSDIR="$HOME"/.themes/MBcolors/openbox-3/ GRADIENT_FILE="$HOME"/.config/colorizer/gradients_all.inc MORE_GRADIENT_FILE="$HOME"/.config/colorizer/gradients_menu.inc SYSTHEMES="/usr/share/mabox-colorizer/colorschemes/ob.csv" USERTHEMES="$HOME/.config/colorizer/openbox/userthemes.csv" ### Wallpaper colors WALLPALDIR="$HOME/.cache/colorizer/palettes" mkdir -p "$WALLPALDIR" read WALLPATH<<< $(grep file "$HOME"/.config/nitrogen/bg-saved.cfg | 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 [ ! -f "$GRADIENT_FILE" ]; then cp /usr/share/mabox-colorizer/gradients.inc "$GRADIENT_FILE" fi if [ ! -d "$MBCOLORSDIR" ]; then mkdir -p ${MBCOLORSDIR} rsync -a /usr/share/mabox-colorizer/themes/MBcolors/openbox-3/* ${MBCOLORSDIR}/ fi OBTHEME=$(awk '// {while (getline n) {if (match(n, //)) {l=n; exit}}} END {split(l, a, "[<>]"); print a[3]}' "$HOME/.config/openbox/rc.xml") THEMERC="$HOME/.themes/$OBTHEME/openbox-3/themerc" me="colorizer-ob -s" case "$LANG" in pl*) QUICK_TWEAKS="Ustawienia główne" OVERALL_STYLE="Ogólny styl" THEMES="Motywy" SYSTEM_THEMES="Systemowe" YOUR_THEMES="Moje motywy" SAVE_CURRTHEME="Zapisz aktualną kobfigurację jako..." OPEN_THEMEFILE="Odwórz plik z motywami w edytorze" THEME="Motyw" APPLY="Zastosuj" APPLY_THEME="Pełny motyw (kolory, czcionki i rozmiar)" APPLY_SCHEME="Tylko kolory" DELETE="Usuń" DELETE_THEME="Usuń motyw" OBTHEME_LBL="Motyw OpenBox" MONOCHROMATIC="Monochromatyczny" CHOOSE_AND_PICK="Wybierz wariant i pobierz kolor..." GENERATEFROMWP="Generuj z kolorów tapety..." LIGHTBG=" Jasne tło" DARKBG="Ciemne tło" RANDOMIZE="Generuj losowo" TITLEBAR="Pasek tytułowy" ACTIVE_WINDOW="Aktywne okno" INACTIVE_WINDOW="Nieaktywne okno" TITLEBAR_FONT="Czcionka" ACTIVE_BG="Tło aktywnego okna" INACTIVE_BG="Tło nieaktywnego okna" TEXT_COLOR="Kolor tekstu" TITLEBAR_TEXT="Tekst paska tytułowego" FONT="Czcionka" FONTSIZE="Rozmiar czcionki" _INCREASE="Powiększ do" _DECREASE="Pomniejsz do" FONTFAMILY="Czcionka (rodzina)" BOLD="Pogrubienie" ITALIC="Kursywa" TEXTALIGN="Wyrównanie tytułu" LEFT="do lewej" CENTER="po środku" RIGHT="do prawej" SHADOW="Cień" NOSHADOW="bez cienia" DARK="Ciemny" LIGHT="Jasny" TEXT="Tekst" ACTIVE_FG="w aktywnym oknie" INACTIVE_FG="w nieaktywnym oknie" PADDING="Odstęp" VERTICAL="W pionie" HORIZONTAL="W poziomie" RAISED_OR_FLAT="Płaski, Uniesiony, Wklęsły" FLAT="płaski - flat" RAISED="uniesiony - raised" SUNKEN="wklęsły - sunken" BUTTONS_LBL="Przyciski" BUTTONS_LAYOUT="Układ przycisków" LEGEND="Legenda" GRADIENT_TYPE="Typ Gradientu" SOLID_COLOR="Jednolity kolor (brak gradientu)" PRE_GRADIENTS="Gotowe gradienty" GRADIENT_REVERSE="Odwróć kolory Gradientu" SPLITVERTICAL="Podział w pionie" MIRRORHORIZONTAL="LustroPoziome" DIAGONAL="Przekątna" CROSSDIAGONAL="Przekątna krzyżowa" PYRAMID="Piramida" ACTIVE_BG_TO="Tło aktywnego okna 2" INACTIVE_BG_TO="Tło nieaktywnego okna 2" BORDER="Obramowanie okna" BORDER_PX="Obramowanie (px)" ACTIVE_BORDER="Obramowanie akt. okna" INACTIVE_BORDER="Obramowanie nieakt. okna" HANDLEWIDTH="Uchwyt - rozmiar" ACTIVEHANDLE="Aktywny Uchwyt" YES="Tak" NO="Nie" GRIPONLY="Tylko chwyt (po bokach)" RESET="Resetuj" RESET_THEME="Resetuj motyw" AREYOUSURE="Czy aby na pewno?" NOT_SUPORTED_OBTHEME="Nie wspierany motyw" UNLOCK="odblokuj swoją kreatywność..." SWITCH_TO_MBCOLORS="Przełącz na MBColors" _COLORIZER_ROOT="Colorizer - menu główne" ;; *) QUICK_TWEAKS="Global Settings/Quick Tweaks" OVERALL_STYLE="Overall style" THEMES="Themes" SYSTEM_THEMES="System themes" YOUR_THEMES="My Themes" SAVE_CURRTHEME="Save current setup as..." OPEN_THEMEFILE="Open themes file in editor" THEME="Theme" APPLY="Apply" APPLY_THEME="Full theme (colors,fonts and sizing)" APPLY_SCHEME="Colors only" DELETE="Delete" DELETE_THEME="Delete theme" OBTHEME_LBL="OpenBox theme" MONOCHROMATIC="Monochromatic" CHOOSE_AND_PICK="Choose variant and pick color..." GENERATEFROMWP="Generate from wallpaper colors..." LIGHTBG="Light Background" DARKBG="Dark Background" RANDOMIZE="Generate randomly" TITLEBAR="Title Bar" ACTIVE_WINDOW="Active Window" INACTIVE_WINDOW="Inactive Window" ACTIVE_BG="Active Background" INACTIVE_BG="Inactive Background" TEXT_COLOR="Text color" TITLEBAR_TEXT="Title Bar Text" TITLEBAR_FONT="Title Bar Font" FONT="Font" FONTSIZE="font size" _INCREASE="Increase to" _DECREASE="Decrease to" FONTFAMILY="font family" BOLD="Bold" ITALIC="Italic" TEXTALIGN="Title align" LEFT="left" CENTER="center" RIGHT="right" SHADOW="Shadow" NOSHADOW="no shadow" DARK="Dark" LIGHT="Light" TEXT="Text" ACTIVE_FG="in active window" INACTIVE_FG="in inactive window" PADDING="Padding" VERTICAL="Vertical" HORIZONTAL="Horizontal" RAISED_OR_FLAT="Flat, Raised or Sunken" FLAT="flat" RAISED="raised" SUNKEN="sunken" BUTTONS_LBL="Buttons" BUTTONS_LAYOUT="Buttons Layout" LEGEND="Legend" GRADIENT_TYPE="Gradient type" SPLITVERTICAL="SplitVertical" MIRRORHORIZONTAL="MirrorHorizontal" DIAGONAL="Diagonal" CROSSDIAGONAL="CrossDiagonal" PYRAMID="Pyramid" SOLID_COLOR="Solid color (no gradient)" PRE_GRADIENTS="Predefined gradients" GRADIENT_REVERSE="Reverse Gradient Colors" ACTIVE_BG_TO="Active Background to" INACTIVE_BG_TO="Inactive Background to" BORDER="Window Border" BORDER_PX="Border (px)" ACTIVE_BORDER="Active Border" INACTIVE_BORDER="Inactiva Border" HANDLEWIDTH="Handle Width" ACTIVEHANDLE="Active Handle" YES="Yes" NO="No" GRIPONLY="Grip only" RESET="Reset" RESET_THEME="Reset theme to default" AREYOUSURE="Are you sure?" NOT_SUPORTED_OBTHEME="Theme not supported" UNLOCK="Unlock your creativity..." SWITCH_TO_MBCOLORS="Switch to MBColors" _COLORIZER_ROOT="Colorizer rootmenu" ;; esac getvalues () { read ABG <<< "$(grep .active.title.bg.color: ${THEMERC} | cut -d':' -f2)" read ABGTO <<< "$(grep .active.title.bg.colorTo ${THEMERC} | cut -d':' -f2)" read NBG <<< "$(grep .inactive.title.bg.color: ${THEMERC} | cut -d':' -f2)" read NBGTO <<< "$(grep .inactive.title.bg.colorTo ${THEMERC} | cut -d':' -f2)" read AFG <<< "$(grep .active.label.text.color ${THEMERC} | cut -d':' -f2)" read NFG <<< "$(grep .inactive.label.text.color ${THEMERC} | cut -d':' -f2)" read ALINE <<< "$(grep .active.border.color ${THEMERC} | cut -d':' -f2)" read NLINE <<< "$(grep inactive.border.color ${THEMERC} | cut -d':' -f2)" read PHEIGHT <<< "$(grep ^padding.height: ${THEMERC} | cut -d':' -f2)" read PWIDTH <<< "$(grep ^padding.width: ${THEMERC} | cut -d':' -f2)" read TXTJUST <<< "$(grep text.justify ${THEMERC} | cut -d':' -f2)" read HANDLE <<< "$(grep handle.width ${THEMERC} | cut -d':' -f2)" read BORD <<< "$(grep border.width ${THEMERC} | cut -d':' -f2)" #read BEVEL REST <<< "$(grep .title.bg: ${THEMERC} | cut -d':' -f2)" read TITLEBG <<< "$(grep .title.bg: ${THEMERC} | cut -d':' -f2)" case "${TITLEBG,,}" in *flat*) BEVEL="flat";; *raised*) BEVEL="raised";; *sunken*) BEVEL="sunken";; esac case "${TITLEBG,,}" in *solid*) GRAD=Solid;; *splitvertical*) GRAD=SplitVertical;; *vertical*) GRAD=Vertical;; *mirrorhorizontal*) GRAD=MirrorHorizontal;; *horizontal*) GRAD=Horizontal;; *crossdiagonal*) GRAD=CrossDiagonal;; *diagonal*) GRAD=Diagonal;; *pyramid*) GRAD=Pyramid;; esac but=$(<"$MBCOLORSDIR/.buttons") BUTTONS=${but:-tiny} #notify-send.sh "Buttons" "$BUTTONS" read AHBG <<< "$(grep .active.handle.bg.color: ${THEMERC} | cut -d':' -f2)" if [ "$ABG" == "$AHBG" ];then AHANDLE="yes" else AHANDLE="no" fi } getvaluesrc() { #from RC.xml nspace="http://openbox.org/3.4/rc" cfg="$HOME/.config/openbox/rc.xml" FSIZE=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:size' "$cfg") FNAME=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:name' "$cfg") NDSLIMC=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:titleLayout' "$cfg") WEIGHT=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:weight' "$cfg") WEIGHT_INACT=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:weight' "$cfg") SLANT=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:slant' "$cfg") SLANT_INACT=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:slant' "$cfg") } if [[ -f "$THEMERC" ]] && [[ "$OBTHEME" = "MBcolor"* ]]; then if [ ! -f "${THEMERC}.bak" ]; then cp ${THEMERC} ${THEMERC}.bak #check if lines, and add missing # colorTo # handle # grip # text.justify # window.active.label.text.font:shadow=n:shadowtint=70:shadowoffset=1 #grep -qF -- "$LINE" "$FILE" || echo "$LINE" >> "$FILE" grep ^[^#] "$THEMERC" | grep -qiF -- .active.title.bg.colorTo || echo "window.active.title.bg.colorTo: #222222" >> "$THEMERC" grep ^[^#] "$THEMERC" | grep -qiF -- .inactive.title.bg.colorTo || echo "window.inactive.title.bg.colorTo: #222222" >> "$THEMERC" grep ^[^#] "$THEMERC" | grep -qiF -- handle.width: || echo "window.handle.width: 0" >> "$THEMERC" grep ^[^#] "$THEMERC" | grep -qiF -- .handle.bg: || echo "window.*.handle.bg: parentrelative" >> "$THEMERC" ################################################################################################################################## Kolory poniżej obliczyć grep ^[^#] "$THEMERC" | grep -qiF -- .active.handle.bg.color: || echo "window.active.handle.bg.color: #222222" >> "$THEMERC" grep ^[^#] "$THEMERC" | grep -qiF -- .active.handle.bg.colorTo: || echo "window.active.handle.bg.colorTo: #222222" >> "$THEMERC" grep ^[^#] "$THEMERC" | grep -qiF -- .inactive.handle.bg.color: || echo "window.inactive.handle.bg.color: #222222" >> "$THEMERC" grep ^[^#] "$THEMERC" | grep -qiF -- .inactive.handle.bg.colorTo: || echo "window.inactive.handle.bg.colorTo: #222222" >> "$THEMERC" grep ^[^#] "$THEMERC" | grep -qiF -- .grip.bg: || echo "window.*.grip.bg: parentrelative" >> "$THEMERC" grep ^[^#] "$THEMERC" | grep -qiF -- .active.grip.bg.color: || echo "window.active.grip.bg.color: #222222" >> "$THEMERC" grep ^[^#] "$THEMERC" | grep -qiF -- .active.grip.bg.colorTo: || echo "window.active.grip.bg.colorTo: #222222" >> "$THEMERC" grep ^[^#] "$THEMERC" | grep -qiF -- .inactive.grip.bg.color: || echo "window.inactive.grip.bg.color: #222222" >> "$THEMERC" grep ^[^#] "$THEMERC" | grep -qiF -- .inactive.grip.bg.colorTo: || echo "window.inactive.grip.bg.colorTo: #222222" >> "$THEMERC" grep ^[^#] "$THEMERC" | grep -qiF -- .text.justify: || echo "window.*.text.justify: center" >> "$THEMERC" grep ^[^#] "$THEMERC" | grep -qiF -- .text.font: || echo "window.*.text.font: shadow=n:shadowtint=70:shadowoffset=1" >> "$THEMERC" fi getvalues getvaluesrc currvalues=("${ABG}|${ABGTO}|${AFG}|${ALINE}|${NBG}|${NBGTO}|${NFG}|${NLINE}|${GRAD,,}|${TXTJUST}|${PHEIGHT}|${PWIDTH}|${HANDLE}|${BORD}|${BEVEL}|${BUTTONS}|${FSIZE}|${FNAME}|${NDSLIMC}|${WEIGHT}|${SLANT}|") #notify-send.sh "$BEVEL" "${currvalues}" if [ ! -f "$USERTHEMES" ]; then mkdir -p "$HOME/.config/colorizer/openbox/" echo " ABG | ABGTO | AFG | ALINE | NBG | NBGTO | NFG | NLINE | GRAD |TXTJUST|PHEIGHT|PWIDTH|HANDLE|BORD|BEVEL|BUTTONS|FSIZE|FNAME|NDSLIMC|WEIGHT|SLANT|scheme_name" > "$USERTHEMES" fi #out+=("^sep($OBTHEME_LBL: $OBTHEME)") out+=(" $QUICK_TWEAKS,^checkout(tweaks)") out2+=("^tag(tweaks)") out2+=("^sep(Overall style)") out2+=("Large,obtctl tweak large;$me") out2+=("Big,obtctl tweak big;$me") out2+=("Normal,obtctl tweak normal;$me") out2+=("Small,obtctl tweak small;$me") out2+=("Tiny,obtctl tweak tiny;$me") out2+=("^sep()") out2+=(" $RANDOMIZE,obtctl randomizer;$me") out2+=("\"\"\"^sep($RAISED_OR_FLAT?)\"\"\"") [[ "$BEVEL" == "flat" ]] && out2+=(" $FLAT,obtctl raised 0;$me") || out2+=(" $FLAT,obtctl raised 0;$me") [[ "$BEVEL" == "raised" ]] && out2+=(" $RAISED,obtctl raised 1;$me") || out2+=(" $RAISED,obtctl raised 1;$me") [[ "$BEVEL" == "sunken" ]] && out2+=(" $SUNKEN,obtctl raised 2;$me") || out2+=(" $SUNKEN,obtctl raised 2;$me") out2+=("^sep($GRADIENT_TYPE)") [[ "$GRAD" == Solid ]] && out2+=(" $SOLID_COLOR,obtctl gradient_type solid;$me") || out2+=(" $SOLID_COLOR,obtctl gradient_type solid;$me") out2+=("^sep()") [[ "$GRAD" == Vertical ]] && out2+=(" $VERTICAL,obtctl gradient_type vertical;$me") || out2+=(" $VERTICAL,obtctl gradient_type vertical;$me") [[ "$GRAD" == Horizontal ]] && out2+=(" $HORIZONTAL,obtctl gradient_type horizontal;$me") || out2+=(" $HORIZONTAL,obtctl gradient_type horizontal;$me") [[ "$GRAD" == MirrorHorizontal ]] && out2+=(" $MIRRORHORIZONTAL,obtctl gradient_type mirrorhorizontal;$me") || out2+=(" $MIRRORHORIZONTAL,obtctl gradient_type mirrorhorizontal;$me") [[ "$GRAD" == SplitVertical ]] && out2+=(" $SPLITVERTICAL,obtctl gradient_type splitvertical;$me") || out2+=(" $SPLITVERTICAL,obtctl gradient_type splitvertical;$me") [[ "$GRAD" == Diagonal ]] && out2+=(" $DIAGONAL,obtctl gradient_type diagonal;$me") || out2+=(" $DIAGONAL,obtctl gradient_type diagonal;$me") [[ "$GRAD" == CrossDiagonal ]] && out2+=(" $CROSSDIAGONAL,obtctl gradient_type crossdiagonal;$me") || out2+=(" $CROSSDIAGONAL,obtctl gradient_type crossdiagonal;$me") [[ "$GRAD" == Pyramid ]] && out2+=(" $PYRAMID,obtctl gradient_type pyramid;$me") || out2+=(" $PYRAMID,obtctl gradient_type pyramid;$me") #### COLOR SCHEMES  out+=(" $THEMES,^checkout(schemes)") out2+=("^tag(schemes)") out2+=("^sep($THEMES)") out2+=("^sep($MONOCHROMATIC)") out2+=("^sep($CHOOSE_AND_PICK)") out2+=(" $LIGHTBG...,obtctl mono pick light") out2+=(" $DARKBG...,obtctl mono pick dark") out2+=("^sep($GENERATEFROMWP)") out2+=(" $LIGHTBG ,w2theme ob light;$me") out2+=(" $DARKBG ,w2theme ob dark;$me") out2+=("^sep()") out2+=(" $RANDOMIZE,obtctl randomizer;$me") out2+=("^sep($SYSTEM_THEMES)") n=1 while IFS="|" read -r abg abgto afg aline nbg nbgto nfg nline grad txtjust pheight pwidth handle bord bevel buttons fsize fname ndslimc weight slant scheme_name do ((n=n+1)) out2+=(" $(printf '%-20s' "${scheme_name}") inactive ,^checkout(schsys${n})") out3+=("^tag(schsys${n}") out3+=("^sep($THEME: ${scheme_name})") out3+=("^sep($APPLY)") out3+=("\"\"\" $APPLY_THEME\"\"\",obtctl applytheme sys ${n};$me") out3+=("^sep()") out3+=(" $APPLY_SCHEME ,obtctl applyscheme sys ${n};$me") done < <(tail -n +2 "$SYSTHEMES") out2+=("^sep($YOUR_THEMES)") out2+=(" $SAVE_CURRTHEME,obtctl savetheme '${currvalues}';$me") out2+=(" $OPEN_THEMEFILE,xdg-open $USERSCHEMES") out2+=("^sep()") n=1 while IFS="|" read -r abg abgto afg aline nbg nbgto nfg nline grad txtjust pheight pwidth handle bord bevel buttons fsize fname ndslimc weight slant scheme_name do ((n=n+1)) out2+=(" $(printf '%-20s' "${scheme_name}") inactive ,^checkout(sch${n})") out3+=("^tag(sch${n}") out3+=("^sep($THEME: ${scheme_name})") out3+=("^sep($APPLY)") out3+=("\"\"\" $APPLY_THEME\"\"\",obtctl applytheme usr ${n};$me") out3+=("^sep()") out3+=(" $APPLY_SCHEME ,obtctl applyscheme usr ${n};$me") out3+=("^sep($DELETE)") out3+=("󰗨 $DELETE_THEME: ${scheme_name},obtctl delscheme ${n};$me") done < <(tail -n +2 "$USERTHEMES") out+=("^sep($TITLEBAR)") out+=("󰛖 $TITLEBAR_FONT [ ${FNAME} ${FSIZE} ],^checkout(titletext)") out+=("󰧈 $PADDING [ $PHEIGHT $PWIDTH ],^checkout(padding)") out+=("    $BUTTONS_LBL,^checkout(tbuttons)") out+=("^sep($ACTIVE_WINDOW)") out+=(" $ACTIVE_BG,^pipe(mbclr '$ABG' obtctl clractivebg '${ACTIVE_BG}' '$me')") [[ ! -z "$ABGTO" ]] && out+=(" $ACTIVE_BG_TO,^pipe(mbclr '$ABGTO' obtctl clractivebgto '${ACTIVE_BG_TO}' '$me')") out+=(" title $TEXT_COLOR,^pipe(mbclr '$AFG' obtctl activetextcolor '${TEXT} ${ACTIVE_FG}' '$me')") out+=("^sep($INACTIVE_WINDOW)") out+=(" $INACTIVE_BG,^pipe(mbclr '$NBG' obtctl clrnormalbg '${INACTIVE_BG}' '$me')") [[ ! -z "$ABGTO" ]] && out+=(" $INACTIVE_BG_TO,^pipe(mbclr '$NBGTO' obtctl clrnormalbgto '${INACTIVE_BG_TO}' '$me')") out+=(" title $TEXT_COLOR,^pipe(mbclr '$NFG' obtctl inactivetextcolor '${TEXT} ${INACTIVE_FG}' '$me')") out+=("^sep()") [[ "$WEIGHT_INACT" =~ .*"old" ]] && out+=(" $BOLD,obtctl fontweight_inactive Normal;$me") || out+=(" $BOLD,obtctl fontweight_inactive Bold;$me") [[ "$SLANT_INACT" =~ .*"talic" ]] && out+=(" $ITALIC,obtctl fontslant_inactive Normal;$me") || out+=(" $ITALIC,obtctl fontslant_inactive Italic;$me") out+=("^sep(Gradient)") out+=("󰹸 $GRADIENT_TYPE [ ${GRAD} ],^checkout(gradient)") out+=(" $PRE_GRADIENTS,^pipe(mbgrad ob)") out+=(" $GRADIENT_REVERSE,obtctl activegradient '${ABGTO}' '${ABG}';$me") out+=("^sep($BORDER)") out+=(" $ACTIVE_BORDER,^pipe(mbclr '$ALINE' obtctl activeborderColor '${ACTIVE_BORDER_COLOR}' '$me')") out+=(" $INACTIVE_BORDER,^pipe(mbclr '$NLINE' obtctl inactiveborderColor '${INACTIVE_BORDER_COLOR}' '$me')") out+=("󰝣 $BORDER [ $BORD ],^checkout(border)") out+=("$HANDLEWIDTH [ $HANDLE ],^checkout(handlewidth)") #out+=("$ACTIVEHANDLE? [ $AHANDLE ],^checkout(handle)") if [ -f "${THEMERC}.bak" ]; then out+=("^sep($RESET)") out+=("󰁯 $RESET_THEME,^checkout(resettheme)") out2+=("^tag(resettheme)") out2+=("^sep($AREYOUSURE)") out2+=("$YES,obtctl resetMBcolors;$me") fi #out+=("Edit...,xdg-open ${THEMERC}") #out2+=("^tag(themes)") #out2+=("^sep(themes)") #for i in $(ls $HOME/.themes);do # if [ -f "$HOME/.themes/${i}/openbox-3/themerc" ]; then # out2+=("$i,obtctl theme $i;$me") # fi #done #TBUTTONS out2+=("^tag(tbuttons)") out2+=("^sep($BUTTONS_LBL)") out2+=("Tiny,obtctl buttons tiny;$me") out2+=("Normal,obtctl buttons normal;$me") out2+=("Bold,obtctl buttons bold;$me") out2+=("Dots,obtctl buttons dots;$me") out2+=("^sep()") out2+=("Big 12px,obtctl buttons big-12;$me") out2+=("Big 14px,obtctl buttons big-14;$me") out2+=("^sep($TEXTALIGN)") [[ "$TXTJUST" = left ]] && out2+=("綠  $LEFT,obtctl textjustify left;$me")||out2+=("祿  $LEFT,obtctl textjustify left;$me") [[ "$TXTJUST" = center ]] && out2+=("綠  $CENTER,obtctl textjustify center;$me")||out2+=("祿  $CENTER,obtctl textjustify center;$me") [[ "$TXTJUST" = right ]] && out2+=("綠  $RIGHT,obtctl textjustify right;$me")||out2+=("祿  $RIGHT,obtctl textjustify right;$me") out2+=("^sep($BUTTONS_LAYOUT)") [[ "$NDSLIMC" == NDSLIMC ]] && out2+=(" full NDSLIMC (default),obtctl ndslimc NDSLIMC;$me") || out2+=(" full NDSLIMC (default),obtctl ndslimc NDSLIMC;$me") [[ "$NDSLIMC" == NLIMC ]] && out2+=(" mini NLIMC,obtctl ndslimc NLIMC;$me") || out2+=(" mini NLIMC,obtctl ndslimc NLIMC;$me") [[ "$NDSLIMC" == LIMC ]] && out2+=(" mini (no icon) LIMC,obtctl ndslimc LIMC;$me") || out2+=(" mini (no icon) LIMC,obtctl ndslimc LIMC;$me") [[ "$NDSLIMC" == CMIL ]] && out2+=(" crazy CMIL,obtctl ndslimc CMIL;$me") || out2+=(" crazy CMIL,obtctl ndslimc CMIL;$me") out2+=("^sep($LEGEND)") out2+=("^sep(N: Window icon)") out2+=("^sep(L: Window label (Title))") out2+=("^sep(I: Iconify (Minimize))") out2+=("^sep(M: Maximize)") out2+=("^sep(C: Close)") out2+=("^sep(S: Shade (Roll up))") out2+=("^sep(D: Omnipresent (On all desktops))") #TEXT out2+=("^tag(titletext)") out2+=("^sep($TITLEBAR_FONT)") out2+=("$FONT... [ ${FNAME} ${FSIZE} ],mb-setfont obtitle;$me") out2+=("^sep($FONTSIZE)") out2+=("󰧴 $_INCREASE $((FSIZE+1)) px,fontctl ob_fontsize inc;$me") out2+=("󰧳 $_DECREASE $((FSIZE-1)) px,fontctl ob_fontsize dec;$me") out2+=("^sep()") sizes=(16 15 14 13 12 11 10 9 8) for i in "${sizes[@]}" do [[ "$FSIZE" == "$i" ]] && out2+=(" $i px,obtctl fontsize $i;$me") || out2+=(" $i px,obtctl fontsize $i;$me") done out2+=("^sep($FONTFAMILY)") 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 for fon in "${favfonts[@]}";do [[ "${FNAME}" == "$fon" ]] && out2+=(" ${fon},$me") || out2+=(" ${fon},obtctl fontfamily \"${fon}\";$me") done fi out2+=("^sep()") [[ "$WEIGHT" =~ .*"old" ]] && out2+=(" $BOLD,obtctl fontweight Normal;$me") || out2+=(" $BOLD,obtctl fontweight Bold;$me") [[ "$SLANT" =~ .*"talic" ]] && out2+=(" $ITALIC,obtctl fontslant Normal;$me") || out2+=(" $ITALIC,obtctl fontslant Italic;$me") #SHADOW out2+=("^sep($TEXTALIGN)") [[ "$TXTJUST" = left ]] && out2+=("綠  $LEFT,obtctl textjustify left;$me")||out2+=("祿  $LEFT,obtctl textjustify left;$me") [[ "$TXTJUST" = center ]] && out2+=("綠  $CENTER,obtctl textjustify center;$me")||out2+=("祿  $CENTER,obtctl textjustify center;$me") [[ "$TXTJUST" = right ]] && out2+=("綠  $RIGHT,obtctl textjustify right;$me")||out2+=("祿  $RIGHT,obtctl textjustify right;$me") out2+=("^sep()") out2+=("$SHADOW,^checkout(shadow)") out2+=("^tag(shadow)") out2+=("^sep($SHADOW)") out2+=("$NOSHADOW,obtctl shadow 0;$me") out2+=("^sep()") out2+=("$DARK,obtctl shadow 1;$me") out2+=("$LIGHT,obtctl shadow 2;$me") #PADDING out2+=("^tag(padding)") out2+=("^sep($VERTICAL)") out2+=("0,obtctl paddingHeight 0;$me") out2+=("^sep()") out2+=("1,obtctl paddingHeight 1;$me") out2+=("2,obtctl paddingHeight 2;$me") out2+=("3,obtctl paddingHeight 3;$me") out2+=("4,obtctl paddingHeight 4;$me") out2+=("5,obtctl paddingHeight 5;$me") out2+=("6,obtctl paddingHeight 6;$me") out2+=("8,obtctl paddingHeight 8;$me") out2+=("10,obtctl paddingHeight 10;$me") out2+=("12,obtctl paddingHeight 12;$me") out2+=("16,obtctl paddingHeight 16;$me") out2+=("20,obtctl paddingHeight 20;$me") out2+=("^sep($HORIZONTAL)") out2+=("0,obtctl paddingWidth 0;$me") out2+=("^sep()") out2+=("1,obtctl paddingWidth 1;$me") out2+=("2,obtctl paddingWidth 2;$me") out2+=("3,obtctl paddingWidth 3;$me") out2+=("4,obtctl paddingWidth 4;$me") out2+=("5,obtctl paddingWidth 5;$me") out2+=("6,obtctl paddingWidth 6;$me") out2+=("8,obtctl paddingWidth 8;$me") out2+=("10,obtctl paddingWidth 10;$me") out2+=("12,obtctl paddingWidth 12;$me") out2+=("16,obtctl paddingWidth 16;$me") out2+=("20,obtctl paddingWidth 20;$me") #BORDER out2+=("^tag(border)") out2+=("^sep($BORDER)") out2+=("0,obtctl borderWidth 0;$me") out2+=("^sep()") out2+=("1,obtctl borderWidth 1;$me") out2+=("2,obtctl borderWidth 2;$me") out2+=("3,obtctl borderWidth 3;$me") out2+=("4,obtctl borderWidth 4;$me") out2+=("5,obtctl borderWidth 5;$me") out2+=("6,obtctl borderWidth 6;$me") out2+=("8,obtctl borderWidth 8;$me") out2+=("10,obtctl borderWidth 10;$me") out2+=("12,obtctl borderWidth 12;$me") out2+=("16,obtctl borderWidth 16;$me") out2+=("20,obtctl borderWidth 20;$me") #GRADIENT out2+=("^tag(gradient)") out2+=("^sep($GRADIENT_TYPE)") [[ "$GRAD" == Solid ]] && out2+=(" $SOLID_COLOR,obtctl gradient_type solid;$me") || out2+=(" $SOLID_COLOR,obtctl gradient_type solid;$me") out2+=("^sep()") [[ "$GRAD" == Vertical ]] && out2+=(" $VERTICAL,obtctl gradient_type vertical;$me") || out2+=(" $VERTICAL,obtctl gradient_type vertical;$me") [[ "$GRAD" == Horizontal ]] && out2+=(" $HORIZONTAL,obtctl gradient_type horizontal;$me") || out2+=(" $HORIZONTAL,obtctl gradient_type horizontal;$me") [[ "$GRAD" == MirrorHorizontal ]] && out2+=(" $MIRRORHORIZONTAL,obtctl gradient_type mirrorhorizontal;$me") || out2+=(" $MIRRORHORIZONTAL,obtctl gradient_type mirrorhorizontal;$me") [[ "$GRAD" == SplitVertical ]] && out2+=(" $SPLITVERTICAL,obtctl gradient_type splitvertical;$me") || out2+=(" $SPLITVERTICAL,obtctl gradient_type splitvertical;$me") [[ "$GRAD" == Diagonal ]] && out2+=(" $DIAGONAL,obtctl gradient_type diagonal;$me") || out2+=(" $DIAGONAL,obtctl gradient_type diagonal;$me") [[ "$GRAD" == CrossDiagonal ]] && out2+=(" $CROSSDIAGONAL,obtctl gradient_type crossdiagonal;$me") || out2+=(" $CROSSDIAGONAL,obtctl gradient_type crossdiagonal;$me") [[ "$GRAD" == Pyramid ]] && out2+=(" $PYRAMID,obtctl gradient_type pyramid;$me") || out2+=(" $PYRAMID,obtctl gradient_type pyramid;$me") #HANDLE #out2+=("^tag(handle)") #out2+=("^sep($ACTIVEHANDLE)") #out2+=("$NO,obtctl activehandle no;$me") #out2+=("$YES,obtctl activehandle yes;$me") #out2+=("$GRIPONLY,obtctl activehandle grip;$me") #HANDLE WIDTH out2+=("^tag(handlewidth)") out2+=("^sep($HANDLEWIDTH)") out2+=("0,obtctl handlewidth 0;$me") out2+=("^sep()") out2+=("1,obtctl handlewidth 1;$me") out2+=("2,obtctl handlewidth 2;$me") out2+=("3,obtctl handlewidth 3;$me") out2+=("4,obtctl handlewidth 4;$me") out2+=("6,obtctl handlewidth 6;$me") out2+=("8,obtctl handlewidth 8;$me") out2+=("10,obtctl handlewidth 10;$me") else # Theme other than MBColors, we can only edit rc.xml getvaluesrc out+=("^sep($NOT_SUPORTED_OBTHEME)") out+=("^sep($UNLOCK)") out+=("$SWITCH_TO_MBCOLORS,obtctl theme MBcolors;$me") out+=("^sep($TITLEBAR_FONT)") out+=("$FONT... [ ${FNAME} ${FSIZE} ],mb-setfont obtitle;$me") out+=("^sep(font family)") 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 for fon in "${favfonts[@]}";do [[ "${FNAME}" == "$fon" ]] && out+=(" ${fon},$me") || out+=(" ${fon},obtctl fontfamily \"${fon}\";$me") done fi out+=("^sep()") [[ "$WEIGHT" =~ .*"old" ]] && out+=(" $BOLD,obtctl fontweight Normal;$me") || out+=(" $BOLD,obtctl fontweight Bold;$me") [[ "$SLANT" =~ .*"talic" ]] && out+=(" $ITALIC,obtctl fontslant Normal;$me") || out+=(" $ITALIC,obtctl fontslant Italic;$me") out+=("^sep()") out+=("$FONTSIZE [ $FSIZE px ],^checkout(obfsize)") out2+=("^tag(obfsize)") out2+=("^sep($FONTSIZE)") sizes=(16 15 14 13 12 11 10 9 8) for i in "${sizes[@]}" do [[ "$FSIZE" == "$i" ]] && out2+=(" $i px,obtctl fontsize $i;$me") || out2+=(" $i px,obtctl fontsize $i;$me") done out+=("^sep($BUTTONS_LAYOUT)") [[ "$NDSLIMC" == NDSLIMC ]] && out+=(" full NDSLIMC (default),obtctl ndslimc NDSLIMC;$me") || out+=(" full NDSLIMC (default),obtctl ndslimc NDSLIMC;$me") [[ "$NDSLIMC" == NLIMC ]] && out+=(" mini NLIMC,obtctl ndslimc NLIMC;$me") || out+=(" mini NLIMC,obtctl ndslimc NLIMC;$me") [[ "$NDSLIMC" == LIMC ]] && out+=(" mini (no icon) LIMC,obtctl ndslimc LIMC;$me") || out+=(" mini (no icon) LIMC,obtctl ndslimc LIMC;$me") [[ "$NDSLIMC" == CMIL ]] && out+=(" crazy CMIL,obtctl ndslimc CMIL;$me") || out+=(" crazy CMIL,obtctl ndslimc CMIL;$me") out+=("^sep($LEGEND)") out+=("^sep(N: Window icon)") out+=("^sep(L: Window label (Title))") out+=("^sep(I: Iconify (Minimize))") out+=("^sep(M: Maximize)") out+=("^sep(C: Close)") out+=("^sep(S: Shade (Roll up))") out+=("^sep(D: Omnipresent (On all desktops))") fi ### RUN if [[ "$1" == "-s" ]]; then . /usr/share/mb-jgtools/pipemenu-standalone.cfg . $HOME/.config/mabox/mabox.conf source $HOME/.config/colorizer/colorizer.conf 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_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 + 270 + jgtools_padding)) MENU_PADDING_TOP=$((jgtools_padding + 150)) # WALLPAPER IMAGE 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)),$((jgtools_padding)),270,150,4,left,top,,,${THUMB} @icon,,$((jgtools_padding)),$((jgtools_padding)),270,150,4,left,top,,,/usr/share/mabox-colorizer/img/colorizer-ob.png @rect,,$((jgtools_padding)),$((jgtools_padding + 124)),270,22,0,left,top,#222222 20,#222222 70, @text,,$((jgtools_padding + 138)),$((jgtools_padding + 120)),130,30,0,left,top,#FFFFFF ,${WINCLR},Colorizer Openbox $(printf '%s\n' "${out[@]}") $(printf '%s\n' "${out2[@]}") $(printf '%s\n' "${out3[@]}") EOF jgmenu --config-file=${CONFIG_FILE} --csv-file=${MENU_ITEMS} 2>/dev/null exit 0 fi printf '%s\n' "${out[@]}" printf '%s\n' "${out2[@]}" printf '%s\n' "${out3[@]}"