handle OB rc.xml font and button layout other OB themes

This commit is contained in:
Daniel Napora 2023-08-01 15:03:46 +02:00
parent 6523ccd67a
commit 07d4274ac3
2 changed files with 94 additions and 50 deletions

View File

@ -47,6 +47,7 @@ case "$LANG" in
INACTIVE_BG="Tło nieaktywnego okna" INACTIVE_BG="Tło nieaktywnego okna"
TITLEBAR_TEXT="Tekst paska tytułowego" TITLEBAR_TEXT="Tekst paska tytułowego"
FONT="Czcionka" FONT="Czcionka"
FONTSIZE="Rozmiar czcionki"
BOLD="Pogrubienie" BOLD="Pogrubienie"
ITALIC="Kursywa" ITALIC="Kursywa"
TEXTALIGN="Wyrównanie tytułu" TEXTALIGN="Wyrównanie tytułu"
@ -68,6 +69,8 @@ case "$LANG" in
RAISED="uniesiony - <b>raised</b>" RAISED="uniesiony - <b>raised</b>"
SUNKEN="wklęsły - <b>sunken</b>" SUNKEN="wklęsły - <b>sunken</b>"
BUTTONS="Przyciski" BUTTONS="Przyciski"
BUTTONS_LAYOUT="Układ przycisków"
LEGEND="Legenda"
GRADIENT_TYPE="Typ Gradientu" GRADIENT_TYPE="Typ Gradientu"
SOLID_COLOR="Jednolity kolor (brak gradientu)" SOLID_COLOR="Jednolity kolor (brak gradientu)"
PRE_GRADIENTS="Gotowe gradienty" PRE_GRADIENTS="Gotowe gradienty"
@ -105,6 +108,7 @@ case "$LANG" in
TITLEBAR_TEXT="Title Bar Text" TITLEBAR_TEXT="Title Bar Text"
TITLEBAR_FONT="Title Bar Font" TITLEBAR_FONT="Title Bar Font"
FONT="Font" FONT="Font"
FONTSIZE="Font size"
BOLD="Bold" BOLD="Bold"
ITALIC="Italic" ITALIC="Italic"
TEXTALIGN="Title align" TEXTALIGN="Title align"
@ -126,6 +130,8 @@ case "$LANG" in
RAISED="raised" RAISED="raised"
SUNKEN="sunken" SUNKEN="sunken"
BUTTONS="Buttons" BUTTONS="Buttons"
BUTTONS_LAYOUT="Buttons Layout"
LEGEND="Legend"
GRADIENT_TYPE="Gradient type" GRADIENT_TYPE="Gradient type"
SPLITVERTICAL="SplitVertical" SPLITVERTICAL="SplitVertical"
MIRRORHORIZONTAL="MirrorHorizontal" MIRRORHORIZONTAL="MirrorHorizontal"
@ -154,6 +160,41 @@ case "$LANG" in
;; ;;
esac 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 WINRAISED REST <<< "$(grep .title.bg: ${THEMERC} | cut -d':' -f2)"
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")
SLANT=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:slant' "$cfg")
}
if [[ -f "$THEMERC" ]] && [[ "$OBTHEME" = "MBcolor"* ]]; then if [[ -f "$THEMERC" ]] && [[ "$OBTHEME" = "MBcolor"* ]]; then
if [ ! -f "${THEMERC}.bak" ]; then if [ ! -f "${THEMERC}.bak" ]; then
@ -185,40 +226,10 @@ if [[ -f "$THEMERC" ]] && [[ "$OBTHEME" = "MBcolor"* ]]; then
grep ^[^#] "$THEMERC" | grep -qiF -- .text.font: || echo "window.*.text.font: shadow=n:shadowtint=70:shadowoffset=1" >> "$THEMERC" grep ^[^#] "$THEMERC" | grep -qiF -- .text.font: || echo "window.*.text.font: shadow=n:shadowtint=70:shadowoffset=1" >> "$THEMERC"
fi fi
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 WINRAISED REST <<< "$(grep .title.bg: ${THEMERC} | cut -d':' -f2)"
read AHBG <<< "$(grep .active.handle.bg.color: ${THEMERC} | cut -d':' -f2)"
if [ "$ABG" == "$AHBG" ];then
AHANDLE="yes"
else
AHANDLE="no"
fi
#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")
SLANT=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:slant' "$cfg")
}
getvalues getvalues
getvaluesrc
out+=("^sep($OBTHEME_LBL: <i>$OBTHEME</i>)") out+=("^sep($OBTHEME_LBL: <i>$OBTHEME</i>)")
@ -280,12 +291,12 @@ out2+=("Dots,obtctl buttons dots;$me")
out2+=("^sep()") out2+=("^sep()")
out2+=("Big 12px,obtctl buttons big-12;$me") out2+=("Big 12px,obtctl buttons big-12;$me")
out2+=("Big 14px,obtctl buttons big-14;$me") out2+=("Big 14px,obtctl buttons big-14;$me")
out2+=("^sep(TITLE_LAYOUT)") out2+=("^sep($BUTTONS_LAYOUT)")
[[ "$NDSLIMC" == NDSLIMC ]] && out2+=("<big>綠</big> <tt>full </tt> <b>NDSLIMC</b> (default),obtctl ndslimc NDSLIMC;$me") || out2+=("<big>祿</big> <tt>full </tt> <b>NDSLIMC</b> (default),obtctl ndslimc NDSLIMC;$me") [[ "$NDSLIMC" == NDSLIMC ]] && out2+=("<big>綠</big> <tt>full </tt> <b>NDSLIMC</b> (default),obtctl ndslimc NDSLIMC;$me") || out2+=("<big>祿</big> <tt>full </tt> <b>NDSLIMC</b> (default),obtctl ndslimc NDSLIMC;$me")
[[ "$NDSLIMC" == NLIMC ]] && out2+=("<big>綠</big> <tt>mini </tt> <b>NLIMC</b>,obtctl ndslimc NLIMC;$me") || out2+=("<big>祿</big> <tt>mini </tt> <b>NLIMC</b>,obtctl ndslimc NLIMC;$me") [[ "$NDSLIMC" == NLIMC ]] && out2+=("<big>綠</big> <tt>mini </tt> <b>NLIMC</b>,obtctl ndslimc NLIMC;$me") || out2+=("<big>祿</big> <tt>mini </tt> <b>NLIMC</b>,obtctl ndslimc NLIMC;$me")
[[ "$NDSLIMC" == LIMC ]] && out2+=("<big>綠</big> <tt>mini (no icon)</tt> <b>LIMC</b>,obtctl ndslimc LIMC;$me") || out2+=("<big>祿</big> <tt>mini (no icon)</tt> <b>LIMC</b>,obtctl ndslimc LIMC;$me") [[ "$NDSLIMC" == LIMC ]] && out2+=("<big>綠</big> <tt>mini (no icon)</tt> <b>LIMC</b>,obtctl ndslimc LIMC;$me") || out2+=("<big>祿</big> <tt>mini (no icon)</tt> <b>LIMC</b>,obtctl ndslimc LIMC;$me")
[[ "$NDSLIMC" == CMIL ]] && out2+=("<big>綠</big> <tt>crazy </tt> <b>CMIL</b>,obtctl ndslimc CMIL;$me") || out2+=("<big>祿</big> <tt>crazy </tt> <b>CMIL</b>,obtctl ndslimc CMIL;$me") [[ "$NDSLIMC" == CMIL ]] && out2+=("<big>綠</big> <tt>crazy </tt> <b>CMIL</b>,obtctl ndslimc CMIL;$me") || out2+=("<big>祿</big> <tt>crazy </tt> <b>CMIL</b>,obtctl ndslimc CMIL;$me")
out2+=("^sep(<small>LEGEND</small>)") out2+=("^sep(<small>$LEGEND</small>)")
out2+=("^sep(N:<small> Window icon</small>)") out2+=("^sep(N:<small> Window icon</small>)")
out2+=("^sep(L:<small> Window label (Title)</small>)") out2+=("^sep(L:<small> Window label (Title)</small>)")
out2+=("^sep(I:<small> Iconify (Minimize)</small>)") out2+=("^sep(I:<small> Iconify (Minimize)</small>)")
@ -314,7 +325,7 @@ done
out2+=("^sep()") out2+=("^sep()")
[[ "$WEIGHT" =~ .*"old" ]] && out2+=("<big></big> <b>$BOLD</b>,obtctl fontweight Normal;$me") || out2+=("<big></big> <b>$BOLD</b>,obtctl fontweight Bold;$me") [[ "$WEIGHT" =~ .*"old" ]] && out2+=("<big></big> <b>$BOLD</b>,obtctl fontweight Normal;$me") || out2+=("<big></big> <b>$BOLD</b>,obtctl fontweight Bold;$me")
[[ "$SLANT" =~ .*"talic" ]] && out2+=("<big></big> <i>$ITALIC</i>,obtctl fontslant Normal;$me") || out2+=("<big></big> <i>$ITALIC</i>,obtctl fontslant Italic;$me") [[ "$SLANT" =~ .*"talic" ]] && out2+=("<big></big> <i>$ITALIC</i>,obtctl fontslant Normal;$me") || out2+=("<big></big> <i>$ITALIC</i>,obtctl fontslant Italic;$me")
out2+=("^sep(size)") out2+=("^sep($FONTSIZE)")
sizes=(8 9 10 11 12 13 14 15 16) sizes=(8 9 10 11 12 13 14 15 16)
for i in "${sizes[@]}" for i in "${sizes[@]}"
do do
@ -416,14 +427,44 @@ out2+=("6,obtctl handlewidth 6;$me")
out2+=("8,obtctl handlewidth 8;$me") out2+=("8,obtctl handlewidth 8;$me")
out2+=("10,obtctl handlewidth 10;$me") out2+=("10,obtctl handlewidth 10;$me")
else else # Theme other than MBColors, we can only edit rc.xml
getvaluesrc
out+=("^sep($NOT_SUPORTED_OBTHEME)") out+=("^sep($NOT_SUPORTED_OBTHEME)")
out+=("$SWITCH_TO_MBCOLORS,obtctl theme MBcolors;$me") out+=("$SWITCH_TO_MBCOLORS,obtctl theme MBcolors;$me")
#for i in $(ls $HOME/.themes);do out+=("^sep($TITLEBAR_FONT)")
#if [ -f "$HOME/.themes/${i}/openbox-3/themerc" ]; then out+=("$FONT... [ <b> ${FNAME} ${FSIZE} </b> ],mb-setfont obtitle;$me")
#out+=("$i,obtctl theme $i;$me") out+=("^sep(font family)")
#fi fonts=("Noto Sans" "DejaVu Serif" "Roboto Light" "Inconsolata" "Ubuntu" "Source Code Pro")
#done for i in "${fonts[@]}"
do
[[ "$FNAME" == "$i" ]] && out+=("<big>綠</big> <span size=\"large\" font_family=\"${i}\">$i</span>,$me") || out+=("<big>祿</big> <span size=\"large\" font_family=\"${i}\">$i</span>,obtctl fontfamily \"${i}\";$me")
done
out+=("^sep()")
[[ "$WEIGHT" =~ .*"old" ]] && out+=("<big></big> <b>$BOLD</b>,obtctl fontweight Normal;$me") || out+=("<big></big> <b>$BOLD</b>,obtctl fontweight Bold;$me")
[[ "$SLANT" =~ .*"talic" ]] && out+=("<big></big> <i>$ITALIC</i>,obtctl fontslant Normal;$me") || out+=("<big></big> <i>$ITALIC</i>,obtctl fontslant Italic;$me")
out+=("^sep()")
out+=("$FONTSIZE [ <b>$FSIZE px</b> ],^checkout(obfsize)")
out2+=("^tag(obfsize)")
out2+=("^sep($FONTSIZE)")
sizes=(8 9 10 11 12 13 14 15 16)
for i in "${sizes[@]}"
do
[[ "$FSIZE" == "$i" ]] && out2+=("<big>綠</big> <b>$i px</b>,obtctl fontsize $i;$me") || out2+=("<big>祿</big> $i px,obtctl fontsize $i;$me")
done
out+=("^sep($BUTTONS_LAYOUT)")
[[ "$NDSLIMC" == NDSLIMC ]] && out+=("<big>綠</big> <tt>full </tt> <b>NDSLIMC</b> (default),obtctl ndslimc NDSLIMC;$me") || out+=("<big>祿</big> <tt>full </tt> <b>NDSLIMC</b> (default),obtctl ndslimc NDSLIMC;$me")
[[ "$NDSLIMC" == NLIMC ]] && out+=("<big>綠</big> <tt>mini </tt> <b>NLIMC</b>,obtctl ndslimc NLIMC;$me") || out+=("<big>祿</big> <tt>mini </tt> <b>NLIMC</b>,obtctl ndslimc NLIMC;$me")
[[ "$NDSLIMC" == LIMC ]] && out+=("<big>綠</big> <tt>mini (no icon)</tt> <b>LIMC</b>,obtctl ndslimc LIMC;$me") || out+=("<big>祿</big> <tt>mini (no icon)</tt> <b>LIMC</b>,obtctl ndslimc LIMC;$me")
[[ "$NDSLIMC" == CMIL ]] && out+=("<big>綠</big> <tt>crazy </tt> <b>CMIL</b>,obtctl ndslimc CMIL;$me") || out+=("<big>祿</big> <tt>crazy </tt> <b>CMIL</b>,obtctl ndslimc CMIL;$me")
out+=("^sep(<small>$LEGEND</small>)")
out+=("^sep(N:<small> Window icon</small>)")
out+=("^sep(L:<small> Window label (Title)</small>)")
out+=("^sep(I:<small> Iconify (Minimize)</small>)")
out+=("^sep(M:<small> Maximize</small>)")
out+=("^sep(C:<small> Close</small>)")
out+=("^sep(S:<small> Shade (Roll up)</small>)")
out+=("^sep(D:<small> Omnipresent (On all desktops)</small>)")
fi fi
### RUN ### RUN

View File

@ -3,15 +3,18 @@
OBTHEME=$(awk '/<theme>/ {while (getline n) {if (match(n, /<name>/)) OBTHEME=$(awk '/<theme>/ {while (getline n) {if (match(n, /<name>/))
{l=n; exit}}} END {split(l, a, "[<>]"); print a[3]}' "$HOME/.config/openbox/rc.xml") {l=n; exit}}} END {split(l, a, "[<>]"); print a[3]}' "$HOME/.config/openbox/rc.xml")
#echo "$OBTHEME" #echo "$OBTHEME"
if [[ $OBTHEME = MBcolor* ]];then
#switch to MBcolors theme
THEMEDIR="$HOME/.themes/$OBTHEME/openbox-3" THEMEDIR="$HOME/.themes/$OBTHEME/openbox-3"
THEMERC="$HOME/.themes/$OBTHEME/openbox-3/themerc" THEMERC="$HOME/.themes/$OBTHEME/openbox-3/themerc"
else
xmlstarlet ed -L -N o="http://openbox.org/3.4/rc" -u '/o:openbox_config/o:theme/o:name' -v "MBcolors" "$HOME/.config/openbox/rc.xml" #if [[ $OBTHEME = MBcolor* ]];then
THEMEDIR="$HOME/.themes/MBcolors/openbox-3" #switch to MBcolors theme
THEMERC="$HOME/.themes/MBcolors/openbox-3/themerc" # THEMEDIR="$HOME/.themes/$OBTHEME/openbox-3"
fi # THEMERC="$HOME/.themes/$OBTHEME/openbox-3/themerc"
# else
# xmlstarlet ed -L -N o="http://openbox.org/3.4/rc" -u '/o:openbox_config/o:theme/o:name' -v "MBcolors" "$HOME/.config/openbox/rc.xml"
# THEMEDIR="$HOME/.themes/MBcolors/openbox-3"
# THEMERC="$HOME/.themes/MBcolors/openbox-3/themerc"
#fi
MBCOLORSDIR="$HOME"/.themes/MBcolors/openbox-3/ MBCOLORSDIR="$HOME"/.themes/MBcolors/openbox-3/