From b21abf96561d1ced6d4ba6ffacbfbb80456d14d2 Mon Sep 17 00:00:00 2001 From: Daniel Napora Date: Thu, 5 Feb 2026 01:58:08 +0100 Subject: [PATCH] upload --- Makefile | 16 + TODO.md | 9 + bin/cavactl | 106 ++ bin/checkupdates.sh | 139 ++ bin/colorizer | 528 +++++ bin/colorizer-cava | 235 +++ bin/colorizer-conky | 591 ++++++ bin/colorizer-fonts | 414 ++++ bin/colorizer-menus | 643 +++++++ bin/colorizer-ob | 731 +++++++ bin/colorizer-pyradio | 247 +++ bin/conky_getactiveinet.sh | 27 + bin/conkyctl | 1694 +++++++++++++++++ bin/conkymountpoints.sh | 25 + bin/convert.lua | 161 ++ bin/fontctl | 148 ++ bin/gtkcolors.py | 119 ++ bin/gtkctl | 72 + bin/jgctl | 531 ++++++ bin/mbclr | 282 +++ bin/mbgrad | 122 ++ bin/obtctl | 943 +++++++++ bin/papirus-folder-color.sh | 275 +++ bin/pcmanwp | 23 + bin/prtctl | 161 ++ bin/quote.sh | 57 + bin/randomizer | 109 ++ bin/w2theme | 543 ++++++ bin/ycolorizer | 10 + removecolorizer | 9 + share/applications/colorizer-menu.desktop | 12 + share/applications/colorizer.desktop | 12 + share/applications/pcmanwp.desktop | 12 + .../icons/hicolor/128x128/apps/colorizer.png | Bin 0 -> 373 bytes share/icons/hicolor/16x16/apps/colorizer.png | Bin 0 -> 283 bytes share/icons/hicolor/22x22/apps/colorizer.png | Bin 0 -> 292 bytes share/icons/hicolor/24x24/apps/colorizer.png | Bin 0 -> 221 bytes share/icons/hicolor/32x32/apps/colorizer.png | Bin 0 -> 304 bytes share/icons/hicolor/48x48/apps/colorizer.png | Bin 0 -> 226 bytes share/icons/hicolor/64x64/apps/colorizer.png | Bin 0 -> 313 bytes share/icons/hicolor/96x96/apps/colorizer.png | Bin 0 -> 251 bytes .../icons/hicolor/scalable/apps/colorizer.svg | 92 + share/mabox-colorizer/colors.list | 24 + share/mabox-colorizer/colorschemes/conky.csv | 12 + share/mabox-colorizer/colorschemes/menus.csv | 10 + share/mabox-colorizer/colorschemes/ob.csv | 11 + share/mabox-colorizer/fonts.list | 11 + share/mabox-colorizer/gradients_all.inc | 362 ++++ share/mabox-colorizer/help/css/w3.css | 235 +++ share/mabox-colorizer/help/en.html | 1001 ++++++++++ share/mabox-colorizer/help/img/bold.png | Bin 0 -> 199 bytes share/mabox-colorizer/help/img/colorizer.png | Bin 0 -> 313 bytes .../help/img/crossdiagonal.png | Bin 0 -> 8212 bytes share/mabox-colorizer/help/img/diagonal.png | Bin 0 -> 6321 bytes share/mabox-colorizer/help/img/dots.png | Bin 0 -> 144 bytes share/mabox-colorizer/help/img/flat.png | Bin 0 -> 3544 bytes share/mabox-colorizer/help/img/horizontal.png | Bin 0 -> 2822 bytes .../help/img/mirrorhorizontal.png | Bin 0 -> 3664 bytes share/mabox-colorizer/help/img/normal.png | Bin 0 -> 167 bytes share/mabox-colorizer/help/img/pyramid.png | Bin 0 -> 7900 bytes share/mabox-colorizer/help/img/solid.png | Bin 0 -> 2926 bytes .../help/img/splitvertical.png | Bin 0 -> 2641 bytes share/mabox-colorizer/help/img/theme.sh.webp | Bin 0 -> 8898 bytes share/mabox-colorizer/help/img/tiny.png | Bin 0 -> 185 bytes share/mabox-colorizer/help/img/vertical.png | Bin 0 -> 2134 bytes share/mabox-colorizer/help/pl.html | 1028 ++++++++++ share/mabox-colorizer/img/colorizer-ob.png | Bin 0 -> 4698 bytes share/mabox-colorizer/img/colorizer.png | Bin 0 -> 2188 bytes share/mabox-colorizer/readable_colors.csv | 13 + .../themes/MBcolors/openbox-3/bullet.xbm | 4 + .../themes/MBcolors/openbox-3/close.xbm | 4 + .../themes/MBcolors/openbox-3/desk.xbm | 4 + .../MBcolors/openbox-3/desk_toggled.xbm | 4 + .../themes/MBcolors/openbox-3/iconify.xbm | 4 + .../themes/MBcolors/openbox-3/max.xbm | 4 + .../themes/MBcolors/openbox-3/max_toggled.xbm | 4 + .../themes/MBcolors/openbox-3/shade.xbm | 4 + .../MBcolors/openbox-3/shade_toggled.xbm | 4 + .../themes/MBcolors/openbox-3/themerc | 77 + .../themes/obbuttons/big-12/close.xbm | 5 + .../themes/obbuttons/big-12/close_hover.xbm | 5 + .../themes/obbuttons/big-12/close_pressed.xbm | 5 + .../themes/obbuttons/big-12/desk.xbm | 5 + .../themes/obbuttons/big-12/desk_hover.xbm | 5 + .../themes/obbuttons/big-12/desk_pressed.xbm | 5 + .../themes/obbuttons/big-12/desk_toggled.xbm | 5 + .../obbuttons/big-12/desk_toggled_hover.xbm | 5 + .../obbuttons/big-12/desk_toggled_pressed.xbm | 5 + .../themes/obbuttons/big-12/iconify.xbm | 5 + .../themes/obbuttons/big-12/iconify_hover.xbm | 5 + .../obbuttons/big-12/iconify_pressed.xbm | 5 + .../themes/obbuttons/big-12/max.xbm | 5 + .../themes/obbuttons/big-12/max_hover.xbm | 5 + .../themes/obbuttons/big-12/max_toggled.xbm | 5 + .../obbuttons/big-12/max_toggled_hover.xbm | 5 + .../themes/obbuttons/big-12/shade.xbm | 5 + .../themes/obbuttons/big-12/shade_hover.xbm | 5 + .../themes/obbuttons/big-12/shade_pressed.xbm | 5 + .../themes/obbuttons/big-12/shade_toggled.xbm | 5 + .../obbuttons/big-12/shade_toggled_hover.xbm | 5 + .../themes/obbuttons/big-14/close.xbm | 6 + .../themes/obbuttons/big-14/close_hover.xbm | 6 + .../themes/obbuttons/big-14/close_pressed.xbm | 6 + .../themes/obbuttons/big-14/desk.xbm | 6 + .../themes/obbuttons/big-14/desk_hover.xbm | 6 + .../themes/obbuttons/big-14/desk_pressed.xbm | 6 + .../themes/obbuttons/big-14/desk_toggled.xbm | 6 + .../obbuttons/big-14/desk_toggled_hover.xbm | 6 + .../obbuttons/big-14/desk_toggled_pressed.xbm | 6 + .../themes/obbuttons/big-14/iconify.xbm | 6 + .../themes/obbuttons/big-14/iconify_hover.xbm | 6 + .../obbuttons/big-14/iconify_pressed.xbm | 6 + .../themes/obbuttons/big-14/max.xbm | 6 + .../themes/obbuttons/big-14/max_hover.xbm | 6 + .../themes/obbuttons/big-14/max_toggled.xbm | 6 + .../obbuttons/big-14/max_toggled_hover.xbm | 6 + .../themes/obbuttons/big-14/shade.xbm | 6 + .../themes/obbuttons/big-14/shade_hover.xbm | 6 + .../themes/obbuttons/big-14/shade_pressed.xbm | 6 + .../themes/obbuttons/big-14/shade_toggled.xbm | 6 + .../obbuttons/big-14/shade_toggled_hover.xbm | 6 + .../themes/obbuttons/bold/close.xbm | 4 + .../themes/obbuttons/bold/desk.xbm | 4 + .../themes/obbuttons/bold/desk_toggled.xbm | 4 + .../themes/obbuttons/bold/iconify.xbm | 4 + .../themes/obbuttons/bold/max.xbm | 4 + .../themes/obbuttons/bold/max_toggled.xbm | 4 + .../themes/obbuttons/bold/shade.xbm | 4 + .../themes/obbuttons/bold/shade_toggled.xbm | 4 + .../themes/obbuttons/dots/bullet.xbm | 5 + .../themes/obbuttons/dots/close.xbm | 5 + .../themes/obbuttons/dots/desk.xbm | 5 + .../themes/obbuttons/dots/desk_toggled.xbm | 5 + .../themes/obbuttons/dots/iconify.xbm | 5 + .../themes/obbuttons/dots/max.xbm | 5 + .../themes/obbuttons/dots/max_toggled.xbm | 5 + .../themes/obbuttons/dots/shade.xbm | 5 + .../themes/obbuttons/dots/shade_toggled.xbm | 5 + .../themes/obbuttons/normal/bullet.xbm | 4 + .../themes/obbuttons/normal/close.xbm | 4 + .../themes/obbuttons/normal/desk.xbm | 4 + .../themes/obbuttons/normal/desk_toggled.xbm | 4 + .../themes/obbuttons/normal/iconify.xbm | 4 + .../themes/obbuttons/normal/max.xbm | 4 + .../themes/obbuttons/normal/max_toggled.xbm | 4 + .../themes/obbuttons/normal/shade.xbm | 4 + .../themes/obbuttons/normal/shade_toggled.xbm | 4 + .../themes/obbuttons/tiny/bullet.xbm | 4 + .../themes/obbuttons/tiny/close.xbm | 4 + .../themes/obbuttons/tiny/desk.xbm | 4 + .../themes/obbuttons/tiny/desk_toggled.xbm | 4 + .../themes/obbuttons/tiny/iconify.xbm | 4 + .../themes/obbuttons/tiny/max.xbm | 4 + .../themes/obbuttons/tiny/max_toggled.xbm | 4 + .../themes/obbuttons/tiny/shade.xbm | 4 + .../themes/obbuttons/tiny/shade_toggled.xbm | 4 + 156 files changed, 12298 insertions(+) create mode 100644 Makefile create mode 100644 TODO.md create mode 100755 bin/cavactl create mode 100755 bin/checkupdates.sh create mode 100755 bin/colorizer create mode 100755 bin/colorizer-cava create mode 100755 bin/colorizer-conky create mode 100755 bin/colorizer-fonts create mode 100755 bin/colorizer-menus create mode 100755 bin/colorizer-ob create mode 100755 bin/colorizer-pyradio create mode 100755 bin/conky_getactiveinet.sh create mode 100755 bin/conkyctl create mode 100755 bin/conkymountpoints.sh create mode 100755 bin/convert.lua create mode 100755 bin/fontctl create mode 100755 bin/gtkcolors.py create mode 100755 bin/gtkctl create mode 100755 bin/jgctl create mode 100755 bin/mbclr create mode 100755 bin/mbgrad create mode 100755 bin/obtctl create mode 100755 bin/papirus-folder-color.sh create mode 100755 bin/pcmanwp create mode 100755 bin/prtctl create mode 100755 bin/quote.sh create mode 100755 bin/randomizer create mode 100755 bin/w2theme create mode 100755 bin/ycolorizer create mode 100644 removecolorizer create mode 100644 share/applications/colorizer-menu.desktop create mode 100644 share/applications/colorizer.desktop create mode 100644 share/applications/pcmanwp.desktop create mode 100644 share/icons/hicolor/128x128/apps/colorizer.png create mode 100644 share/icons/hicolor/16x16/apps/colorizer.png create mode 100644 share/icons/hicolor/22x22/apps/colorizer.png create mode 100644 share/icons/hicolor/24x24/apps/colorizer.png create mode 100644 share/icons/hicolor/32x32/apps/colorizer.png create mode 100644 share/icons/hicolor/48x48/apps/colorizer.png create mode 100644 share/icons/hicolor/64x64/apps/colorizer.png create mode 100644 share/icons/hicolor/96x96/apps/colorizer.png create mode 100644 share/icons/hicolor/scalable/apps/colorizer.svg create mode 100644 share/mabox-colorizer/colors.list create mode 100644 share/mabox-colorizer/colorschemes/conky.csv create mode 100644 share/mabox-colorizer/colorschemes/menus.csv create mode 100644 share/mabox-colorizer/colorschemes/ob.csv create mode 100644 share/mabox-colorizer/fonts.list create mode 100644 share/mabox-colorizer/gradients_all.inc create mode 100644 share/mabox-colorizer/help/css/w3.css create mode 100644 share/mabox-colorizer/help/en.html create mode 100644 share/mabox-colorizer/help/img/bold.png create mode 100644 share/mabox-colorizer/help/img/colorizer.png create mode 100644 share/mabox-colorizer/help/img/crossdiagonal.png create mode 100644 share/mabox-colorizer/help/img/diagonal.png create mode 100644 share/mabox-colorizer/help/img/dots.png create mode 100644 share/mabox-colorizer/help/img/flat.png create mode 100644 share/mabox-colorizer/help/img/horizontal.png create mode 100644 share/mabox-colorizer/help/img/mirrorhorizontal.png create mode 100644 share/mabox-colorizer/help/img/normal.png create mode 100644 share/mabox-colorizer/help/img/pyramid.png create mode 100644 share/mabox-colorizer/help/img/solid.png create mode 100644 share/mabox-colorizer/help/img/splitvertical.png create mode 100644 share/mabox-colorizer/help/img/theme.sh.webp create mode 100644 share/mabox-colorizer/help/img/tiny.png create mode 100644 share/mabox-colorizer/help/img/vertical.png create mode 100644 share/mabox-colorizer/help/pl.html create mode 100644 share/mabox-colorizer/img/colorizer-ob.png create mode 100644 share/mabox-colorizer/img/colorizer.png create mode 100644 share/mabox-colorizer/readable_colors.csv create mode 100644 share/mabox-colorizer/themes/MBcolors/openbox-3/bullet.xbm create mode 100644 share/mabox-colorizer/themes/MBcolors/openbox-3/close.xbm create mode 100644 share/mabox-colorizer/themes/MBcolors/openbox-3/desk.xbm create mode 100644 share/mabox-colorizer/themes/MBcolors/openbox-3/desk_toggled.xbm create mode 100644 share/mabox-colorizer/themes/MBcolors/openbox-3/iconify.xbm create mode 100644 share/mabox-colorizer/themes/MBcolors/openbox-3/max.xbm create mode 100644 share/mabox-colorizer/themes/MBcolors/openbox-3/max_toggled.xbm create mode 100644 share/mabox-colorizer/themes/MBcolors/openbox-3/shade.xbm create mode 100644 share/mabox-colorizer/themes/MBcolors/openbox-3/shade_toggled.xbm create mode 100644 share/mabox-colorizer/themes/MBcolors/openbox-3/themerc create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/close.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/close_hover.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/close_pressed.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/desk.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/desk_hover.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/desk_pressed.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/desk_toggled.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/desk_toggled_hover.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/desk_toggled_pressed.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/iconify.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/iconify_hover.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/iconify_pressed.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/max.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/max_hover.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/max_toggled.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/max_toggled_hover.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/shade.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/shade_hover.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/shade_pressed.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/shade_toggled.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-12/shade_toggled_hover.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/close.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/close_hover.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/close_pressed.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/desk.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/desk_hover.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/desk_pressed.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/desk_toggled.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/desk_toggled_hover.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/desk_toggled_pressed.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/iconify.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/iconify_hover.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/iconify_pressed.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/max.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/max_hover.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/max_toggled.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/max_toggled_hover.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/shade.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/shade_hover.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/shade_pressed.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/shade_toggled.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/big-14/shade_toggled_hover.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/bold/close.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/bold/desk.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/bold/desk_toggled.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/bold/iconify.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/bold/max.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/bold/max_toggled.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/bold/shade.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/bold/shade_toggled.xbm create mode 100755 share/mabox-colorizer/themes/obbuttons/dots/bullet.xbm create mode 100755 share/mabox-colorizer/themes/obbuttons/dots/close.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/dots/desk.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/dots/desk_toggled.xbm create mode 100755 share/mabox-colorizer/themes/obbuttons/dots/iconify.xbm create mode 100755 share/mabox-colorizer/themes/obbuttons/dots/max.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/dots/max_toggled.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/dots/shade.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/dots/shade_toggled.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/normal/bullet.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/normal/close.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/normal/desk.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/normal/desk_toggled.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/normal/iconify.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/normal/max.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/normal/max_toggled.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/normal/shade.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/normal/shade_toggled.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/tiny/bullet.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/tiny/close.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/tiny/desk.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/tiny/desk_toggled.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/tiny/iconify.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/tiny/max.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/tiny/max_toggled.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/tiny/shade.xbm create mode 100644 share/mabox-colorizer/themes/obbuttons/tiny/shade_toggled.xbm diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..34de37e --- /dev/null +++ b/Makefile @@ -0,0 +1,16 @@ +NAME=mabox-colorizer +VERSION=0.0.1 + +DIRS=bin share +INSTALL_DIRS=`find $(DIRS) -type d 2>/dev/null` +INSTALL_FILES=`find $(DIRS) -type f 2>/dev/null` + +PREFIX?=/usr + +install: + for dir in $(INSTALL_DIRS); do mkdir -p $(PREFIX)/$$dir; done + for file in $(INSTALL_FILES); do cp $$file $(PREFIX)/$$file; done + +uninstall: + for file in $(INSTALL_FILES); do rm -f $(PREFIX)/$$file; done + rm -r $(PREFIX)/share/$(NAME) diff --git a/TODO.md b/TODO.md new file mode 100644 index 0000000..db24e6d --- /dev/null +++ b/TODO.md @@ -0,0 +1,9 @@ +### Short term +- color select submenu - configurable exposed palette: wallpaper or palette from Color Menu (built-in or custom) +- documentation (About and help) + +### Later +- autogenerated colorschemes from wallpaper colors (light and dark) for menus and conkies +- scripts to handle tint2 panel +- colorize "folder" icons + diff --git a/bin/cavactl b/bin/cavactl new file mode 100755 index 0000000..1e4d6fb --- /dev/null +++ b/bin/cavactl @@ -0,0 +1,106 @@ +#!/bin/bash + +# cavactl - cava script for Mabox +CFGFILE=~/.config/cava/config + +reload_config() { +pkill -USR1 cava +} + +reload_colors() { +pkill -USR2 cava > /dev/null 2>&1 +} +mode() { + case "$1" in + solid) sd ".*gradient .*" "gradient = 0" ${CFGFILE};; + gradient) sd ".*gradient .*" "gradient = 1" ${CFGFILE};; + esac + reload_colors +} + +foregroundcolor(){ + sd ".*foreground .*" "foreground = '${1}'" ${CFGFILE} +} + +foreground() { +sd ".*foreground .*" "foreground = '${1}'" ${CFGFILE} +sd ".*gradient .*" "gradient = 0" ${CFGFILE} +reload_colors +} +gradientcolors() { + n=1 +for i in $(pastel gradient -n 8 ${1} ${2}|pastel format hex) + do + sd ".*gradient_color_${n}.*" "gradient_color_${n} = '${i}'" ${CFGFILE} + ((n++)) + done +} +gradient() { + n=1 +for i in $(pastel gradient -n 8 ${1} ${2}|pastel format hex) + do + sd ".*gradient_color_${n}.*" "gradient_color_${n} = '${i}'" ${CFGFILE} + ((n++)) + done + +sd ".*gradient .*" "gradient = 1" ${CFGFILE} +sd ".*gradient_count .*" "gradient_count = 8" ${CFGFILE} +reload_colors +} +grad_from() { + read GR_TO <<< "$(grep '.*gradient_color_8 ' ${CFGFILE} | cut -d"'" -f2)" + gradient "$1" "${GR_TO}" +} +grad_to() { + read GR_FROM <<< "$(grep '.*gradient_color_1 ' ${CFGFILE} | cut -d"'" -f2)" + gradient "${GR_FROM}" "$1" +} + +bar_width () { +sd ".*bar_width .*" "bar_width = ${1}" ${CFGFILE} +reload_config +} + + +bar_spacing() { +sd ".*bar_spacing .*" "bar_spacing = ${1}" ${CFGFILE} +reload_config +} + +info () { +case "$LANG" in + pl*) + INFO_HEAD="Porady dla Cava" + INFO_TXT="\nCava jest uruchomiona w przezroczystym oknie...\n\ +Możesz je więc przesuwać lub zmieniać rozmiar tak jak każde inne okno\n\ +Przesuwanie: przytrzymaj Alt i przeciągnij\n\ +Zmiana rozmiaru: przytrzymaj Alt i przeciągnij prawym przyciskiem myszy\n\n \ +Użyj strzałek  , aby zmienić szerokość słupków" + ;; + *) + INFO_HEAD="Cava tips & tricks" + INFO_TXT="\nCava runs inside transparent window...\n\ +So you can move or resize it like any other window\n\ +Move: hold Alt and drag\n\ +Resize: hold Alt and drag with right mouse button\n\n \ +Use arrows   to change bar width" + ;; +esac +notify-send.sh -i amarok_playcount -u critical "$INFO_HEAD" "$INFO_TXT" +} + +case "$1" in + mode) mode "$2";; + foregroundcolor) foregroundcolor "$2";; + foreground) foreground "$2";; + gradientcolors) gradientcolors "$2" "$3";; + gradient) gradient "$2" "$3";; + grad_from) grad_from "$2";; + grad_to) grad_to "$2";; + reload) reload_config;; + reload_colors)reload_colors;; + bar_width)bar_width "$2";; + bar_spacing)bar_spacing "$2";; + info) info;; + *):;; +esac diff --git a/bin/checkupdates.sh b/bin/checkupdates.sh new file mode 100755 index 0000000..86afc73 --- /dev/null +++ b/bin/checkupdates.sh @@ -0,0 +1,139 @@ +#!/bin/bash + +# check updates and show how many packages to update in Conky +# We don't need to run checkupdates at Conky start as it takes few seconds and block Conky + +if (( $EUID != 0 )); then + source ~/.config/mabox/mabox.conf +fi + +UPDATES_LIST="/tmp/updates/updates_list" +AUR_UPDATES_LIST="/tmp/updates/aur_updates_list" + +if [[ ! -f "$UPDATES_LIST" ]];then +mkdir -p /tmp/updates +touch "$UPDATES_LIST" +chmod 666 "${UPDATES_LIST}" +fi + +if [[ ! -f "$AUR_UPDATES_LIST" ]]; then +touch "$AUR_UPDATES_LIST" +chmod 666 "$AUR_UPDATES_LIST" +fi + +do_checkupdates() { +/usr/bin/checkupdates > "$UPDATES_LIST" +} + +do_checkaurupdates() { +yay -Qua | grep -v '\.$' > "$AUR_UPDATES_LIST" 2>/dev/null +} + +sys_checkupdates() { +do_checkupdates +do_checkaurupdates +exit 0 +} + +count_pkgs(){ +REPO=$(wc -l $UPDATES_LIST | awk '{print $1}') +AUR=$(wc -l $AUR_UPDATES_LIST | awk '{print $1}') +PKGS=$((REPO + AUR)) +mb-setvar updates=${PKGS} +} + +case "$LANG" in + pl*) + AVAIL_UPDATES="Dostępne aktualizacje" + UPTODATE="System jest aktualny" + PKGS_TO_UPDATE="Pakiety do aktualizacji:" + YAY_UPD="Użyj yay (cli)" + PAMAC_UPD="Użyj Pamac (GUI)" + DISABLE="Wyłącz powiadomienia" + ;; + es*) + AVAIL_UPDATES="Actualizaciones disponibles" + UPTODATE="El sistema esta actualizado" + PKGS_TO_UPDATE="Paquetes para actualizar:" + YAY_UPD="Actualizar con yay (cli)" + PAMAC_UPD="Actualizar con Pamac (GUI)" + DISABLE="Deshabilitar notificaciones" + ;; + *) + AVAIL_UPDATES="Available updates" + UPTODATE="System is up to date" + PKGS_TO_UPDATE="Packages to update:" + YAY_UPD="Update with yay (cli)" + PAMAC_UPD="Update with Pamac (GUI)" + DISABLE="Disable notifications" + ;; +esac + +notify_updates_available() { + if [ "${1}" == "-p" ];then +notify-send.sh -u critical -i mbcc "$AVAIL_UPDATES" "$PKGS_TO_UPDATE $PKGS" -o "$YAY_UPD:terminator -T '$YAY_UPD' -e yay" \ + -o "$PAMAC_UPD:pamac-manager --updates" + else +notify-send.sh -u critical -i mbcc "$AVAIL_UPDATES" "$PKGS_TO_UPDATE $PKGS" -o "$YAY_UPD:terminator -T '$YAY_UPD' -e yay" \ + -o "$PAMAC_UPD:pamac-manager --updates" -o "$DISABLE:mb-setvar update_notifications=false" + fi +} + +from_conky(){ +if [ -f /tmp/"$CONKYPID" ]; then + do_checkupdates + do_checkaurupdates + count_pkgs + if [ "$PKGS" != "0" ]; then + if [[ "$update_notifications" != "false" ]];then + notify_updates_available + fi + printf "\${font}\${alignr} $AVAIL_UPDATES: \${color red}" + echo "$PKGS" + else + printf "\${font}\${color}\${alignr} $UPTODATE" + fi +else +touch /tmp/"${CONKYPID}" +fi +} + +from_panel(){ +do_checkupdates +do_checkaurupdates +count_pkgs + if [ "$PKGS" != "0" ]; then + notify_updates_available -p + else + notify-send.sh -u critical -i mbcc "Updates" "$UPTODATE" + fi +} + +from_cli(){ + do_checkupdates + do_checkaurupdates + count_pkgs +if [ "$PKGS" != "0" ];then + echo "$AVAIL_UPDATES $PKGS" + cat "$UPDATES_LIST" + cat "$AUR_UPDATES_LIST" +else + echo "$UPTODATE" +fi +} + + +case "$1" in + -s) + CONKYPID=$(pgrep -f sysinfo_mbcolor) + from_conky;; + -g) + CONKYPID=$(pgrep -f sysinfo_graph_mbcolor) + from_conky;; + -m) + CONKYPID=$(pgrep -f mabox_info_mbcolor) + from_conky;; + -p)from_panel;; + -u)sys_checkupdates;; + *)from_cli;; +esac diff --git a/bin/colorizer b/bin/colorizer new file mode 100755 index 0000000..18d6715 --- /dev/null +++ b/bin/colorizer @@ -0,0 +1,528 @@ +#!/bin/bash +# +# colorizer - set of tools for Mabox (auto)theming +# Copyright (C) 2022-2025 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 . + +. $HOME/.config/mabox/mabox.conf + +CNF_DIR="$HOME/.config/colorizer" +mkdir -p "$CNF_DIR" +CNF_FILE="$CNF_DIR/colorizer.conf" +CUSTOM_COMMANDS_FILE="$CNF_DIR/custom.csv" + +if [ ! -f $CNF_FILE ]; then +cat < ${CNF_FILE} +# User wallpaper dir +user_wallpapers_dir=~/wallpapers +# Show related tools (show or hide) +related_tools=hide +# Colorizer size: full or compact +colorizer_size=full +# Gradients: change openbox theme? (active window titlebar) +gradient_obtheme=yes +# Gradients: change menu/panels background? +gradient_menu=no +EOF +fi + +source "$CNF_FILE" + +me="colorizer -s" + +case "$LANG" in + pl*) + REGENERATE="(Re)Generuj z kolorów tapety..." + REGENERATEALL="Regeneruj wszystko" + ASCONFIGURED="wg konfiguracji" + REVERSE="odwrotnie" + CURRENTCONF="Obecna konfiguracja" + MODULES="Moduły" + FONTS="Konfiguruj Czcionki" + _PICOM="Ustawienia Kompozytora (Picom)" + OBTHEME="Motyw Openbox" + MENUPANELS="Menu i Panele boczne" + COLORIZER_CONKY="Menadżer Widżetów Conky" + CAVA="Cava - wizualizacja dźwięku" + TERMINALTHEME="Motyw terminala" + EDIT_PALETTE="Edytuj paletę kolorów" + RANDWALL="Ustaw losową tapetę" + SYSWALLPAPER="Tapety systemowe" + USERWALLPAPER="Tapety użytkownika" + GRADIENTS="Gradienty" + PRE_GRADIENTS="Gradienty" + GRAD_OB="Stosować do motywu OpenBox?" + GRAD_MENU="Stosować do Menu/Paneli?" + GRAD_CONKY="Stosować do Conky?" + SETTINGS_AND_HELP="Pomoc i Ustawienia" + SETTINGS="Ustawienia" + COLORIZER_SETTINGS="Ustawienia Colorizera" + GRADIENTS_ACT="Działanie gradientów w menu gł." + EDITCONF="Edytuj plik konfiguracyjny" + RESET="Resetuj ustawienia Colorizera" + YES="Tak" + NO="Nie" + LIGHTBG="light - jasne tło" + DARKBG="dark - ciemne tło" + OTHERTOOLS="Powiązane narzędzia" + ADDLAUNCHER="Dodaj uruchamiacz Colorizera do panelu" + DELETELAUNCHER="Usuń uruchamiacz Colorizera z panelu" + HEIGHT="Wysokość Colorizera" + FULL="full - pełna wysokość" + COMPACT="compact - kompaktowa" + OTHER_SETTINGS="Inne ustawienia" + SHOW_RELATED="Pokazuj powiązane?" + SHOW="show - pokaż" + HIDE="hide - ukryj" + EDIT_RELATED="Edytuj powiązane" + RESET_RELATED="Resetuj powiązane" + LXAPPEARANCE="Motyw GTK i ikony" + THEMEMANAGER="Zarządzaj motywami" + WALLPAPERS="Katalogi z tapetami" + OPENDIR="Otwórz katalog w menadżerze plików" + OPENDIR_VIEWNIOR="Otwórz katalog w przeglądarce obrazków" + SETRANDOM="Ustaw losową" + CHANGE="Zmień" + USERDIR_NOT_EXIST="kalalog nie istnieje" + CREATE_USERDIR="Utwórz katalog" + HELP="Okno główne i Pomoc" + RESET_COLORS="Resetuj kolory" + RESET_CHOOSE="Resetuj..." + RESET_SEP="Resetuj kolory dla" + RES_OB_WD="Dekoracje okien OpenBox" + RES_CONKY="Conky" + RES_MENU="Menu i Paneli" + RES_ALL="Wszystko (OB, menu, conky)" + COLORIZE="Szybko Pokoloruj lub Resetuj..." + _LEFTSIDEPANEL="Lewy panel boczny" + _WALL_DESK_MENU="Tapety oraz stylizacja pulpitu" + + _AUTOTHEMING="Auto theming (beta)" + _ON_WP_CHANGE="(po zmianie tapety)" + _AUTOTH_SETTINGS="Ustawienia Auto theming" + _APPLY_COLORSCHEME_TO="Zastosuj kolory tapety do..." + _APPLY_TO_ALL="Wszystko" + _APPLY_REVERSE="Wszystko odwrotnie (jasny 易 ciemny)" + _APPLY_ONLY_TO="Zastosuj tylko do..." + _RESET_WP_THEMES="Reset tapety i motywów" + _ENABLED="włączony" + _DISABLED="wyłączony" + _LIGHTBG="jasny wariant" + _DARKBG="ciemny wariant" + _NONE="none wyłączone" + ;; + *) + REGENERATE="(Re)Generate from wallpaper colors..." + REGENERATEALL="Regenerate all" + ASCONFIGURED="as configured" + REVERSE="reverse" + CURRENTCONF="Current configuration" + MODULES="Modules" + FONTS="Configure Fonts" + _PICOM="Compositor settings (Picom)" + OBTHEME="Openbox Theme" + MENUPANELS="Menus/SidePanels" + COLORIZER_CONKY="Conky Widget Manager" + CAVA="Cava - Audio Visualizer" + TERMINALTHEME="Terminal color scheme" + RANDWALL="Set random wallpaper" + SYSWALLPAPER="System Wallpapers" + USERWALLPAPER="User Wallpapers" + GRADIENTS="Gradients" + PRE_GRADIENTS="Gradients" + GRAD_OB="Apply to OpenBox theme?" + GRAD_MENU="Apply to Menu/Panels?" + GRAD_CONKY="Apply to Conkies?" + SETTINGS_AND_HELP="Settings and Help" + SETTINGS="Settings" + COLORIZER_SETTINGS="Colorizer Settings" + GRADIENTS_ACT="Gradients in Rootmenu actions" + EDITCONF="Edit config file" + RESET="Reset to defaults" + YES="Yes" + NO="No" + LIGHTBG="with light background" + DARKBG="with dark background" + OTHERTOOLS="Related tools" + ADDLAUNCHER="Add Colorizer launcher to panel" + DELETELAUNCHER="Delete Colorizer from panel" + HEIGHT="Height of Colorizer" + FULL="full" + COMPACT="compact" + OTHER_SETTINGS="Other settings" + SHOW_RELATED="Show related tools?" + SHOW="show" + HIDE="hide" + EDIT_RELATED="Edit related tools" + RESET_RELATED="Reset related tools" + LXAPPEARANCE="GTK theme and icons" + THEMEMANAGER="Theme manager" + WALLPAPERS="Wallpapers directories" + OPENDIR="Open directory in file manager" + OPENDIR_VIEWNIOR="Open directory in Image viewer" + SETRANDOM="Set random" + CHANGE="Change" + USERDIR_NOT_EXIST="directory does not exist" + CREATE_USERDIR="Create directory" + DIFF_CONKY_COLORS="Different colors for each Conky" + HELP="Main Window and Help" + RESET_COLORS="Reset Colors" + RESET_CHOOSE="Reset..." + RESET_SEP="Reset Colors of ..." + RES_OB_WD="OpenBox Window Decorations" + RES_CONKY="Conkies" + RES_MENU="Menus / Panels" + RES_ALL="All (OB, menus, conky)" + COLORIZE="Quickly Colorize or Reset..." + _LEFTSIDEPANEL="Left Sidepanel" + _WALL_DESK_MENU="Wallpaper & Desktop styling menu" + + _AUTOTHEMING="Auto theming (beta)" + _ON_WP_CHANGE="(on wallpaper change)" + _AUTOTH_SETTINGS="Auto theming settings" + _APPLY_COLORSCHEME_TO="Apply wallpaper colors to..." + _APPLY_TO_ALL="All elements" + _APPLY_REVERSE="All elements inversely (dark 易 light)" + _APPLY_ONLY_TO="Apply only to..." + _RESET_WP_THEMES="Reset (wallpaper and themes)" + _ENABLED="enabled" + _DISABLED="disabled" + _LIGHTBG="light variant" + _DARKBG="dark variant" + _NONE="none (disabled)" + ;; +esac + +if [ ! -f $CUSTOM_COMMANDS_FILE ]; then +cat < ${CUSTOM_COMMANDS_FILE} +^sep($OTHERTOOLS) +Tint2 Menu,^pipe(jgtint2-pipe) +#$WALLPAPERS,^pipe(jgwallpaperchanger) +$TERMINALTHEME,^term(theme.sh -i2;/bin/bash) +$LXAPPEARANCE,lxappearance +$THEMEMANAGER,mb-obthemes +Color Menu,colormenu +EOF +fi + +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 +ext="${WALLPATH##*.}" + +if [ ! -f "$WALLPALDIR/$NAME.clr" ]; then + if [ "$ext" == "avif" ];then + magick ${WALLPATH} -resize 25% /tmp/out.jpg + magick /tmp/out.jpg -colors 12 -unique-colors txt:- |grep -v '^#'| awk '{print substr($3,1,7)}' |pastel sort-by brightness |pastel format hex > "$WALLPALDIR/$NAME.clr" + else + magick ${WALLPATH} -resize 25% -colors 12 -unique-colors txt:- |grep -v '^#'| awk '{print substr($3,1,7)}' |pastel sort-by brightness |pastel format hex > "$WALLPALDIR/$NAME.clr" + fi +fi +mapfile -t w < "$WALLPALDIR/$NAME.clr" + + +if [[ "${#w[@]}" -lt 8 ]]; then +w+=("#2e3440" "#4c566a" "#5e81ac" "#bf616b" "#b48ead" "#a3be8c" "#ebcb8b" "#d8dee9" "#eceff4") +fi + +#Accent colors +plasma=("#e93a9a" "#e93d58" "#e9643a" "#e8cb2d" "#3dd425" "#00d3b8" "#3daee9" "#b875dc" "#926ee4" "#686b6f") +ubuntu=("#E95420" "#18b0b0" "#3584e4" "#0e8420" "#c748ba" "#77216f" "#c7162b" "#f4a100") +mint+=("#6cabcd" "#5b73c4" "#aa876a" "#9d9d9d" "#db9d61" "#c76199" "#8c6ec9" "#c15b58" "#c8ac69" "#5aaa9a") + + +out+=("^sep(Mabox Colorizer)") +out+=(" $COLORIZE,^pipe(randomizer c)") +out+=("^sep($MODULES)") +out+=("$OBTHEME,colorizer-ob -s") + +#out+=("TINT2,colorizer-tint2 -s") +out+=("$MENUPANELS,colorizer-menus -s") +out+=("$COLORIZER_CONKY,colorizer-conky -s") +out+=("^sep()") +#out+=("Systray HW monitor,^pipe(colorizer-phwmon)") + +#if pgrep -f pyradio >/dev/null ;then +# out+=("^sep()") +out+=("PyRadio,colorizer-pyradio -s") +#fi + +#if pgrep -f cava >/dev/null ;then +# out+=("^sep()") +out+=("$CAVA,colorizer-cava -s") +#fi + +out+=("^sep()") +out+=(" $FONTS,colorizer-fonts -s") +out+=("$_PICOM,jgpicom-pipe -s") + + +### TODO Rework below as submenu(edit palette and present palette with HTML helper- to keep it on desktop, allowing to copy colors from it) + +##out+=("^sep()") +##out+=(" $EDIT_PALETTE,xdg-open $WALLPALDIR/$WALLPAPER.clr") + +### AUTOTHEMING +COLORIZER_CONF="$HOME/.config/colorizer/colorizer.conf" +source ${COLORIZER_CONF} + +out+=("^sep($_AUTOTHEMING)") +out+=("^sep($_ON_WP_CHANGE)") + +out+=(" $_APPLY_COLORSCHEME_TO,^checkout(applyto)") +out2+=("^tag(applyto)") +out2+=("^sep($_APPLY_COLORSCHEME_TO)") +out2+=(" $_APPLY_TO_ALL,w2theme colorize;$me applyto") +out2+=(" $_APPLY_REVERSE,w2theme reverse;$me applyto") +out2+=("^sep($_APPLY_ONLY_TO)") +out2+=("^sep(Menu)") +out2+=(" $_LIGHTBG,w2theme menu light;$me applyto") +out2+=(" $_LIGHTBG 2,w2theme menu light2;$me applyto") +out2+=(" $_DARKBG,w2theme menu dark;$me applyto") +out2+=(" $_DARKBG 2,w2theme menu dark2;$me applyto") +out2+=("^sep(Conky)") +out2+=(" $_LIGHTBG,w2theme conky light;$me applyto") +out2+=(" $_DARKBG,w2theme conky dark;$me applyto") +out2+=("^sep(OpenBox)") +out2+=(" $_LIGHTBG,w2theme ob light;$me applyto") +out2+=(" $_DARKBG,w2theme ob dark;$me applyto") + + +out+=("^sep()") + + +[[ "$wall2themes" == "yes" ]] && out+=(" $_AUTOTH_SETTINGS,^checkout(autotheming)") || out+=(" $_AUTOTH_SETTINGS,^checkout(autotheming)") + +out2+=("^tag(autotheming)") +out2+=("^sep($_AUTOTH_SETTINGS (beta))") +[[ "$wall2themes" == "yes" ]] && out2+=(" $_ENABLED") || out2+=(" $_ENABLED,mb-setvar wall2themes=yes $COLORIZER_CONF;$me") +[[ "$wall2themes" != "yes" ]] && out2+=(" $_DISABLED") || out2+=(" $_DISABLED,mb-setvar wall2themes=no $COLORIZER_CONF;$me") + +out2+=("^sep(OpenBox)") +[[ "$wall2themes_ob" == "light" ]] && out2+=(" $_LIGHTBG") || out2+=(" $_LIGHTBG,mb-setvar wall2themes_ob=light $COLORIZER_CONF;$me autoth") +[[ "$wall2themes_ob" == "dark" ]] && out2+=(" $_DARKBG") || out2+=(" $_DARKBG,mb-setvar wall2themes_ob=dark $COLORIZER_CONF;$me autoth") +out2+=("^sep()") +[[ "$wall2themes_ob" == "none" ]] && out2+=(" $_NONE") || out2+=(" $_NONE,mb-setvar wall2themes_ob=none $COLORIZER_CONF;$me autoth") +out2+=("^sep(Menu)") +[[ "$wall2themes_menu" == "light" ]] && out2+=(" $_LIGHTBG") || out2+=(" $_LIGHTBG,mb-setvar wall2themes_menu=light $COLORIZER_CONF;$me autoth") +[[ "$wall2themes_menu" == "dark" ]] && out2+=(" $_DARKBG") || out2+=(" $_DARKBG,mb-setvar wall2themes_menu=dark $COLORIZER_CONF;$me autoth") +out2+=("^sep()") +[[ "$wall2themes_menu" == "none" ]] && out2+=(" $_NONE") || out2+=(" $_NONE,mb-setvar wall2themes_menu=none $COLORIZER_CONF;$me autoth") +out2+=("^sep(Conky)") +[[ "$wall2themes_conky" == "light" ]] && out2+=(" $_LIGHTBG") || out2+=(" $_LIGHTBG,mb-setvar wall2themes_conky=light $COLORIZER_CONF;$me autoth") +[[ "$wall2themes_conky" == "dark" ]] && out2+=(" $_DARKBG") || out2+=(" $_DARKBG,mb-setvar wall2themes_conky=dark $COLORIZER_CONF;$me autoth") +out2+=("^sep()") +[[ "$wall2themes_conky" == "none" ]] && out2+=(" $_NONE") || out2+=(" $_NONE,mb-setvar wall2themes_conky=none $COLORIZER_CONF;$me autoth") + +out2+=("^sep(PyRadio / Cava)") +out2+=("PyRadio and Cava,^checkout(pycava)") +out3+=("^tag(pycava)") +out3+=("^sep(Pyradio)") +[[ "$wall2themes_pyradio" == "light" ]] && out3+=(" $_LIGHTBG") || out3+=(" $_LIGHTBG,mb-setvar wall2themes_pyradio=light $COLORIZER_CONF;$me autoth") +[[ "$wall2themes_pyradio" == "dark" ]] && out3+=(" $_DARKBG") || out3+=(" $_DARKBG,mb-setvar wall2themes_pyradio=dark $COLORIZER_CONF;$me autoth") +out3+=("^sep()") +[[ "$wall2themes_pyradio" == "none" ]] && out3+=(" $_NONE") || out3+=(" $_NONE,mb-setvar wall2themes_pyradio=none $COLORIZER_CONF;$me autoth") +out3+=("^sep(Cava)") +out3+=("^sep(not implemented yet)") +out3+=("Use Colorizer Cava,colorizer-cava -s") + + +palettes=$(shopt -s nullglob ; set -- $WALLPALDIR/*.clr ; echo $#) +if [[ "$palettes" -gt "1" ]];then +out2+=("^sep()") +out2+=(" Remove cached palletes ($palettes),rm $WALLPALDIR/*.clr;$me") +fi + + + +out+=("^sep()") +out+=("󰅙 $_RESET_WP_THEMES,w2theme resetall;$me") + + + +out+=("^sep()") +out+=(" $RANDWALL,mbwallpaper -o;colorizer -s") +out+=(" $_WALL_DESK_MENU,jgwallpaperchanger -s") + +if [[ "$gradient_obtheme" == "yes" || "$gradient_menu" == "yes" ]];then + [[ "$gradient_obtheme" == "yes" ]] && OBGRAD="OB" || OBGRAD="" + [[ "$gradient_menu" == "yes" ]] && MENUGRAD="menus" || MENUGRAD="" + out+=("^sep($GRADIENTS $OBGRAD $MENUGRAD)") + out+=(" $PRE_GRADIENTS,^pipe(mbgrad)") +fi + +out+=("^sep($SETTINGS)") +out+=(" $SETTINGS,^checkout(settings)") +LNG=${LANG:0:2} +if [[ -f "/usr/share/mabox-colorizer/help/$LNG.html" ]];then +out+=(" $HELP,yhtml /usr/share/mabox-colorizer/help/$LNG.html 'Mabox Colorizer'") +else +out+=(" $HELP,yhtml /usr/share/mabox-colorizer/help/en.html 'Mabox Colorizer'") +fi +out+=("^sep()") +out+=(" ${arrow_string_left} ${arrow_string_left} $_LEFTSIDEPANEL,mb-jgtools places") + + +### RESET ACTIONS (replaced by Randomizer) +#out+=("^sep($RESET_COLORS)") +#out+=("$RESET_CHOOSE,^checkout(resetroot)") +#out2+=("^tag(resetroot)") +#out2+=("^sep($RESET_SEP)") +#out2+=("$RES_OB_WD,obtctl resetMBcolors;colorizer -s") +#out2+=("$RES_MENU,jgctl reset;colorizer -s") +#out2+=("$RES_CONKY,conkyctl resetcolorsall;colorizer -s") +#out2+=("^sep()") +#out2+=("\"\"\"$RES_ALL\"\"\",obtctl resetMBcolors;conkyctl resetcolorsall;jgctl reset;colorizer -s") + +if [[ "$related_tools" == "show" ]];then +out+=(". $CUSTOM_COMMANDS_FILE") +fi +### FUTURE: SAVE AND RESTORE +#out+=("^sep()") +#out+=("Pin current colors to wallpaper") +### + +out2+=("^tag(settings)") + + +out2+=("^sep($GRADIENTS_ACT)") +[[ "$gradient_obtheme" == "yes" ]] && out2+=(" $GRAD_OB,mb-setvar gradient_obtheme=no $CNF_FILE;colorizer -s") || out2+=(" $GRAD_OB,mb-setvar gradient_obtheme=yes $CNF_FILE;colorizer -s") +#out2+=("$GRAD_OB [ ${gradient_obtheme} ],^checkout(grad_ob)") +#out3+=("^tag(grad_ob") +#out3+=("^sep($GRAD_OB)") +#out3+=("$YES,mb-setvar gradient_obtheme=yes $CNF_FILE;colorizer -s") +#out3+=("$NO,mb-setvar gradient_obtheme=no $CNF_FILE;colorizer -s") + +[[ "$gradient_menu" == "yes" ]] && out2+=(" $GRAD_MENU,mb-setvar gradient_menu=no $CNF_FILE;colorizer -s") || out2+=(" $GRAD_MENU,mb-setvar gradient_menu=yes $CNF_FILE;colorizer -s") +#out2+=("$GRAD_MENU [ ${gradient_menu} ],^checkout(grad_menu)") +#out3+=("^tag(grad_menu") +#out3+=("^sep($GRAD_MENU)") +#out3+=("$YES,mb-setvar gradient_menu=yes $CNF_FILE;colorizer -s") +#out3+=("$NO,mb-setvar gradient_menu=no $CNF_FILE;colorizer -s") +#out2+=("$GRAD_CONKY [ ${gradient_conkies} ],^checkout(grad_conky)") +#out3+=("^tag(grad_conky") +#out3+=("^sep($GRAD_CONKY)") +#out3+=("$YES,mb-setvar gradient_conkies=yes $CNF_FILE;colorizer -s") +#out3+=("$NO,mb-setvar gradient_conkies=no $CNF_FILE;colorizer -s") + +out2+=("^sep($OTHER_SETTINGS)") +#out2+=("^sep($COLORIZER_SETTINGS)") +#if [[ -f "$HOME/.config/tint2/launcherapps/colorizer.desktop" ]]; then +#out2+=("$DELETELAUNCHER,rm ~/.config/tint2/launcherapps/colorizer.desktop;killall -SIGUSR1 tint2;colorizer -s") +#else +#out2+=("$ADDLAUNCHER,cp /usr/share/applications/colorizer.desktop ~/.config/tint2/launcherapps/;killall -SIGUSR1 tint2;colorizer -s") +#fi + +out2+=("$HEIGHT [ ${colorizer_size} ],^checkout(csize)") +out3+=("^tag(csize)") +out3+=("^sep($HEIGHT)") +out3+=("$FULL,mb-setvar colorizer_size=full $CNF_FILE;colorizer -s") +out3+=("$COMPACT,mb-setvar colorizer_size=compact $CNF_FILE;colorizer -s") +[[ "$related_tools" == "show" ]] && out2+=(" $SHOW_RELATED,^checkout(related)") || out2+=(" $SHOW_RELATED,^checkout(related)") +out3+=("^tag(related)") +out3+=("^sep($SHOW_RELATED)") +[[ "$related_tools" == "show" ]] && out3+=(" $SHOW,colorizer -s" " $HIDE,mb-setvar related_tools=hide $CNF_FILE;colorizer -s") || out3+=(" $SHOW,mb-setvar related_tools=show $CNF_FILE;colorizer -s" " $HIDE,colorizer -s") +out3+=("^sep()") +out3+=(" $EDIT_RELATED,xdg-open $CUSTOM_COMMANDS_FILE") +out3+=("󰁯 $RESET_RELATED,rm $CUSTOM_COMMANDS_FILE;colorizer -s") +out2+=("^sep()") +out2+=(" $EDITCONF,xdg-open $CNF_FILE") +out2+=("󰁯 $RESET,rm $CNF_FILE;colorizer -s") + + +### RUN +if [[ "$1" == "-s" ]]; then + . /usr/share/mb-jgtools/pipemenu-standalone.cfg + . $HOME/.config/mabox/mabox.conf + + 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 + TABS=180 + + [ $(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)) + + THUMBDIR="$HOME/.cache/colorizer/thumbs" + mkdir -p ${THUMBDIR} + THUMB="${THUMBDIR}/${NAME}.png" + if [[ ! -f "$THUMB" ]] + then + convert ${WALLPATH} -resize 270x150^ -gravity center -extent 270x150 ${THUMB} + fi + # colors on image + n=0 + m=0 + X=$((jgtools_padding + 3)) + Y=$((jgtools_padding + 122)) + for i in "${w[@]}" + do + if [[ "$n" -lt "12" ]];then + dots+=("@rect,,$((X + 22*n)),$((Y)),21,21,10,left,top,#CCCCCC 100,${i} 100,") + else + dots+=("@rect,,$((X + 7 + 21*m)),$((Y+20)),26,26,13,left,top,#CCCCCC 100,${i} 100,") + ((m=m+1)) + fi + ((n=n+1)) + done + + mkconfigfile +#THUMB="$(DISPLAY=:0 scrot -t 220x100 -o $HOME/.config/mabox/colorizer.png -e 'echo $m')" + +if [[ "$wall2themes" == "yes" ]]; then +AUTOTHEME_IND=" +@rect,,$((jgtools_padding+4)),$((jgtools_padding + 6)),262,20,0,left,top,#222222 20,#222222 70, +@text,,$((jgtools_padding+8)),$((jgtools_padding + 6)),262,22,0,left,top,#FFFFFF,#222222 70, Auto theming $_ENABLED ! +" +fi + +cat < ${MENU_ITEMS} +@icon,,$((jgtools_padding)),$((jgtools_padding)),270,150,4,left,top,,,${THUMB} +${AUTOTHEME_IND} +@rect,,$((jgtools_padding+2)),$((jgtools_padding + 100)),266,34,0,left,top,#222222 20,#222222 70, +@text,,$((jgtools_padding + 12)),$((jgtools_padding + 96)),120,30,0,left,top,#FFFFFF ,${WINCLR},Mabox Colorizer +$(printf '%s\n' "${dots[@]}") +#@icon,,$((jgtools_padding + 4)),$((jgtools_padding + 34)),270,120,4,left,top,,,/usr/share/mabox-colorizer/img/colorizer.png +$(printf '%s\n' "${out[@]}") +$(printf '%s\n' "${out2[@]}") +$(printf '%s\n' "${out3[@]}") +EOF + + jgmenu --config-file=${CONFIG_FILE} --csv-file=${MENU_ITEMS} ${options} 2>/dev/null + exit 0 +fi +printf '%s\n' "${out[@]}" +printf '%s\n' "${out2[@]}" +printf '%s\n' "${out3[@]}" diff --git a/bin/colorizer-cava b/bin/colorizer-cava new file mode 100755 index 0000000..363b303 --- /dev/null +++ b/bin/colorizer-cava @@ -0,0 +1,235 @@ +#!/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 . + +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="Colorizer - 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="Colorizer 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+=("󰺢 $STOP_CAVA,mb-music cavakill;$me") || out+=("󰺢 $START_CAVA,mb-music cavastart;$me") + out+=("^sep($COLORIZE_CAVA)") + out+=(" ${FGC} $COLOR,^pipe(mbclr '$FGC' cavactl foreground Cava_Bar_Color '$me')") + out+=("^sep($GRADIENT)") + out+=(" $PREGRADIENT,^pipe(mbgrad cava)") + out+=(" $REVERSE_GRADIENT,cavactl gradient '${GR_TO}' '${GR_FROM}';$me") + out+=("^sep()") + out+=(" $MODGRAD_FROM,^pipe(mbclr '$GR_FROM' cavactl grad_from Cava_Grad_From_Color '$me')") + out+=(" $MODGRAD_TO,^pipe(mbclr '$GR_TO' cavactl grad_to Cava_Grad_To_Color '$me')") + out+=("^sep($COLOR_MODE)") + [[ "$GR" == "0" ]] && out+=(" $SOLID_COLOR,cavactl mode solid;$me" "󰝦 $GRADIENT,cavactl mode gradient;$me") || out+=("󰝦 $SOLID_COLOR,cavactl mode solid;$me" " $GRADIENT,cavactl mode gradient;$me") + + out+=("^sep($GENERATEFROMWP)") + out+=(" $LIGHTBG,w2theme cava light;$me") + out+=(" $DARKBG,w2theme cava dark;$me") + out+=("^sep($BARS)") + out+=("$BAR_WIDTH [ $BW ],^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 [ $BS ],^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 < ${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},Colorizer Cava + + +$(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[@]}" + diff --git a/bin/colorizer-conky b/bin/colorizer-conky new file mode 100755 index 0000000..cddb4d5 --- /dev/null +++ b/bin/colorizer-conky @@ -0,0 +1,591 @@ +#!/bin/bash +# +# colorizer - set of tools for Mabox (auto)theming +# Copyright (C) 2022-2025 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 . + +SYSSCHEMES="/usr/share/mabox-colorizer/colorschemes/conky.csv" +#USERSCHEMES="$HOME/.config/colorizer/conky/c_userschemes.csv" +USERSCHEMES="$HOME/.config/colorizer/conky/colorschemes.csv" + + +me="colorizer-conky -s" +CONKYDIR="$HOME/.config/conky" +BASECONKY="$CONKYDIR/sysinfo_mbcolor.conkyrc" +COLORIZERDIR="$HOME/.config/colorizer" + + + +CONKYTHEMEDIR="$COLORIZERDIR/conky/themes" +if [ ! -d "$CONKYTHEMEDIR" ];then +mkdir -p "$CONKYTHEMEDIR" +rsync -a /usr/share/mabox-colorizer/themes/conky/* ${CONKYTHEMEDIR}/ +fi + +LNG=${LANG:0:2} +if [ ! -f "${BASECONKY}" ]; then +if [ -d "/usr/share/mabox/lang/$LNG/.config/conky" ]; then +rsync -a /usr/share/mabox/lang/$LNG/.config/conky/* ${CONKYDIR}/ +else +rsync -a /usr/share/mabox/lang/en/.config/conky/* ${CONKYDIR}/ +fi +fi +CNF_DIR="$HOME/.config/colorizer/conky" +CNF_FILE="$CNF_DIR/conky.cfg" +[ ! -d "$CNF_DIR" ] && mkdir -p "$CNF_DIR" +if [ ! -f $CNF_FILE ]; then +cat < ${CNF_FILE} +update_notifications=true +EOF +fi + +### Wallpaper colors +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 + if [ "$ext" == "avif" ];then + magick ${WALLPATH} -resize 25% /tmp/out.jpg + magick /tmp/out.jpg -colors 12 -unique-colors txt:- |grep -v '^#'| awk '{print substr($3,1,7)}' |pastel sort-by brightness |pastel format hex > "$WALLPALDIR/$NAME.clr" + else + magick ${WALLPATH} -resize 25% -colors 12 -unique-colors txt:- |grep -v '^#'| awk '{print substr($3,1,7)}' |pastel sort-by brightness |pastel format hex > "$WALLPALDIR/$NAME.clr" + fi +fi + +mapfile -t w < "$WALLPALDIR/$NAME.clr" + + +case "$LANG" in + pl*) + COLORIZECONKY="Menadżer widżetów Conky" + NO_CONKY_RUNNING="Brak uruchomionych Conky" + RUN_CONKY_SESSION="Uruchom zapisaną sesję" + MOVEABLEALL="Ustaw wszystkie (przeciągaj)..." + NOT_FULLY_SUPPORTED="Częściowo wspierane..." + UNSUPPORTED="Conky - częściowo wspierane" + UNSUPPORTED_START="kliknij aby uruchomić" + _OPEN_CONKYDIR="Otwórz katalog z Conky" + SCHEMES="Motywy kolorystycznie" + SYSTEM_SCHEMES="Systemowe" + YOUR_SCHEMES="Moje motywy" + SAVE_CURRSCHEME="Zapisz aktualną kolorystykę jako..." + OPEN_SCHEMEFILE="Odwórz plik ze schematami w edytorze" + COLORSCHEME="Schemat kolorów" + APPLY_SCHEME="Zastosuj" + DELETE="Usuń" + DELETE_SCHEME="Usuń schemat kolorów" + MONOCHROMATIC="Monochromatyczny" + CHOOSE_AND_PICK="Wybierz wariant i pobierz kolor..." + GENERATEFROMWP="Generuj z kolorów tapety" + LIGHTBG="Jasne tło" + DARKBG="Ciemne tło" + GLOBALSETTINGS="Ustawienia globalne (dla wszystkich)" + REGENERATE="Motywy kolorów" + OPENTHEMEDIR="Otwórz katalog motywów" + _COLORS="kolory" + DEFCOLOR="Kolor obramowania" + COLOR_0="Kolor 0 (tekst)" + COLOR_1="Kolor 1 (tekst alt)" + COLOR_2="Kolor 2 (pasek/graf)" + COLOR_3="Kolor 3 (większy tekst)" + BACKGROUND="Kolor tła" + TRANSPARENT="Przezroczyste tło?" + YES="Tak" + NO="Nie" + FONTS="Czcionka" + SELECTFONT="Wybierz czcionkę..." + FONTFAMILY_LBL="czcionka" + _EDIT_FAVFONTS="Edytuj ulubione czcionki" + FONTSIZE_LBL="rozmiar czcionki" + INCREASE="Powiększ do" + DECREASE="Pomniejsz do" + OLINE="Obrys" + SHADOW="Cień" + DRAW="Rysuj" + BORDERS="Obramowanie" + _BORDER_WIDTH="Szerokość obramowania" + _OLD_STYLE="(dawny styl)" + STIPPLED_BORDERS="Nakrapiane" + SOLID_LINE="linia ciągła" + RUNNING_CONKIES="Uruchomione Conky" + STOP_ALL="Zatrzymaj wszystkie" + MORECONKIES="Więcej Conky..." + CLICKTOSTART="Uruchom więcej Conky..." + STARTALL="Uruchom wszystkie" + RESET="Resetuj" + RESETALL="Resetuj wszystkie" + RESETCOLORS="Przywróć domyślne kolory" + AREYOUSURE="Czy aby napewno?" + _COLORIZER_ROOT="Colorizer - menu główne" + _LEFTSIDEPANEL="Lewy panel boczny" + ;; + *) + COLORIZECONKY="Conky Widget Manager" + NO_CONKY_RUNNING="No Conky running" + RUN_CONKY_SESSION="Run Conky session" + MOVEABLEALL="Make moveable all..." + NOT_FULLY_SUPPORTED="Partially supported" + UNSUPPORTED="partially supported Conkies" + UNSUPPORTED_START="click to start" + _OPEN_CONKYDIR="Open Conky config dir" + SCHEMES="Color Schemes" + SYSTEM_SCHEMES="System colorschemes" + YOUR_SCHEMES="My colorschemes" + SAVE_CURRSCHEME="Save current colors as..." + OPEN_SCHEMEFILE="Open schemes file in editor" + COLORSCHEME="Color Scheme" + APPLY_SCHEME="Apply colorscheme" + DELETE="Delete" + DELETE_SCHEME="Delete colorscheme" + MONOCHROMATIC="Monochromatic" + CHOOSE_AND_PICK="Choose variant and pick color..." + GENERATEFROMWP="Generate from wallpaper colors" + LIGHTBG="Light Background" + DARKBG="Dark Background" + GLOBALSETTINGS="Global settings (apply to all)" + REGENERATE="Color schemes" + OPENTHEMEDIR="Open schemes dir" + _COLORS="colors" + DEFCOLOR="Border color" + COLOR_0="(color0) Text" + COLOR_1="(color1) Text alt" + COLOR_2="(color2) Bars/graphs" + COLOR_3="(color3) Bigger text" + BACKGROUND="Background color" + TRANSPARENT="Transparent background?" + YES="Yes" + NO="No" + FONTS="Font" + SELECTFONT="Select Font..." + FONTFAMILY_LBL="font family" + _EDIT_FAVFONTS="Edit favorite fonts list" + FONTSIZE_LBL="font size" + INCREASE="Increase to" + DECREASE="Decrease to" + OLINE="Outline" + SHADOW="Shadow" + DRAW="Draw" + BORDERS="Borders" + _BORDER_WIDTH="Border width" + _OLD_STYLE="(old style)" + STIPPLED_BORDERS="Stippled borders" + SOLID_LINE="solid line" + RUNNING_CONKIES="Running Conkys" + STOP_ALL="Stop All" + MORECONKIES="More Conkies Available" + CLICKTOSTART="Start more Conkies..." + STARTALL="Start all" + RESET="Reset" + RESETALL="Reset all to defaults" + RESETCOLORS="Restore default colors" + AREYOUSURE="Are you sure?" + _COLORIZER_ROOT="Colorizer rootmenu" + _LEFTSIDEPANEL="Left Sidepanel" + ;; +esac + +getvalues () { + read WINTRANS <<< "$(grep own_window_transparent ${BASECONKY} | cut -d'=' -f2 | cut -d"," -f1)" + read FONTDEF <<< "$(grep "font .*=.*,$" ${BASECONKY} | cut -d'=' -f2,3 |cut -d"'" -f2)" + FONT=${FONTDEF%:*} + FONTSIZE=${FONTDEF#*=} + read WINCLR <<< "$(grep own_window_colour ${BASECONKY} | cut -d'=' -f2 | cut -d"'" -f2)" + [[ $WINCLR =~ ^#.* ]] && : || WINCLR="#${WINCLR}" + + read CLR <<< "$(grep default_color ${BASECONKY} | cut -d'=' -f2 | cut -d"'" -f2)" + [[ $CLR =~ ^#.* ]] && : || CLR="#${CLR}" + read CLR0 <<< "$(grep color0 ${BASECONKY} | cut -d'=' -f2 | cut -d"'" -f2)" + [[ $CLR0 =~ ^#.* ]] && : || CLR0="#${CLR0}" + read CLR1 <<< "$(grep color1 ${BASECONKY} | cut -d'=' -f2 | cut -d"'" -f2)" + [[ $CLR1 =~ ^#.* ]] && : || CLR1="#${CLR1}" + read CLR2 <<< "$(grep color2 ${BASECONKY} | cut -d'=' -f2 | cut -d"'" -f2)" + [[ $CLR2 =~ ^#.* ]] && : || CLR2="#${CLR2}" + read CLR3 <<< "$(grep color3 ${BASECONKY} | cut -d'=' -f2 | cut -d"'" -f2)" + [[ $CLR3 =~ ^#.* ]] && : || CLR3="#${CLR3}" + read OUTLINE <<< "$(grep draw_outline ${BASECONKY} | cut -d'=' -f2 | cut -d"," -f1)" + read SHADES <<< "$(grep draw_shades ${BASECONKY} | cut -d'=' -f2 | cut -d"," -f1)" + SHADOWS="no" + [[ "$OUTLINE" == "true" ]] && SHADOWS="outline" + [[ "$SHADES" == "true" ]] && SHADOWS="shadow" + + read BORD <<< "$(grep draw_borders ${BASECONKY} | cut -d'=' -f2 | cut -d"," -f1)" + read BWIDTH <<< "$(grep border_width ${BASECONKY} | cut -d'=' -f2 | cut -d"," -f1)" + read STIP <<< "$(grep stippled_borders ${BASECONKY} | cut -d'=' -f2 | cut -d"," -f1)" + + #currcolors="${WINCLR}|${CLR}|${CLR0}|${CLR1}|${CLR2}|" + cursettings="${WINCLR}|${CLR}|${CLR0}|${CLR1}|${CLR2}|${CLR3}|${WINTRANS}|${OUTLINE}|${SHADES}|${BORD}|${BWIDTH}|${STIP}|" +} + +if pgrep -u $USER -af "conky.*mbcolor" >/dev/null; then + + getvalues + if [ ! -f "$USERSCHEMES" ]; then + mkdir -p "$HOME/.config/colorizer/conky/" + echo "WINCLR | CLR | CLR0 | CLR1 | CLR2 | CLR3 |WINTRANS|OUTLINE|SHADES | BORD |BWIDTH| STIP |scheme_name" > "$USERSCHEMES" + fi + + + + + [[ "$WINTRANS" == false ]] && BG="bgcolor='$WINCLR'" || BG="" + + #out+=("^sep($COLORIZECONKY)") + + + #while read -r pid b c confpath + #do + # filename=${confpath##*/} + # name=${filename%%_mb*} + # out+=("${name^},^pipe(conkyctl single ${confpath})") + #done < <(pgrep -af "conky.*mbcolor") + + # array with running conkies - only filenames with full path + readarray -t running < <(pgrep -u $USER -af "conky -c " | cut -d' ' -f4) + + #array with all conkies found + #for i in "$CONKYDIR"/*.con* "$CONKYDIR"/**/*.con*; do + for i in "$CONKYDIR"/*.conkyrc "$CONKYDIR"/*.conf "$CONKYDIR"/**/*.conkyrc "$CONKYDIR"/**/*.conf; do + if [[ "$i" == *mbcolor* ]];then + supported+=("$i") + else + if [[ "$i" != *"/*"* ]];then + unsupported+=("$i") + fi + fi + done + + #array with not started conkies + notstarted=($(echo ${running[@]} ${supported[@]} ${unsupported[@]} ${unsupported[@]}| tr ' ' '\n' | sort | uniq -u)) + notstarted_unsupported=($(echo ${running[@]} ${supported[@]} ${supported[@]} ${unsupported[@]} | tr ' ' '\n' | sort | uniq -u)) + + RCONKIES="${#running[@]}" + NSCONKIES="${#notstarted[@]}" + ALLSUPP=$(($RCONKIES+$NSCONKIES)) + #notify-send.sh "$ALLSUPP" "$RCONKIES $NSCONKIES" + if [[ ${#running[@]} > 0 ]];then + out+=("^sep($RUNNING_CONKIES)") + for c in ${running[@]};do + filename=${c##*/} + name=${filename%%_mb*} + name2=${name%%.con*} + title=${name2//_/ } + out+=("${title^},^pipe(conkyctl single ${c})") + done + out+=("^sep()") + out+=("$STOP_ALL (${#running[@]}),conky_toggle;sleep .5;$me") + fi + if [[ ${#notstarted[@]} > 0 ]];then + out+=("^sep($MORECONKIES)") + if [[ "$ALLSUPP" < 12 ]];then + out+=("^sep($CLICKTOSTART)") + for c in ${notstarted[@]};do + filename=${c##*/} + name=${filename%%_mb*} + title=${name//_/ } + out+=("${title^},conkyctl startone ${c};$me") + done + if [[ ${#notstarted[@]} > 1 ]];then + out+=("^sep()") + out+=("$STARTALL (${#notstarted[@]}),conkyctl startall;$me") + fi + else # too many conkies not started -> show them in submenu + out+=("$CLICKTOSTART [ ${#notstarted[@]} ],^checkout(nstarted)") + out2+=("^tag(nstarted)") + out2+=("^sep($CLICKTOSTART)") + + for c in ${notstarted[@]};do + filename=${c##*/} + name=${filename%%_mb*} + title=${name//_/ } + out2+=("${title^},conkyctl startone ${c};$me") + done + if [[ ${#notstarted[@]} > 1 ]];then + out2+=("^sep()") + out2+=("$STARTALL (${#notstarted[@]}),conkyctl startall;$me") + fi + fi + fi + if [[ ${#notstarted_unsupported[@]} > 0 ]];then + out+=("^sep()") + out+=("$NOT_FULLY_SUPPORTED (${#notstarted_unsupported[@]}),^checkout(unsup)") + out2+=("^tag(unsup)") + out2+=("^sep($UNSUPPORTED)") + out2+=("^sep($UNSUPPORTED_START)") + for c in ${notstarted_unsupported[@]};do + filename=${c##*/} + name=${filename%%.con*} + title=${name//_/ } + out2+=("${title^},conkyctl startone ${c};$me") + done + fi + out+=("^sep()") + out+=(" $_OPEN_CONKYDIR,xdg-open ${CONKYDIR}") + + #GLOBAL START + out+=("^sep($GLOBALSETTINGS)") + out+=(" $MOVEABLEALL,conkyctl makemoveableall") + out+=("^sep()") + [[ "$WINTRANS" = true ]] && bga=1 || bga=100 + if [[ "${CLR3}" == "#" ]];then + case "$LANG" in + pl*)_UPD_NEEDED="Dostępna aktualizacja konfigów Conky!!!" + _UPD_NOW="Aktualizuj teraz!" + ;; + *)_UPD_NEEDED="Conky configs update needed !!!" + _UPD_NOW="Update now!" + ;; + esac + out+=(" $_UPD_NEEDED ,^checkout(conkyupdglob)") + out3+=("^tag(conkyupdglob)") + out3+=("^sep($_UPD_NEEDED)") + out3+=("$_UPD_NOW (mb-reset conky),mb-reset conky") + CLR3=${CLR} + recolor3=1 + fi + + out+=(" 󰎡 󰎤 󰎧 $REGENERATE,^checkout(regenconky)") + out2+=("^tag(regenconky)") + out2+=("^sep($REGENERATE)") + out2+=("^sep($MONOCHROMATIC)") + out2+=("^sep($CHOOSE_AND_PICK)") + out2+=(" $DARKBG...,conkyctl mono pick dark") + out2+=(" $LIGHTBG...,conkyctl mono pick light") + + out2+=("^sep($GENERATEFROMWP)") + out2+=(" $LIGHTBG ,w2theme conky light;$me") + out2+=(" $DARKBG ,w2theme conky dark;$me") + + out2+=("^sep($SYSTEM_SCHEMES)") + n=1 + while IFS="|" read -r winclr clr clr0 clr1 clr2 clr3 wintrans outline shades bord bwidth stip scheme_name + do + ((n=n+1)) + [[ "$wintrans" = true ]] && bga=1 || bga=100 + out2+=("$(printf '%-20s' "${scheme_name}") 󰎡 󰎤 󰎧 󰎪 ,conkyctl applyscheme_all sys ${n};$me") + done < <(tail -n +2 "$SYSSCHEMES") + + out2+=("^sep($YOUR_SCHEMES)") + out2+=(" $SAVE_CURRSCHEME,conkyctl savescheme '${cursettings}';$me") + out2+=(" $OPEN_SCHEMEFILE,xdg-open $USERSCHEMES") + out2+=("^sep()") + + n=1 + while IFS="|" read -r winclr clr clr0 clr1 clr2 clr3 wintrans outline shades bord bwidth stip scheme_name + do + ((n=n+1)) + [[ "$wintrans" = true ]] && bga=1 || bga=100 + out2+=("$(printf '%-20s' "${scheme_name}") 󰎡 󰎤 󰎧 󰎪 ,^checkout(sch${n})") + #echo "${own_window_colour}|${default_color}|${color0}|${color1}|${color2}|${themename}" >> "$USERSCHEMES" + out3+=("^tag(sch${n}") + out3+=("^sep($COLORSCHEME: ${scheme_name})") + out3+=(" $APPLY_SCHEME 󰎡 󰎤 󰎧 󰎪 ,conkyctl applyscheme_all usr ${n};$me") + out3+=("^sep($DELETE)") + out3+=("󰗨 $DELETE_SCHEME ${scheme_name},conkyctl delscheme ${n};$me") + done < <(tail -n +2 "$USERSCHEMES") + + + + + out+=("^sep()") + + + out+=("󰛖 $FONTS [ $FONT $FONTSIZE ],^checkout(font)") + out2+=("^tag(font)") + out2+=("^sep($FONTS)") + out2+=("󰛖 $SELECTFONT [ $FONT $FONTSIZE ],mb-setfont conky_all;$me") + out2+=("^sep($FONTSIZE_LBL)") + out2+=("󰧴 $INCREASE $((FONTSIZE+1)) px,conkyctl basefont_inc_all;$me") + out2+=("󰧳 $DECREASE $((FONTSIZE-1)) px,conkyctl basefont_dec_all;$me") + out2+=("^sep()") + sizes=(14 13 12 11 10 9 8 7 6) + for i in "${sizes[@]}" + do + [[ "$FONTSIZE" == "$i" ]] && out2+=(" $i px,conkyctl basefont_size_all $i;$me") || out2+=(" $i px,conkyctl basefont_size_all $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 + #notify-send.sh "Ile" "${#favfonts[@]}" + if [ "${#favfonts[@]}" -gt 0 ];then + out2+=("^sep($FONTFAMILY_LBL)") + for fon in "${favfonts[@]}";do + [[ "$FONT" == "$fon" ]] && out2+=(" ${fon},$me") || out2+=(" ${fon},conkyctl basefont_family_all \"${fon}\";$me") + done + fi + out2+=("^sep()") + out2+=(" $_EDIT_FAVFONTS,geany ~/.config/mabox/fonts.list") + + + [[ "$SHADOWS" == "shadow" ]] && out+=("󰄲 $SHADOW,conkyctl shades_all no;$me") || out+=("󰄱 $SHADOW,conkyctl shades_all shadow;$me") + [[ "$SHADOWS" == "outline" ]] && out+=("󰄲 $OLINE,conkyctl shades_all no;$me") || out+=("󰄱 $OLINE,conkyctl shades_all outline;$me") + out+=("^sep()") + + [[ "$BORD" == false ]] && out+=("󰄱 $BORDERS [ $BWIDTH px ],^checkout(border)") || out+=("󰄲 $BORDERS [ $BWIDTH px ],^checkout(border)") + + out2+=("^tag(border)") + out2+=("^sep($DRAW $BORDERS?)") + [[ "$BORD" == false ]] && out2+=(" $YES,conkyctl draw_borders_all true;$me") || out2+=(" $YES,conkyctl draw_borders_all false;$me") + [[ "$BORD" == false ]] && out2+=(" $NO,conkyctl draw_borders_all true;$me") || out2+=(" $NO,conkyctl draw_borders_all false;$me") + + out2+=("^sep($_BORDER_WIDTH)") + [[ "${BWIDTH}" == "1" ]] && out2+=(" 1 px ${_OLD_STYLE}") || out2+=(" 1 px ${_OLD_STYLE},conkyctl border_width_all 1") + for i in 2 4 6 8 10 12;do + [[ "${BWIDTH}" == "${i}" ]] && out2+=(" ${i} px") || out2+=(" ${i} px,conkyctl border_width_all ${i}") + done + + out2+=("^sep($STIPPLED_BORDERS?)") + [[ "$STIP" == 0 ]] && out2+=(" 0 ($SOLID_LINE),conkyctl stippled_borders_all 0;$me") || out2+=(" 0 ($SOLID_LINE),conkyctl stippled_borders_all 0;$me") + out2+=("^sep()") + [[ "$STIP" == 1 ]] && out2+=(" 1 px,conkyctl stippled_borders_all 1;$me") || out2+=(" 1 px,conkyctl stippled_borders_all 1;$me") + [[ "$STIP" == 2 ]] && out2+=(" 2 px,conkyctl stippled_borders_all 2;$me") || out2+=(" 2 px,conkyctl stippled_borders_all 2;$me") + [[ "$STIP" == 3 ]] && out2+=(" 3 px,conkyctl stippled_borders_all 3;$me") || out2+=(" 3 px,conkyctl stippled_borders_all 3;$me") + [[ "$STIP" == 4 ]] && out2+=(" 4 px,conkyctl stippled_borders_all 4;$me") || out2+=(" 4 px,conkyctl stippled_borders_all 4;$me") + + out+=("^sep($_COLORS)") + pgrep -af "conky/sysinfo_mbcolor" > /dev/null || out+=("  README (important info),conkyctl baseconky_info") + if [ "$WINTRANS" == false ];then + out+=("$BACKGROUND AbCd ,^pipe(mbclr '$WINCLR' conkyctl win_bgcolor_all '${BACKGROUND}' '$me')") + else + out+=("$BACKGROUND transparent ,^pipe(mbclr '$WINCLR' conkyctl win_bgcolor_all '${BACKGROUND}' '$me')") + fi + [[ "$WINTRANS" == false ]] && out+=("󰄱 $TRANSPARENT,conkyctl transparent_all true;$me") || out+=("󰄲 $TRANSPARENT,conkyctl transparent_all false;$me") + out+=("^sep()") + + if [[ "${recolor3}" == "1" ]];then + CLR3="#" + recolor3=0 + fi + out+=("$DEFCOLOR border ,^pipe(mbclr '$CLR' conkyctl default_color_all '${DEFCOLOR}' '$me')") + out+=("$COLOR_0 AbCd ,^pipe(mbclr '$CLR0' conkyctl color0_all '${COLOR_0}' '$me')") + out+=("$COLOR_1 AbCd ,^pipe(mbclr '$CLR1' conkyctl color1_all '${COLOR_1}' '$me')") + out+=("$COLOR_2 󰍴󰍴󰍴󰍴󰍴 ,^pipe(mbclr '$CLR2' conkyctl color2_all '${COLOR_2}' '$me')") + [[ "$CLR3" != "#" ]] && out+=("$COLOR_3 AbCd ,^pipe(mbclr '$CLR3' conkyctl color3_all '${COLOR_3}' '$me')") + #out+=("^sep()") + + + + + + #out+=("^sep($RESET)") + #out+=("󰁯 $RESETCOLORS,^checkout(resetcolors)") + #out2+=("^tag(resetcolors)") + #out2+=("^sep($AREYOUSURE)") + #out2+=("$YES,conkyctl resetcolorsall;$me") + #out+=(" $RESETALL,^checkout(resetall)") NOT SAFE!!! + #out2+=("^tag(resetall)") + #out2+=("^sep($AREYOUSURE)") + #out2+=("$YES,rm $BASECONKY;$me") + +else + out+=("^sep($NO_CONKY_RUNNING)") + SESSIONFILE=$HOME/.config/conky/conky-sessionfile + if [ -f "$SESSIONFILE" ];then + read N REST <<< $(wc -l "${SESSIONFILE}") + if [[ "$N" -gt "0" ]];then + out+=("$RUN_CONKY_SESSION ($N Conky),conky_toggle;$me") + fi + fi + + out+=("^sep($CLICKTOSTART)") + for confpath in "$CONKYDIR"/*_mb*; + do + filename=${confpath##*/} + name=${filename%%_mb*} + title=${name//_/ } + out+=("${title^},conkyctl startone ${confpath};$me") + done + out+=("^sep()") + out+=("$STARTALL,conkyctl startall;$me") +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") + out+=(" ${arrow_string_left} ${arrow_string_left} $_LEFTSIDEPANEL,mb-jgtools places") + + 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 + TABS=160 + 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 + +cat < ${MENU_ITEMS} +@icon,,$((jgtools_padding)),$((jgtools_padding)),270,150,4,left,top,,,${THUMB} +@icon,,$((jgtools_padding+8)),$((jgtools_padding+8)),32,32,4,left,top,,,${HOME}/.icons/mabox-logo-square.svg +@rect,,$((jgtools_padding+4)),$((jgtools_padding + 116)),262,28,0,left,top,#222222 20,#222222 70, +#@icon,,$((jgtools_padding + 4)),$((jgtools_padding + 4)),270,150,4,left,top,,,/usr/share/mabox-colorizer/img/colorizer-conky.png +@text,,$((jgtools_padding + 80)),$((jgtools_padding + 116)),190,30,0,left,top,#FFFFFF ,${WINCLR},${COLORIZECONKY} +@rect,,$((jgtools_padding + 235)),$((jgtools_padding + 6)),29,60,0,left,top,#FFFFFF 30,${WINCLR} 60, +@rect,,$((jgtools_padding + 6)),$((jgtools_padding + 84)),29,60,0,left,top,#FFFFFF 30,${WINCLR} 60, +@rect,,$((jgtools_padding + 38)),$((jgtools_padding + 104)),29,40,0,left,top,#FFFFFF 30,${WINCLR} 60, +$(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[@]}" + diff --git a/bin/colorizer-fonts b/bin/colorizer-fonts new file mode 100755 index 0000000..f2158b8 --- /dev/null +++ b/bin/colorizer-fonts @@ -0,0 +1,414 @@ +#!/bin/bash +# +# colorizer - set of tools for Mabox (auto)theming +# Copyright (C) 2022-2025 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 . + +. $HOME/.config/mabox/mabox.conf + +me="colorizer-fonts -s" + +CONKYDIR="$HOME/.config/conky" +BASECONKY="$CONKYDIR/sysinfo_mbcolor.conkyrc" + + +# Favorited fonts list +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 + + +case "$LANG" in + pl*) + _INCREASE_ALL="Powiększ wszystkie" + _DECREASE_ALL="Pomniejsz wszystkie" + _RESET="Resetuj do domyślnych" + _ALL="Wszystko" + _OPENBOX_WM="Openbox" + _TITLEBAR_FONT="Czcionka tytułu" + _BOLD="Pogrubienie" + _ITALIC="Kursywa" + _TEXTALIGN="Wyrównanie" + _LEFT="Lewo" + _CENTER="Środek" + _RIGHT="Prowo" + _MENUS="Menu" + _MENU_TITLE="Nagłówek" + _MENU_ITEM="Element" + _MENU_TITLE_FONT="Czcionka nagłówka" + _MENU_ITEM_FONT="Czcionka elementu" + _FONT_CUSTOM="Wybierz czcionkę i rozmiar..." + _FONT_FAMILY="rodzina" + _EDIT_FAVFONTS="Edytuj ulubione czcionki" + _FONT_SIZE="rozmiar" + _INCREASE="Powiększ do" + _DECREASE="Pomniejsz do" + _CONKY="Conky" + _CONKYFONT="Czcionka dla Conky" + _CONKYBASEFONT="Czcionka podstawowa" + _C_EFFECTS="Efekty" + _SHADOW="Cień" + _OUTLINE="Poświata" + _PANEL="Panel tint2" + _GTK="GTK" + _FAVORITE_LBL="Ulubione czcionki" + _USE="Użyj czcionki" + _FOR="dla..." + _COLORIZER_ROOT="Colorizer - menu główne" + _LEFTSIDEPANEL="Lewy panel boczny" + ;; + *) + _INCREASE_ALL="Increase all" + _DECREASE_ALL="Decrease all" + _RESET="Reset to defaults..." + _ALL="All" + _OPENBOX_WM="Openbox" + _TITLEBAR_FONT="TitleBar Font" + _BOLD="Bold" + _ITALIC="Italic" + _TEXTALIGN="Text align" + _LEFT="Left" + _CENTER="Center" + _RIGHT="Right" + _MENUS="Menus" + _MENU_TITLE="Menu Title" + _MENU_ITEM="Menu Item" + _MENU_TITLE_FONT="Menu Title Font" + _MENU_ITEM_FONT="Menu Item Font" + _FONT_CUSTOM="Select custom font and size..." + _FONT_FAMILY="font family" + _EDIT_FAVFONTS="Edit favorite fonts list" + _FONT_SIZE="font size" + _INCREASE="Increase to" + _DECREASE="Decrease to" + _CONKY="Widgets (Conky)" + _CONKYFONT="Conky Font" + _CONKYBASEFONT="Base font" + _C_EFFECTS="Effects" + _SHADOW="Shadow" + _OUTLINE="Outline" + _PANEL="Panel Tint2" + _GTK="GTK Font" + _FAVORITE_LBL="Favorite Fonts" + _USE="Use" + _FOR="font for ..." + _COLORIZER_ROOT="Colorizer rootmenu" + _LEFTSIDEPANEL="Left Sidepanel" + ;; +esac + +getvalues () { +GTK2RC="$HOME"/.gtkrc-2.0 +GTK_FONT=( $(grep "gtk-font-name" ${GTK2RC} | cut -d'"' -f2) ) +GTK_FAMILY=${GTK_FONT[@]::${#GTK_FONT[@]}-1} +GTK_SIZE=${GTK_FONT[-1]} + +nspace="http://openbox.org/3.4/rc" +obcfg="$HOME/.config/openbox/rc.xml" + +OBFSIZE=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:size' "$obcfg") +OBFNAME=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:name' "$obcfg") +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' "$obcfg") +SLANT=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:slant' "$obcfg") + +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" + +if [ -f "$THEMERC" ];then +read TXTJUST <<< "$(grep text.justify ${THEMERC} | cut -d':' -f2)" +else +: +fi + +read FONTDEF <<< "$(grep "font .*=.*,$" ${BASECONKY} | cut -d'=' -f2,3 |cut -d"'" -f2)" +C_FONT=${FONTDEF%:*} +C_FONTSIZE=${FONTDEF#*=} + +read OUTLINE <<< "$(grep draw_outline ${BASECONKY} | cut -d'=' -f2 | cut -d"," -f1)" +read SHADES <<< "$(grep draw_shades ${BASECONKY} | cut -d'=' -f2 | cut -d"," -f1)" +SHADOWS="no" +[[ "$OUTLINE" == "true" ]] && SHADOWS="outline" +[[ "$SHADES" == "true" ]] && SHADOWS="shadow" +} + + getvalues +out+=("󰧴 $_INCREASE_ALL,fontctl inc_all;$me") +out+=("󰧳 $_DECREASE_ALL,fontctl dec_all;$me") +out+=("^sep()") +out+=("󰑓 $_RESET,^checkout(reset)") + out2+=("^tag(reset)") + out2+=("^sep($_RESET)") + out2+=("$_ALL,fontctl resetall;$me") + out2+=("^sep()") + out2+=("$_TITLEBAR_FONT ($_OPENBOX_WM),fontctl resetob;$me") + out2+=("$_MENUS,fontctl resetmenus;$me") + out2+=("$_CONKY,fontctl resetconky;$me") + out2+=("$_GTK,fontctl resetgtk;$me") +out+=("^sep($_OPENBOX_WM)") +out+=("$_TITLEBAR_FONT [ $OBFNAME $OBFSIZE ],^checkout(obtitletext)") +out+=("^sep($_MENUS)") +out+=("$_MENU_TITLE [ $menu_sep_font_family $menu_sep_font_size ],^checkout(mtitlefont)") +out+=("$_MENU_ITEM [ $menu_font_family $menu_font_size ],^checkout(mitemfont)") +out+=("^sep($_GTK)") +out+=("$_GTK [ ${GTK_FAMILY} ${GTK_SIZE} ],^checkout(gtkfont)") +out+=("^sep($_CONKY)") +out+=("$_CONKYBASEFONT [ $C_FONT $C_FONTSIZE ],^checkout(conkyfont)") +#out+=("^sep($_PANEL)") +#out+=("(not implemented yet)") + +# FAV FONTS in rootmenu +if [ "${#favfonts[@]}" -gt 0 ];then + out+=("^sep($_FAVORITE_LBL)") + i=0 + for fon in "${favfonts[@]}";do + out+=(" ${fon},^checkout(favfont$i),$me") + out2+=("^tag(favfont$i)") + out2+=("^sep($_USE)") + out2+=("^sep(${fon})") + out2+=("^sep($_FOR)") + out2+=("$_TITLEBAR_FONT,obtctl fontfamily \"${fon}\";$me") + out2+=("$_MENU_TITLE,mb-setvar \"menu_sep_font_family='${fon}'\";$me") + out2+=("$_MENU_ITEM,mb-setvar \"menu_font_family='${fon}'\";$me") + out2+=("$_GTK,fontctl gtk_fontfamily \"${fon}\";$me") + out2+=("$_CONKY,conkyctl basefont_family_all \"${fon}\";$me") + i=$((i+1)) + done + out+=("^sep()") + out+=(" $_EDIT_FAVFONTS ,geany ~/.config/mabox/fonts.list") +fi + + +#SUBMENUS + +# OpenBox Title Font +out2+=("^tag(obtitletext)") +out2+=("^sep($_TITLEBAR_FONT)") +out2+=("^sep($OBFNAME $OBFSIZE)") +out2+=("󰛖 $_FONT_CUSTOM,mb-setfont obtitle;$me") +out2+=("^sep($_FONT_SIZE)") +out2+=("󰧴 $_INCREASE $((OBFSIZE+1)) px,fontctl ob_fontsize inc;$me") +out2+=("󰧳 $_DECREASE $((OBFSIZE-1)) px,fontctl ob_fontsize dec;$me") +out2+=("^sep()") +sizes=(16 15 14 13 12 11 10 9 8) +for i in "${sizes[@]}" +do +[[ "$OBFSIZE" == "$i" ]] && out2+=(" $i px,obtctl fontsize $i;$me") || out2+=(" $i px,fontctl ob_fontsize $i;$me") +done +out2+=("^sep($_FONT_FAMILY)") + +if [ "${#favfonts[@]}" -gt 0 ];then + for fon in "${favfonts[@]}";do + [[ "${OBFNAME}" == "$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") + + + +# Menu Title Font +out2+=("^tag(mtitlefont)") +out2+=("^sep($_MENU_TITLE_FONT)") +out2+=("^sep($menu_sep_font_family $menu_sep_font_size)") + +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_FAVFONTS ,geany ~/.config/mabox/fonts.list") + + + + +# Item font submenu +out2+=("^tag(mitemfont)") +out2+=("^sep($_MENU_ITEM_FONT)") +out2+=("^sep($menu_font_family $menu_font_size)") +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 [ "${#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_FAVFONTS,geany ~/.config/mabox/fonts.list") + +# Conky + +out2+=("^tag(conkyfont)") +out2+=("^sep($_CONKYFONT)") +out2+=("^sep($C_FONT $C_FONTSIZE)") +out2+=("󰛖 $_FONT_CUSTOM,mb-setfont conky_all;$me") + +out2+=("^sep($_FONT_SIZE)") +out2+=("󰧴 $_INCREASE $((C_FONTSIZE+1)) px,conkyctl basefont_inc_all;$me") +out2+=("󰧳 $_DECREASE $((C_FONTSIZE-1)) px,conkyctl basefont_dec_all;$me") +out2+=("^sep()") +sizes=(14 13 12 11 10 9 8 7 6) +for i in "${sizes[@]}" + do + [[ "$C_FONTSIZE" == "$i" ]] && out2+=(" $i px,conkyctl basefont_size_all $i;$me") || out2+=(" $i px,conkyctl basefont_size_all $i;$me") +done + +if [ "${#favfonts[@]}" -gt 0 ];then + out2+=("^sep($_FONT_FAMILY)") + for fon in "${favfonts[@]}";do + [[ "$C_FONT" == "$fon" ]] && out2+=(" ${fon},$me") || out2+=(" ${fon},conkyctl basefont_family_all \"${fon}\";$me") + done +fi +out2+=("^sep()") +out2+=(" $_EDIT_FAVFONTS,geany ~/.config/mabox/fonts.list") + +out2+=("^sep($_C_EFFCTS)") +[[ "$SHADOWS" == "shadow" ]] && out2+=("󰄲 $_SHADOW,conkyctl shades_all no;$me") || out2+=("󰄱 $_SHADOW,conkyctl shades_all shadow;$me") +[[ "$SHADOWS" == "outline" ]] && out2+=("󰄲 $_OUTLINE,conkyctl shades_all no;$me") || out2+=("󰄱 $_OUTLINE,conkyctl shades_all outline;$me") + + + +# GTK 2/3 font +out2+=("^tag(gtkfont)") +out2+=("^sep($_GTK)") +out2+=("^sep($menu_font_family $menu_font_size)") +out2+=("󰛖 $_FONT_CUSTOM,mb-setfont gtk;$me") +out2+=("^sep($_FONT_SIZE)") +out2+=("󰧴 $_INCREASE $((GTK_SIZE+1)) px,fontctl gtk_fontsize inc;$me") +out2+=("󰧳 $_DECREASE $((GTK_SIZE-1)) px,fontctl gtk_fontsize dec;$me") +out2+=("^sep()") +sizes=(14 13 12 11 10 9 8) +for i in "${sizes[@]}" +do + [[ "$GTK_SIZE" == "$i" ]] && out2+=(" $i px,$me") || out2+=(" $i px,fontctl gtk_fontsize $i;$me") +done + +if [ "${#favfonts[@]}" -gt 0 ];then + out2+=("^sep($_FONT_FAMILY)") + for fon in "${favfonts[@]}";do + [[ "$GTK_FAMILY" == "$fon" ]] && out2+=(" ${fon},$me") || out2+=(" ${fon},fontctl gtk_fontfamily \"${fon}\";$me") + done +fi + out2+=("^sep()") + out2+=(" $_EDIT_FAVFONTS,geany ~/.config/mabox/fonts.list") + +### RUN +if [[ "$1" == "-s" ]]; then + . /usr/share/mb-jgtools/pipemenu-standalone.cfg + + + CNF_DIR="$HOME/.config/colorizer" + CNF_FILE="$CNF_DIR/colorizer.conf" + source "$CNF_FILE" + + out+=("^sep()") + out+=(" ${arrow_string_left} $_COLORIZER_ROOT,colorizer -s") + out+=(" ${arrow_string_left} ${arrow_string_left} $_LEFTSIDEPANEL,mb-jgtools places") + + 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 < ${MENU_ITEMS} +@icon,,$((jgtools_padding)),$((jgtools_padding)),270,150,4,left,top,,,${THUMB} +@rect,,$((jgtools_padding+4)),$((jgtools_padding + 116)),262,28,0,left,top,#222222 20,#222222 70, +@text,,$((jgtools_padding + 10)),$((jgtools_padding + 106)),100,28,0,left,top,#FFFFFF ,${WINCLR}, +@text,,$((jgtools_padding + 128)),$((jgtools_padding + 116)),150,28,0,left,top,#FFFFFF ,${WINCLR},Mabox Fonts config + + +$(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[@]}" + diff --git a/bin/colorizer-menus b/bin/colorizer-menus new file mode 100755 index 0000000..1734962 --- /dev/null +++ b/bin/colorizer-menus @@ -0,0 +1,643 @@ +#!/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 . + + + +SYSSCHEMES="/usr/share/mabox-colorizer/colorschemes/menus.csv" +USERSCHEMES="$HOME/.config/colorizer/menus/userschemes2.csv" + + +### Wallpaper colors +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" + + + +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" + QUICK_TWEAKS="Ustawienia główne" + OVERALL_STYLE="Ogólny styl" + SCHEMES="Motywy kolorystycznie" + SYSTEM_SCHEMES="Systemowe" + YOUR_SCHEMES="Moje motywy" + SAVE_CURRSCHEME="Zapisz aktualną kolorystykę jako..." + OPEN_SCHEMEFILE="Odwórz plik ze schematami w edytorze" + COLORSCHEME="Schemat kolorów" + APPLY_SCHEME="Zastosuj" + DELETE="Usuń" + DELETE_SCHEME="Usuń schemat kolorów" + BORDER="Obramowanie" + PADDING="Margines wewnętrzny" + RADIUS="Zaokrąglone rogi" + SUBSPACING="Odstęp submenu" + LINE_HEIGHT="Wysokość lini" + ARROW_STRING="Znak strzałki" + ARROW_STRING_LEFT="Znak strzałki lewej" + MBG_OPACITY="(Nie)przeźroczystość Menu" + SIZING="Rozmiar menu" + WIDE="szerokie" + NORMAL="normalne" + TIGHT="wąskie" + MONOCHROMATIC="Monochromatyczny" + CHOOSE_AND_PICK="Wybierz wariant i pobierz kolor..." + GENERATEFROMWP="Generuj z kolorów tapety..." + EXACT="Dokładny" + 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="Zastosuj gradient" + GRADIENT_REVERSE="Odwróć kolory Gradientu" + ITEM="Pozycja (element) menu " + FONT="Czcionka" + FONTS="Czcionki" + 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" + SEL_ITEM="Aktywny element (akcent)" + COLOR_SEL_BG="Tło" + COLOR_SEL_FG="Tekst" + COLOR_SEL_BORDER="Obramowanie" + I_BORDER="Obramowanie" + I_RADIUS="i Zaokrąglenie" + ITEM_BORDER="Obramowanie (px)" + ITEM_RADIUS="Zaokrąglenie (px)" + COLOR_NORM_BG="Tło" + SEPARATOR_TITLE="Separator/Nagłówek" + TITLE="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" + _COLORIZER_ROOT="Colorizer - menu główne" + _LEFTSIDEPANEL="Lewy panel boczny" + ;; + *) + MENU_THEME="Menu theme" + QUICK_TWEAKS="Global Settings/Quick Tweaks" + OVERALL_STYLE="Overall style" + SCHEMES="Color Schemes" + SYSTEM_SCHEMES="System colorschemes" + YOUR_SCHEMES="My colorschemes" + SAVE_CURRSCHEME="Save current colors as..." + OPEN_SCHEMEFILE="Open schemes file in editor" + COLORSCHEME="Color Scheme" + APPLY_SCHEME="Apply colorscheme" + DELETE="Delete" + DELETE_SCHEME="Delete colorscheme" + BORDER="Menu Border" + PADDING="Padding" + RADIUS="Rounded Corners" + SUBSPACING="Submenu Spacing" + LINE_HEIGHT="Line height" + ARROW_STRING="Arrow string" + ARROW_STRING_LEFT="Left Arrow string" + MBG_OPACITY="Menu BG Opacity" + SIZING="Menu sizing" + WIDE="wide" + NORMAL="normal" + TIGHT="tight" + MONOCHROMATIC="Monochromatic" + CHOOSE_AND_PICK="Choose variant and pick color..." + GENERATEFROMWP="Generate from wallpaper colors..." + EXACT="Exact" + LIGHTBG="Light Background" + DARKBG="Dark Background" + COLOR_MENU_BG="Background (BG)" + COLOR_MENU_BG_TO="BG 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="Apply gradient" + GRADIENT_REVERSE="Reverse gradient colors" + ITEM="Item" + FONT="Font" + FONTS="Fonts" + 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" + SEL_ITEM="Selected Item (accent)" + COLOR_SEL_BG="Background" + COLOR_SEL_FG="Text" + COLOR_SEL_BORDER="Border" + I_BORDER="Item Border" + I_RADIUS="and Radius" + ITEM_BORDER="Item Border (px)" + ITEM_RADIUS="Item Radius (px)" + COLOR_NORM_BG="Item Background" + SEPARATOR_TITLE="Separator/Title" + TITLE="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" + _COLORIZER_ROOT="Colorizer rootmenu" + _LEFTSIDEPANEL="Left Sidepanel" + ;; +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)" + [[ "$NORMBG" == "" ]] && NORMBG="${MBG}" NORMBGA=0 + 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 + +# Current colors +currcolors="${MBG}|${MBGA}|${MBGT}|${MBGTA}|${MBORDER}|${MBORDERA}|${TBG}|${TBGA}|${TFG}|${TFGA}|${TBORDER}|${TBORDERA}|${NORMBG}|${NORMBGA}|${NFG}|${NFGA}|${SBG}|${SBGA}|${SFG}|${SFGA}|${SBORDER}|${SBORDERA}|${SEPFG}|${SEPFGA}|${jgtools_border}|${jgtools_radius}|${jgtools_padding}|${submenu_spacing}|${IBORDER}|${IRADIUS}|${arrow_string}|${arrow_string_left}|${SEPHALIGN}|${GRADIENT}|" +#echo "${currcolors}" > ~/.config/mabox/.menu_colors +###notify-send.sh "Currcolors" "${currcolors}" +if [ ! -f "$USERSCHEMES" ]; then + mkdir -p "$HOME/.config/colorizer/menus/" + echo " MBG |opa| MBGT |opa|MBORDER|opa| TBG |opa| TFG |opa|TBORDER|opa|NORMBG |opa| NFG |opa| SBG |opa| SFG |opa|SBORDER|opa| SEPFG |opa|B|R|P|SS|IB|IR|A|AL|SEPHAL|GRADIENT|scheme_name" > "$USERSCHEMES" +fi + +#out+=("^sep($MENU_THEME: ${jgmenu_theme})") +out+=(" $QUICK_TWEAKS,^checkout(tweaks)") + + out2+=("^tag(tweaks)") + out2+=("^sep($OVERALL_STYLE)") + ###### + out2+=("$BORDER [ ${jgtools_border:-0}px ],^checkout(mborder)") + out2+=("$PADDING [ ${jgtools_padding:-0}px ],^checkout(mpadding)") + #out2+=("$RADIUS [ ${jgtools_radius:-0} ],^checkout(mradius)") + out2+=("$SUBSPACING [ ${submenu_spacing:-0}px ],^checkout(subspacing)") + out2+=("^sep()") + out2+=("$LINE_HEIGHT [ $item_height_factor% ],^checkout(lineheight)") + out2+=("^sep()") + out2+=("$ARROW_STRING [ $arrow_string ],^checkout(arrow)") + out2+=("$ARROW_STRING_LEFT [ $arrow_string_left ],^checkout(arrowleft)") + + + out3+=("^tag(mborder)") + out3+=("^sep($BORDER)") + for i in 0 1 2 3 4 5 6 8 10 12; do [[ "$jgtools_border" == $i ]] && out3+=(" $(printf "%3s,%s" "$i" "jgctl border ${i}")") || out3+=(" $(printf "%3s,%s" "$i" "jgctl border ${i}")");done + + out3+=("^tag(mpadding)") + out3+=("^sep($PADDING)") + for i in 0 2 4 6 8 10 12 14 16 18 20 22 24 28 32 40; do [[ "$jgtools_padding" == $i ]] && out3+=(" $(printf "%3s,%s" "$i" "jgctl padding ${i}")") || out3+=(" $(printf "%3s,%s" "$i" "jgctl padding ${i}")");done + + out3+=("^tag(subspacing)") + out3+=("^sep($SUBSPACING)") + for i in -20 -12 -10 -8 -6 -4 -2 0 1 2 4 6 8 10 12 14 16 18 20; do [[ "$submenu_spacing" == $i ]] && out3+=(" $(printf "%4s,%s" "$i" "mb-setvar submenu_spacing=${i};$me")") || out3+=(" $(printf "%4s,%s" "$i" "mb-setvar submenu_spacing=${i};$me")");done + + out3+=("^tag(lineheight)") + out3+=("^sep($LINE_HEIGHT)") + for i in 160 180 200 220 240 280 300; do [[ "$item_height_factor" == $i ]] && out3+=(" $(printf "%4s%%,%s" "$i" "mb-setvar item_height_factor=${i};$me")") || out3+=(" $(printf "%4s%%,%s" "$i" "mb-setvar item_height_factor=${i};$me")");done + + out3+=("^tag(arrow)") + out3+=("^sep($ARROW_STRING)") + for i in "" "" "" "" "" "" "󰔰" "󰮺" "" "壟" "" "" "" "" "" "󰋇" "..." ":." "." "+" "^" "-" "_" "" "" "󰞔" "" ""; do [[ "$arrow_string" == $i ]] && out3+=(">> $i <<,$me") || out3+=(" $i,mb-setvar arrow_string=${i};$me");done + + out3+=("^tag(arrowleft)") + out3+=("^sep($ARROW_STRING_LEFT)") + for i in "" "" "" "" "" "" "󰶢" "󰮹" "" "鹿" "" "" "" "" "" "󰩔"; do [[ "$arrow_string_left" == $i ]] && out3+=(">> $i <<,$me") || out3+=(" $i,mb-setvar arrow_string_left=${i};$me");done + + out2+=("^sep()") + out2+=("$MBG_OPACITY,^checkout(mbgopacity") + out3+=("^tag(mbgopacity)") + out3+=("^sep(mbgopacity)") + out3+=("100% Opaque,jgctl tweak opacity 100;$me") + out3+=("90%,jgctl tweak opacity 90;$me") + out3+=("80%,jgctl tweak opacity 80;$me") + out3+=("60%,jgctl tweak opacity 60;$me") + out3+=("50%,jgctl tweak opacity 50;$me") + out3+=("40%,jgctl tweak opacity 40;$me") + out3+=("30%,jgctl tweak opacity 30;$me") + out3+=("20%,jgctl tweak opacity 20;$me") + out3+=("10%,jgctl tweak opacity 10;$me") + out3+=("0% Fully transparent,jgctl tweak opacity 0;$me") + + out2+=("^sep()") + out2+=("Solid Color,jgctl tweak solid;$me") + out2+=("Gradient,jgctl tweak gradient;$me") + + + out2+=("^sep($SIZING)") + out2+=("$WIDE,jgctl tweak sizing wide;$me") + out2+=("$NORMAL,jgctl tweak sizing normal;$me") + out2+=("$TIGHT,jgctl tweak sizing tight;$me") + + + +#### COLOR SCHEMES  +out+=(" $SCHEMES,^checkout(schemes)") + out2+=("^tag(schemes)") + out2+=("^sep($SCHEMES)") + out2+=("^sep($MONOCHROMATIC)") + out2+=("^sep($CHOOSE_AND_PICK)") + out2+=(" $EXACT...,jgctl mono pick exact col") + out2+=("^sep()") + out2+=(" $LIGHTBG...,jgctl mono pick light col") + out2+=(" $DARKBG...,jgctl mono pick dark col") + out2+=("^sep($GENERATEFROMWP)") + out2+=(" $LIGHTBG ,w2theme menu light;$me") + out2+=(" $DARKBG ,w2theme menu dark;$me") + out2+=("^sep($SYSTEM_SCHEMES)") + + n=1 + while IFS="|" read -r mbg mbga mbgt mbgta mborder mbordera tbg tbga tfg tfga tborder tbordera normbg normbga nfg nfga sbg sbga sfg sfga sborder sbordera sepfg sepfga b r p ss ibor irad a al sephal grad scheme_name + do + ((n=n+1)) + case "$grad" in + none)icon="󰄱";; + top)icon="";; + right)icon="";; + bottom)icon="";; + left)icon="";; + top_left)icon="";; + top_right)icon="";; + bottom_left)icon="";; + bottom_right)icon="";; + esac + out2+=("$(printf '%-20s' "${scheme_name}") item title [ sel ] ${icon} ,jgctl applyscheme sys $n;$me") + done < <(tail -n +2 "$SYSSCHEMES") + + out2+=("^sep($YOUR_SCHEMES)") + out2+=(" $SAVE_CURRSCHEME,jgctl savescheme '${currcolors}';$me") + out2+=(" $OPEN_SCHEMEFILE,xdg-open $USERSCHEMES") + out2+=("^sep()") + n=1 + while IFS="|" read -r mbg mbga mbgt mbgta mborder mbordera tbg tbga tfg tfga tborder tbordera normbg normbga nfg nfga sbg sbga sfg sfga sborder sbordera sepfg sepfga b r p ss ibor irad a al sephal grad scheme_name + do + ((n=n+1)) + case "$grad" in + none)icon="󰄱";; + top)icon="";; + right)icon="";; + bottom)icon="";; + left)icon="";; + top_left)icon="";; + top_right)icon="";; + bottom_left)icon="";; + bottom_right)icon="";; + esac + out2+=("$(printf '%-20s' "${scheme_name}") item title [ sel ] ${icon} ,^checkout(sch${n})") + out3+=("^tag(sch${n}") + out3+=("^sep($COLORSCHEME: ${scheme_name})") + out3+=(" $APPLY_SCHEME,jgctl applyscheme usr ${n};$me") + out3+=("^sep($DELETE)") + out3+=("󰗨 $DELETE_SCHEME ${scheme_name},jgctl delscheme ${n};$me") + done < <(tail -n +2 "$USERSCHEMES") + + +### MENU +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')") +if [[ "$jgtools_border" != "0" ]];then +out+=("$(printf '%3s' "$MBORDERA") $COLOR_MENU_BORDER,^pipe(mbclr '$MBORDER' jgctl color_menu_border '${COLOR_MENU_BORDER}' '$me')") +fi +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 [ $icon ],^checkout(gradientpos)") +out+=(" $GRADIENT_REVERSE,jgctl gradient '${MBGT}' '${MBG}';$me") +out+=(" $PRE_GRADIENTS,^pipe(mbgrad menu)") + + + +### ITEM +out+=("^sep($ITEM)") +out+=("$(printf '%3s' "$NFGA") AbCd $COLOR_NORM_FG,^pipe(mbclr '$NFG' jgctl color_norm_fg '${COLOR_NORM_FG}' '$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+=("$I_BORDER [ $IBORDER ] $I_RADIUS [ $IRADIUS ],^checkout(itemborder_radius)") + +### SELECTED ITEM (ACCENT) +out+=("^sep($SEL_ITEM)") +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')") +if [[ "$IBORDER" != "0" ]];then +out+=("$(printf '%3s' "$SBORDERA") $COLOR_SEL_BORDER,^pipe(mbclr '$SBORDER' jgctl color_sel_border '${COLOR_SEL_BORDER}' '$me')") +fi +out+=("^sep()") +out+=("Apply accent preset,^checkout(sel_accents)") + + out2+=("^tag(sel_accents)") + out2+=("^sep(Accent presets)") + while IFS="," read -r BG FG BGNAME FGNAME + do + [[ "$BGNAME" == "" ]] && BGNAME=${BG} + [[ "$FGNAME" == "" ]] && FGNAME=${FG} + out2+=(" $(printf '%*s' 25 "${FGNAME} on ${BGNAME}") ,jgctl accent '${BG}' '${FG}';$me") + out21+=(" $(printf '%*s' 25 "${BGNAME} on ${FGNAME}") ,jgctl accent '${FG}' '${BG}';$me") + done < <(tail -n +2 /usr/share/mabox-colorizer/readable_colors.csv) + out2+=("${out21[@]}") + +### TITLE/SEPARATOR +out+=("^sep($SEPARATOR_TITLE)") +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')") + + + +# FONTS +out+=("^sep($FONTS)") +out+=("󰛖 $TITLE [ $menu_sep_font_family $menu_sep_font_size ],^checkout(mtitlefont)") +out+=("󰛖 $ITEM [ $menu_font_family $menu_font_size ],^checkout(mitemfont)") + + # 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+=("^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+=("^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)") +[[ "$SEPHALIGN" == "left" ]] && out2+=("  $H_LEFT,jgctl sep_halign left;$me") || out2+=("  $H_LEFT,jgctl sep_halign left;$me") +[[ "$SEPHALIGN" == "center" ]] && out2+=("  $H_CENTER,jgctl sep_halign center;$me") || out2+=("  $H_CENTER,jgctl sep_halign center;$me") +[[ "$SEPHALIGN" == "right" ]] && out2+=("  $H_RIGHT,jgctl sep_halign right;$me") || out2+=("  $H_RIGHT,jgctl sep_halign right;$me") +out2+=("^tag(itemborder_radius)") +out2+=("^sep($ITEM_BORDER)") +[[ "$IBORDER" == 0 ]] && out2+=(" 0 px,jgctl item_border 0;$me") || out2+=(" 0 px,jgctl item_border 0;$me") +out2+=("^sep()") +[[ "$IBORDER" == 1 ]] && out2+=(" 1 px,jgctl item_border 1;$me") || out2+=(" 1 px,jgctl item_border 1;$me") +[[ "$IBORDER" == 2 ]] && out2+=(" 2 px,jgctl item_border 2;$me") || out2+=(" 2 px,jgctl item_border 2;$me") + +out2+=("^sep($ITEM_RADIUS)") +[[ "$IRADIUS" == 0 ]] && out2+=(" 0 px,jgctl item_radius 0;$me") || out2+=(" 0 px,jgctl item_radius 0;$me") +out2+=("^sep()") +[[ "$IRADIUS" == 1 ]] && out2+=(" 1 px,jgctl item_radius 1;$me") || out2+=(" 1 px,jgctl item_radius 1;$me") +[[ "$IRADIUS" == 2 ]] && out2+=(" 2 px,jgctl item_radius 2;$me") || out2+=(" 2 px,jgctl item_radius 2;$me") +[[ "$IRADIUS" == 3 ]] && out2+=(" 3 px,jgctl item_radius 3;$me") || out2+=(" 3 px,jgctl item_radius 3;$me") +[[ "$IRADIUS" == 4 ]] && out2+=(" 4 px,jgctl item_radius 4;$me") || out2+=(" 4 px,jgctl item_radius 4;$me") +[[ "$IRADIUS" == 5 ]] && out2+=(" 5 px,jgctl item_radius 5;$me") || out2+=(" 5 px,jgctl item_radius 5;$me") +[[ "$IRADIUS" == 6 ]] && out2+=(" 6 px,jgctl item_radius 6;$me") || out2+=(" 6 px,jgctl item_radius 6;$me") + + +#out+=("^sep($MORE_MENU_SETTINGS)") +#out+=(" $GLOBAL_MENU_SETTINGS,jgmenusettings-pipe -c") +#out+=("$GLOBAL_MENU_SETTINGS,^pipe(jgmenusettings-pipe -r)") + +### 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") + out+=(" ${arrow_string_left} ${arrow_string_left} $_LEFTSIDEPANEL,mb-jgtools places") + + 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 + 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 + +cat < ${MENU_ITEMS} +@icon,,$((jgtools_padding )),$((jgtools_padding)),270,150,4,left,top,,,${THUMB} + +@rect,,$((jgtools_padding+4)),$((jgtools_padding + 116)),262,30,0,left,top,#222222 20,#222222 70, +@text,,$((jgtools_padding + 154)),$((jgtools_padding + 116)),120,30,0,left,top,#FFFFFF ,${WINCLR},Colorizer Menus +@rect,,$((jgtools_padding + 8)),$((jgtools_padding + 22)),35,80,2,left,top,${MBORDER} ${MBORDERA},${MBG} ${MBGA}, +@rect,,$((jgtools_padding + 44)),$((jgtools_padding + 72)),35,60,2,left,top,${MBORDER} ${MBORDERA},${MBG} ${MBGA}, +$(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[@]}" diff --git a/bin/colorizer-ob b/bin/colorizer-ob new file mode 100755 index 0000000..33febcc --- /dev/null +++ b/bin/colorizer-ob @@ -0,0 +1,731 @@ +#!/bin/bash +# +# colorizer - set of tools for Mabox (auto)theming +# Copyright (C) 2022-2025 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 | 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 [ ! -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" + _LEFTSIDEPANEL="Lewy panel boczny" + ;; + *) + 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="Inactive 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" + _LEFTSIDEPANEL="Left Sidepanel" + ;; +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 col") + out2+=(" $DARKBG...,obtctl mono pick dark col") + 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 $USERTHEMES") + 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}' '$me')") +out+=(" $INACTIVE_BORDER,^pipe(mbclr '$NLINE' obtctl inactiveborderColor '${INACTIVE_BORDER}' '$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" == DSLIMC ]] && out2+=(" full (no icon) DSLIMC,obtctl ndslimc DSLIMC;$me") || out2+=(" full (no icon) DSLIMC,obtctl ndslimc DSLIMC;$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") +out+=(" ${arrow_string_left} ${arrow_string_left} $_LEFTSIDEPANEL,mb-jgtools places") + + + 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 + 152)) + +# WALLPAPER IMAGE +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 + +cat < ${MENU_ITEMS} +@icon,,$((jgtools_padding)),$((jgtools_padding)),270,150,4,left,top,,,${THUMB} +@icon,,$((jgtools_padding+8)),$((jgtools_padding)),270,150,4,left,top,,,/usr/share/mabox-colorizer/img/colorizer-ob.png +@rect,,$((jgtools_padding+4)),$((jgtools_padding + 124)),262,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[@]}" diff --git a/bin/colorizer-pyradio b/bin/colorizer-pyradio new file mode 100755 index 0000000..c14923a --- /dev/null +++ b/bin/colorizer-pyradio @@ -0,0 +1,247 @@ +#!/bin/bash +# +# colorizer - set of tools for Mabox (auto)theming +# Copyright (C) 2022-2025 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 . + +# TODO Start Pyradio if not started +# TODO check if theme is writeable (users themes) +# TODO Save as new theme +PR_WINID=$(wmctrl -lp |grep 'PyRadio: \|PyRadio -'|cut -d' ' -f1) +wmctrl -iR ${PR_WINID} + +if [[ ! -f "$HOME"/local/share/applications/pyradio.desktop ]];then + pyradio --terminal terminator > /dev/null 2>&1 +fi + +me="colorizer-pyradio -s" + +THEMERC=~/.config/pyradio/themes/mbcolors.pyradio-theme + +# 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*) + COLORIZE_PYRADIO="Pokoloruj PyRadio" + START_PYRADIO="Uruchom PyRadio" + INFO="Ważna informacja" + INFO_HEAD="Jak działa automatyczna zmiana kolorów?" + INFO_TXT="Automatyczna zmiana kolorów działa z motywem mbcolors (User theme).\nAby go ustawić:\n- użyj klawisza t - wybór motywów\n- zaznacz motyw mbcolors i naciśnij spację - (ustawia jako domyślny)\n- wciśnij c - aby włączyć śledzenie zmian w pliku motywu.\n\n" + GENERATEFROMWP="Generuj z kolorów tapety..." + LIGHTBG="Jasne tło" + DARKBG="Ciemne tło" + SETCOLORS="Ustaw kolory..." + RESETTHEME="Resetuj motyw" + EXPORTTHEME="Eksportuj jako nowy motyw" + CONFIG_AND_DOCS="Konfiguracja i Dokumentacja" + README="PyRadio CZYTAJTO" + MANUAL="Manual PyRadio" + EDITCONF="Edytuj plik konfiguracyjny" + EDITSTATIONS="Edytuj listę stacji" + CONFIGDIR="Katalog z konfiguracją" + _COLORIZER_ROOT="Colorizer - menu główne" + ;; + *) + COLORIZE_PYRADIO="Colorize PyRadio" + START_PYRADIO="Start PyRadio" + INFO="Info (important)" + INFO_HEAD="How it works?" + INFO_TXT="Automatic theme generation works with mbcolors user theme.\n Configuration:\n- use t key to show theme selection dialog\n- navigate to mbcolors theme and press c\n\n" + GENERATEFROMWP="Generate from wallpaper colors..." + LIGHTBG="Light Background" + DARKBG="Dark Background" + SETCOLORS="Set colors individually..." + RESETTHEME="Reset theme" + EXPORTTHEME="Export as new theme" + CONFIG_AND_DOCS="Config and Docs" + README="PyRadi README" + MANUAL="PyRadio Manual" + EDITCONF="Edit config file" + EDITSTATIONS="Edit stations list" + CONFIGDIR="Config Dir" + _COLORIZER_ROOT="Colorizer rootmenu" + ;; +esac + +getvalues () { +read S SFG SBG<<< "$(grep '^Stations ' ${THEMERC})" +read AS1 AS2 ASFG<<< "$(grep '^Active Station ' ${THEMERC})" +read SB1 SB2 SBFG SBBG<<< "$(grep '^Status Bar ' ${THEMERC})" +read NC1 NC2 NCFG NCBG<<< "$(grep '^Normal Cursor ' ${THEMERC})" +read AC1 AC2 ACFG ACBG<<< "$(grep '^Active Cursor ' ${THEMERC})" +read EC1 EC2 ECFG ECBG<<< "$(grep '^Edit Cursor ' ${THEMERC})" +read EF1 EF2 EFFG<<< "$(grep '^Extra Func ' ${THEMERC})" +read PURL1 PURL2 PURLFG<<< "$(grep '^PyRadio URL ' ${THEMERC})" +read MB1 MB2 MBFG<<< "$(grep '^Messages Border ' ${THEMERC})" + +} + getvalues + + out+=("^sep($COLORIZE_PYRADIO)") + #out+=("$START_PYRADIO,terminator --geometry=420x440-20-20 -e pyradio") + if pgrep -f "/usr/bin/python /usr/bin/pyradio" >/dev/null ;then + : + else + out+=("$START_PYRADIO W + r ,xdotool key super+r;$me") + #out+=("PYRADIO W + r ,gtk-launch pyradio;sleep 1;$me") + fi + + + out+=(" $INFO,notify-send.sh -i pyradio -u critical '$INFO_HEAD' '$INFO_TXT'") + + out+=("^sep($SETCOLORS)") + out+=(" AbCd Stations,^checkout(stations)") + out2+=("^tag(stations)") + out2+=("^sep(Stations)") + out2+=(" AbCd Text,^pipe(mbclr '$SFG' prtctl stations_txt 'Stations Text' '$me')") + out2+=(" Background,^pipe(mbclr '$SBG' prtctl stations_bg 'Stations Background' '$me')") + + out+=(" AbCd Active Station (text),^pipe(mbclr '$ASFG' prtctl active_station ACTIVE_STATION '$me')") + + out+=(" AbCd Normal Cursor,^checkout(normalcursor)") + out2+=("^tag(normalcursor)") + out2+=("^sep(Normal Cursor)") + out2+=(" AbCd Text,^pipe(mbclr '$NCFG' prtctl normal_cursor_txt 'Normal Cursor Text' '$me')") + out2+=(" Background,^pipe(mbclr '$NCBG' prtctl normal_cursor_bg 'Normal Cursor Background' '$me')") + + out+=(" AbCd Active Cursor,^checkout(activecursor)") + out2+=("^tag(activecursor)") + out2+=("^sep(Active Cursor)") + out2+=(" AbCd Text,^pipe(mbclr '$ACFG' prtctl active_cursor_txt 'Active Cursor Text' '$me')") + out2+=(" Background,^pipe(mbclr '$ACBG' prtctl active_cursor_bg 'Active Cursor Background' '$me')") + + + out+=(" AbCd Edit Cursor,^checkout(editcursor)") + out2+=("^tag(editcursor)") + out2+=("^sep(Edit Cursor)") + out2+=(" AbCd Text,^pipe(mbclr '$ECFG' prtctl edit_cursor_txt 'Edit Cursor Text' '$me')") + out2+=(" Background,^pipe(mbclr '$ECBG' prtctl edit_cursor_bg 'Edit Cursor Background' '$me')") + + out+=(" AbCd Status Bar,^checkout(statusbar)") + out2+=("^tag(statusbar)") + out2+=("^sep(Status Bar)") + out2+=(" AbCd Text,^pipe(mbclr '$SBFG' prtctl status_bar_txt 'Status Bar Text' '$me')") + out2+=(" Background,^pipe(mbclr '$SBBG' prtctl status_bar_bg 'Status Bar Background' '$me')") + out+=(" AbCd Extra Func,^pipe(mbclr '$EFFG' prtctl extra_func EXTRA_FUNC '$me')") + out+=("\"\"\" AbCd Group, PyRadio URL\"\"\",^pipe(mbclr '$PURLFG' prtctl pyradio_url 'PyRadio URL' '$me')") + out+=("_________ Messages Border,^pipe(mbclr '$MBFG' prtctl messages_border 'Messages Border' '$me')") + + out+=("^sep($GENERATEFROMWP)") + out+=(" 1. station $LIGHTBG,w2theme pyradio light;$me") + out+=(" 2. station $DARKBG,w2theme pyradio dark;$me") + + out+=("^sep()") + out+=(" $RESETTHEME,prtctl resettheme;$me") + out+=("^sep()") + out+=("$EXPORTTHEME,prtctl exp;$me") + + out+=("^sep($CONFIG_AND_DOCS)") + #out+=("PyRadio README,cat /usr/share/doc/pyradio/README.html| yad --html --no-buttons --no-escape --height=800 --width=600") + out+=(" $README,xdg-open /usr/share/doc/pyradio/README.html") + out+=(" $MANUAL,^term(man pyradio)") + out+=("^sep()") + out+=(" $EDITCONF,xdg-open ~/.config/pyradio/config") + out+=(" $EDITSTATIONS,xdg-open ~/.config/pyradio/stations.csv") + out+=("^sep()") + out+=(" $CONFIGDIR,^pipe(jgbrowser ~/.config/pyradio)") + + +### 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 + +cat < ${MENU_ITEMS} +@icon,,$((jgtools_padding)),$((jgtools_padding)),270,150,4,left,top,,,${THUMB} +#@icon,,$((jgtools_padding + 4)),$((jgtools_padding + 4)),270,150,4,left,top,,,/usr/share/mabox-colorizer/img/colorizer-conky.png +@rect,,$((jgtools_padding+4)),$((jgtools_padding + 112)),262,34,0,left,top,#222222 20,#222222 70, +@text,,$((jgtools_padding + 144)),$((jgtools_padding + 116)),120,30,0,left,top,#FFFFFF ,${WINCLR},Colorizer PyRadio + + +$(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[@]}" + diff --git a/bin/conky_getactiveinet.sh b/bin/conky_getactiveinet.sh new file mode 100755 index 0000000..ad9c7c9 --- /dev/null +++ b/bin/conky_getactiveinet.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +CFGFILE="$HOME/.config/conky/Network_mbcolor.conkyrc" +rm /tmp/xx* +cd /tmp + +csplit -s ${CFGFILE} /conky.text/ + + +#IFACE=$(ip route get 8.8.8.8 | awk -- '{printf $5}') +IFACE=$(ip route get 8.8.8.8 | awk '{for(i=1; i> /tmp/xx00 +conky.text = [[ +\${color0}NETWORK +\${color0}Device \${alignr}\${color1}$IFACE +\${color0}IP \${alignr}\${color1}\${addr $IFACE} +\${color0}Download \${color1}\${downspeed $IFACE} \${alignr}\${color1}\${upspeed $IFACE}\${color0} Upload +\${color2}\${downspeedgraph $IFACE 30,100 -t} \${alignr} \${upspeedgraph $IFACE 30,100 -t} +\${color0}Total Down \${color1}\${totaldown $IFACE} \${alignr}\${color1}\${totalup $IFACE}\${color0} Total Up +\${color0}\${hr}\${color1} +\${execi 30 netstat -ept | grep ESTAB | awk '{print \$9}' | cut -d/ -f2 | sort | uniq -c | sort -nr} +]]; +EOF + +cat /tmp/xx00 > ${CFGFILE} diff --git a/bin/conkyctl b/bin/conkyctl new file mode 100755 index 0000000..0351781 --- /dev/null +++ b/bin/conkyctl @@ -0,0 +1,1694 @@ +#!/bin/bash +# +# conkyctl - script to handle various Conky operations in Mabox + +CONKYDIR="$HOME"/.config/conky +BASECONKY="$CONKYDIR/sysinfo_mbcolor.conkyrc" +SESSIONFILE="$CONKYDIR/conky-sessionfile" +COLORIZERDIR="$HOME/.config/colorizer" +CONKYTHEMEDIR="$COLORIZERDIR/conky/themes" + +if [ ! -d "$CONKYTHEMEDIR" ];then +mkdir -p "$CONKYTHEMEDIR" +rsync -a /usr/share/mabox-colorizer/themes/conky/* ${CONKYTHEMEDIR}/ +fi + +update_session () { + sleep 1 + :> "${SESSIONFILE}" + while read -r pid b c confpath + do + echo "$b $c ${confpath} & sleep .5" >> ${SESSIONFILE} + done < <(pgrep -u $USER -af "conky -c ") + # Remove duplicates + awk -i inplace '!seen[$0]++' ${SESSIONFILE} +} + +transparent_all () { + sd "own_window_transparent.*$" "own_window_transparent = ${1}," ${CONKYDIR}/*mbcolor.conkyrc + fix_transparent_conkies +} +transparent () { + sd "own_window_transparent.*$" "own_window_transparent = ${1}," ${2} +} +win_bgcolor_all () { + sd "own_window_colour .*=.*$" "own_window_colour = '${1}'," ${CONKYDIR}/*mbcolor.conkyrc + sd "own_window_transparent.*$" "own_window_transparent = false," ${CONKYDIR}/*mbcolor.conkyrc + sd "own_window_transparent.*$" "own_window_transparent = true," ${CONKYDIR}/logo_mbcolor.conkyrc +} +win_bgcolor () { + sd "own_window_colour .*=.*$" "own_window_colour = '${1}'," ${2} + sd "own_window_transparent.*$" "own_window_transparent = false," ${2} + #notify-send.sh "${2}" aaa + +} +draw_borders_all () { + sd "draw_borders.*$" "draw_borders = ${1}," ${CONKYDIR}/*mbcolor.conkyrc + sd "draw_borders.*$" "draw_borders = false," ${CONKYDIR}/logo_mbcolor.conkyrc +} +draw_borders () { + sd "draw_borders.*$" "draw_borders = ${1}," ${2} +} +border_width () { + sd "border_width.*$" "border_width = ${1}," ${2} + #calculate border_inner_margin = 15, border_outer_margin = 1, + #outer width /2 + #inner 16 - outer + if [[ "${1}" = "1" ]];then + omargin=7 + imargin=8 + else + omargin=$((${1} / 2 )) + imargin=$((16 - $omargin)) + fi + #notify-send.sh "Margins" "outer = ${omargin}, inner = ${imargin}" + sd "border_outer_margin.*$" "border_outer_margin = ${omargin}," ${2} + sd "border_inner_margin.*$" "border_inner_margin = ${imargin}," ${2} +} +border_width_all () { + sd "border_width.*$" "border_width = ${1}," ${CONKYDIR}/*mbcolor.conkyrc + if [[ "${1}" = "1" ]];then + omargin=7 + imargin=8 + else + omargin=$((${1} / 2 )) + imargin=$((16 - $omargin)) + fi + sd "border_outer_margin.*$" "border_outer_margin = ${omargin}," ${CONKYDIR}/*mbcolor.conkyrc + sd "border_inner_margin.*$" "border_inner_margin = ${imargin}," ${CONKYDIR}/*mbcolor.conkyrc +} +stippled_borders_all () { + sd "stippled_borders.*$" "stippled_borders = ${1}," ${CONKYDIR}/*mbcolor.conkyrc + sd "draw_borders.*$" "draw_borders = true," ${CONKYDIR}/*mbcolor.conkyrc + sd "draw_borders.*$" "draw_borders = false," ${CONKYDIR}/logo_mbcolor.conkyrc +} +stippled_borders () { + sd "stippled_borders.*$" "stippled_borders = ${1}," ${2} + sd "draw_borders.*$" "draw_borders = true," ${2} +} +default_color_all () { + sd "default_color .*=.*$" "default_color = '${1}'," ${CONKYDIR}/*mbcolor.conkyrc +} +color0_all () { + sd "color0 .*=.*$" "color0 = '${1}'," ${CONKYDIR}/*mbcolor.conkyrc +} +color1_all () { + sd "color1 .*=.*$" "color1 = '${1}'," ${CONKYDIR}/*mbcolor.conkyrc +} +color2_all () { + sd "color2 .*=.*$" "color2 = '${1}'," ${CONKYDIR}/*mbcolor.conkyrc +} +color3_all () { + sd "color3 .*=.*$" "color3 = '${1}'," ${CONKYDIR}/*mbcolor.conkyrc +} +default_color () { + sd "default_color .*=.*$" "default_color = '${1}'," ${2} +} +color0 () { + sd "color0 .*=.*$" "color0 = '${1}'," ${2} +} +color1 () { + sd "color1 .*=.*$" "color1 = '${1}'," ${2} +} +color2 () { + sd "color2 .*=.*$" "color2 = '${1}'," ${2} +} +color3 () { + sd "color3 .*=.*$" "color3 = '${1}'," ${2} +} +color8 () { + sd "color8 .*=.*$" "color8 = '${1}'," ${2} +} +color9 () { + sd "color9 .*=.*$" "color9 = '${1}'," ${2} +} + +basefont_inc_all () { + read FONTDEF <<< "$(grep "font .*=.*,$" ${BASECONKY} | cut -d'=' -f2,3 |cut -d"'" -f2)" + FONT=${FONTDEF%:*} + FONTSIZE=${FONTDEF#*=} + ((FONTSIZE++)) + sd "font .*=.*,$" "font = '${FONT}:size=${FONTSIZE}'," ${CONKYDIR}/*mbcolor.conkyrc +} +basefont_dec_all () { + read FONTDEF <<< "$(grep "font .*=.*,$" ${BASECONKY} | cut -d'=' -f2,3 |cut -d"'" -f2)" + FONT=${FONTDEF%:*} + FONTSIZE=${FONTDEF#*=} + ((FONTSIZE--)) + sd "font .*=.*,$" "font = '${FONT}:size=${FONTSIZE}'," ${CONKYDIR}/*mbcolor.conkyrc +} +basefont_inc () { + read FONTDEF <<< "$(grep "font .*=.*,$" ${1} | cut -d'=' -f2,3 |cut -d"'" -f2)" + FONT=${FONTDEF%:*} + FONTSIZE=${FONTDEF#*=} + ((FONTSIZE++)) + sd "font .*=.*,$" "font = '${FONT}:size=${FONTSIZE}'," ${1} +} +basefont_dec () { + read FONTDEF <<< "$(grep "font .*=.*,$" ${1} | cut -d'=' -f2,3 |cut -d"'" -f2)" + FONT=${FONTDEF%:*} + FONTSIZE=${FONTDEF#*=} + ((FONTSIZE--)) + sd "font .*=.*,$" "font = '${FONT}:size=${FONTSIZE}'," ${1} +} +basefont_family () { + read FONTDEF <<< "$(grep "font .*=.*,$" ${1} | cut -d'=' -f2,3 |cut -d"'" -f2)" + FONT=${FONTDEF%:*} + FONTSIZE=${FONTDEF#*=} + sd "font .*=.*,$" "font = '${2}:size=${FONTSIZE}'," ${1} +} +basefont_family_all () { + read FONTDEF <<< "$(grep "font .*=.*,$" ${BASECONKY} | cut -d'=' -f2,3 |cut -d"'" -f2)" + FONT=${FONTDEF%:*} + FONTSIZE=${FONTDEF#*=} + sd "font .*=.*,$" "font = '${1}:size=${FONTSIZE}'," ${CONKYDIR}/*mbcolor.conkyrc +} +basefont_size () { + read FONTDEF <<< "$(grep "font .*=.*,$" ${1} | cut -d'=' -f2,3 |cut -d"'" -f2)" + FONT=${FONTDEF%:*} + FONTSIZE=${FONTDEF#*=} + sd "font .*=.*,$" "font = '${FONT}:size=${2}'," ${1} +} +basefont_size_all () { + read FONTDEF <<< "$(grep "font .*=.*,$" ${BASECONKY} | cut -d'=' -f2,3 |cut -d"'" -f2)" + FONT=${FONTDEF%:*} + FONTSIZE=${FONTDEF#*=} + sd "font .*=.*,$" "font = '${FONT}:size=${1}'," ${CONKYDIR}/*mbcolor.conkyrc +} +shades_all () { + case "$1" in + shadow) + sd "draw_shades .*=.*,$" "draw_shades = true," ${CONKYDIR}/*mbcolor.conkyrc + sd "draw_outline .*=.*,$" "draw_outline = false," ${CONKYDIR}/*mbcolor.conkyrc + ;; + outline) + sd "draw_shades .*=.*,$" "draw_shades = false," ${CONKYDIR}/*mbcolor.conkyrc + sd "draw_outline .*=.*,$" "draw_outline = true," ${CONKYDIR}/*mbcolor.conkyrc + ;; + *) + sd "draw_shades .*=.*,$" "draw_shades = false," ${CONKYDIR}/*mbcolor.conkyrc + sd "draw_outline .*=.*,$" "draw_outline = false," ${CONKYDIR}/*mbcolor.conkyrc + ;; + esac +} +shades () { + case "$1" in + shadow) + sd "draw_shades .*=.*,$" "draw_shades = true," ${2} + sd "draw_outline .*=.*,$" "draw_outline = false," ${2} + ;; + outline) + sd "draw_shades .*=.*,$" "draw_shades = false," ${2} + sd "draw_outline .*=.*,$" "draw_outline = true," ${2} + ;; + *) + sd "draw_shades .*=.*,$" "draw_shades = false," ${2} + sd "draw_outline .*=.*,$" "draw_outline = false," ${2} + ;; + esac +} +logosize () { + sd "minimum_height.*$" "minimum_height = ${1}," ${CONKYDIR}/logo_mbcolor.conkyrc + sd "minimum_width.*$" "minimum_width = ${1}," ${CONKYDIR}/logo_mbcolor.conkyrc + sd "\{image ~.*$" "{image ~/.config/conky/images/mabox_3d.png -s ${1}x${1}}" ${CONKYDIR}/logo_mbcolor.conkyrc +} + +pos () { + def_x=${conky_gap_x:-30} + def_y=${conky_gap_y:-60} + + sd "alignment .*=.*,$" "alignment = '${1}'," ${2} + ### jak po środku to wyzerować gaps + case "$1" in + top_left|top_right|bottom_left|bottom_right) + sd "gap_x .*=.*," "gap_x = ${def_x}," ${2} + sd "gap_y .*=.*," "gap_y = ${def_y}," ${2} + ;; + top_middle|bottom_middle) + sd "gap_x .*=.*," "gap_x = 0," ${2} + sd "gap_y .*=.*," "gap_y = ${def_y}," ${2} + ;; + middle_left|middle_right) + sd "gap_x .*=.*," "gap_x = ${def_x}," ${2} + sd "gap_y .*=.*," "gap_y = 0," ${2} + ;; + middle_middle) + sd "gap_x .*=.*," "gap_x = 0," ${2} + sd "gap_y .*=.*," "gap_y = 0," ${2} + ;; + esac +} +gap_x () { + sd "gap_x .*=.*," "gap_x = ${1}," ${2} +} +gap_y () { + sd "gap_y .*=.*," "gap_y = ${1}," ${2} +} +setpos () { + filename=${1##*/} + name=${filename%%_mb*} + title=${name//_/ } + case "$LANG" in + pl*) + SUMM="Nowa pozycja dla Conky: ${title^}" + BODY="\nNarysuj mały prostokąt na ekranie aby wyznaczyć nową pozycję...\n (ESC lub prawy klik anuluje" + ABORTED_SUMM="Anulowano!" + ABORTED_BODY="\n...operacja anulowana" + ;; + es*) + SUMM="Mark new position for ${title^} Conky" + BODY="\nDraw small rectangle to mark new position...\n (ESC or right click to abort)" + ABORTED_SUMM="Aborted!" + ABORTED_BODY="\n... operation aborted!" + ;; + *) + SUMM="Mark new position for ${title^} Conky" + BODY="\nDraw small rectangle to mark new position...\n (ESC or right click to abort)" + ABORTED_SUMM="Aborted!" + ABORTED_BODY="\n... operation aborted!" + ;; + esac + + wmctrl -k on + notify-send.sh -i mbcc --replace-file=/tmp/conkyctlfile "${SUMM}" "${BODY}" + read -r X Y < <(slop -t 0 -l -b 3 --color=0.3,0.4,0.6,0.4 -f "%x %y") + if [ -z "$X" ] +then + notify-send.sh -i mbcc --replace-file=/tmp/conkyctlfile "${ABORTED_SUMM}" "${ABORTED_BODY}" +else + pos top_left ${1} + # improve conky margin calculation here: gap = border_width + border_inner_margin + border_outer_margin + ((X=X+17)) + ((Y=Y+17)) + gap_x ${X} ${1} + gap_y ${Y} ${1} + case "$LANG" in + pl*) + THNX_SUMM="Dziękuję!" + THNX_BODY="Zapisano nową pozycję ${title^} \n\tX: $X\n\tY: $Y" + ;; + es*) + THNX_SUMM="Thank you!" + THNX_BODY="New position of ${title^} saved! \n\tX: $X\n\tY: $Y" + ;; + *) + THNX_SUMM="Thank you!" + THNX_BODY="New position of ${title^} saved! \n\tX: $X\n\tY: $Y" + ;; + esac + + notify-send.sh -i mbcc --replace-file=/tmp/conkyctlfile "${THNX_SUMM}" "${THNX_BODY}" + #wmctrl -k off +fi +} + +startone () { + conky -c "${1}" & + update_session +} +startall () { + for i in "$CONKYDIR"/*_mbcolor*; do + if pgrep -u $USER -af "conky .*${i}" >/dev/null; then + : + else + conky -c "${i}" & + fi + done + update_session +} +kill () { + pkill -f "conky .*${1}" + update_session +} +restartone () { + kill ${1} + startone ${1} +} +reload() { +kill ${1} +conky -c ${1} +} +toggleone () { + if pgrep -u $USER -af "conky .*${1}" >/dev/null; then + kill "${1}" + else + CCFG=$(ls ~/.config/conky/${1}*.conkyrc) + #notify-send.sh "Conky" "$CCFG" + if test -f "$CCFG"; + then + startone "$CCFG" + fi + #conky -c "${i}" & + fi +} +makemoveableall () { + wmctrl -k on + sd "own_window_type.*$" "own_window_type = 'normal'," ${CONKYDIR}/*mbcolor.conkyrc + case "$LANG" in + pl*) + TITLE="Przenieś Conky dokąd chcesz" + DESC="Możesz teraz przesuwać wszystkie Conky.\nPrzytrzymaj wciśnięty klawisz Alt i przesuń każde Conky gdzie chcesz\n " + VB="To prawdopodobnie nie zadziała w środowiskach wirtualnych" + CANCEL="Anuluj" + SAVE="Zapisz nowe pozycje" + ;; + es*) + TITLE="Move Conkies where you want" + DESC="Move Conkies to desired locations now...\n Hold Alt and drag Conkies one by one.\n" + VB="It will probably not work in Virtual environments" + CANCEL="Cancel" + SAVE="Save new positions" + ;; + *) + TITLE="Move Conkies where you want" + DESC="Move Conkies to desired locations now...\n Hold Alt and drag Conkies one by one.\n" + VB="It will probably not work in Virtual environments" + CANCEL="Cancel" + SAVE="Save new positions" + ;; + esac + TYPE=$(cat /sys/class/dmi/id/chassis_type) + if [ "$TYPE" != "1" ];then + VB="" + fi + cmd=( + yad --center --borders=20 + --title="$TITLE" + --text="$DESC\n\n${VB}" + --button="$CANCEL":1 + --button="$SAVE":0 + ) + "${cmd[@]}" + exval=$? + #notify-send.sh -t 10000 "Exval" "${exval}" + case $exval in + 1) makedesktoptypeall;; + 0) saveposall;; + 252) makedesktoptypeall;; + esac + +} +saveposall () { + # save new positions here + while read -r WIN_ID b c X Y rest + do + conffile=$(xprop -id $WIN_ID |grep WM_COMMAND |cut -d'"' -f6) + if [[ "$conffile" = *"mbcolor"* ]];then + pos top_left ${conffile} + #notify-send.sh -t 10000 "${X} ${Y}" "${conffile}" + # improve conky margin calculation here: gap = border_width + border_inner_margin + border_outer_margin + ((X=X+17)) + ((Y=Y+17)) + gap_x ${X} ${conffile} + gap_y ${Y} ${conffile} + fi + done < <(wmctrl -lpG | grep '1 0 ') + makedesktoptypeall +} +makedesktoptypeall () { + sd "own_window_type.*$" "own_window_type = 'desktop'," ${CONKYDIR}/*mbcolor.conkyrc +} +resetcolorsall () { + transparent_all false + win_bgcolor_all '#142c2c' + draw_borders_all true + stippled_borders_all 0 + default_color_all '#309552' + color0_all '#accdc7' + color1_all '#61c4bc' + color2_all '#E8CB2D' + fix_transparent_conkies +} +resetcolorsone () { + transparent false "${1}" + win_bgcolor '#142c2c' "${1}" + default_color '#309552' "${1}" + color0 '#accdc7' "${1}" + color1 '#61c4bc' "${1}" + color2 '#E8CB2D' "${1}" +} + +languages () { + case "$LANG" in + pl*) + UNSUPPORTED="częściowo wspierane!!!" + OLD_SYNTAX_DETECTED=" stara składnia! wykryta..." + CONVERT_OLD="Czy spróbować skonwertować?" + CONVERT_OLD_TRY="Tak, spróbuj konwertować" + POSITION="Pozycja" + MAKEMOVEABLE="Ustaw wszystkie (poprzez przeciąganie)..." + MARKNEWPOS="Nowa pozycja (zaznacz na ekranie)..." + ALIGNMENT="Wyrównanie" + TOPLEFT="Góra po lewej" + TOP="Góra" + TOPRIGHT="Góra po prawej" + LEFT="Lewa" + CENTER="Po środku" + RIGHT="Prawa" + BOTTOMLEFT="Dół po lewej" + BOTTOM="Dół" + BOTTOMRIGHT="Dół po prawej" + HORIZONTAL_GAP="Odstęp poziomy" + VERTICAL_GAP="Odstęp pionowy" + COLORS="Kolory" + DEFCOLOR="Kolor obramowania" + COLOR_0="Kolor 0 (tekst)" + COLOR_1="Kolor 1 (tekst alt)" + COLOR_2="Kolor 2 (pasek/graf)" + COLOR_3="Kolor 3 (większy tekst)" + BACKGROUND="Kolor tła" + COLORSCHEME="Motywy kolorów" + SYSTEM_SCHEMES="Systemowe" + YOUR_SCHEMES="Moje motywy" + OPENTHEMEDIR="Otwórz katalog motywów" + APPLY_THEME="Zastosuj motyw" + APPLY_TO_ONE="Zastosuj do " + APPLY_TO_ALL="Zastosuj do wszystkich" + NEWTHEME="Nowy motyw kolorów..." + SAVENEWTHEME="utwórz nowy motyw..." + SAVE_CURRSCHEME="Zapisz aktualną kolorystykę jako..." + MONOCHROMATIC="Monochromatyczny" + CHOOSE_AND_PICK="Wybierz wariant i pobierz kolor..." + LIGHTBG="Jasne tło" + DARKBG="Ciemne tło" + RESETCOLORS="Przywróć domyślne kolory" + GENFROMWP="Generuj z kolorów tapety" + TRANSPARENT="Przezroczyste tło?" + YES="Tak" + NO="Nie" + FONTS="Czcionka" + SELECTFONT="Wybierz czcionkę..." + FONTFAMILY_LBL="czcionka" + _EDIT_FAVFONTS="Edytuj ulubione czcionki" + FONTSIZE_LBL="rozmiar czcionki" + INCREASE="Powiększ do" + DECREASE="Pomniejsz do" + OLINE="Obrys" + SHADOW="Cień" + DRAW="Rysuj" + BORDERS="Obramowanie" + EDIT="Edytuj plik Conky" + RELOAD="Przeładuj" + KILL="Zabij" + LOGOSIZE="Rozmiar logo" + SMALL="Małe" + NORMAL="Normalne" + BIG="Duże" + _BORDER_WIDTH="Border width" + _OLD_STYLE="(old style)" + STIPPLED_BORDERS="Nakrapiane" + SOLID_LINE="linia ciągła" + NOT_WORKING="Nie działa? Naprawmy to :)" + MOUNTPOINTS="Dyski (punkty montowania)" + _ACTIONS="Działania" + ;; + *) + UNSUPPORTED="partially supported!!!" + OLD_SYNTAX_DETECTED=" old syntax!!! detected..." + CONVERT_OLD="Try to convert to new syntax?" + CONVERT_OLD_TRY="Yes, try to convert" + POSITION="Position" + MAKEMOVEABLE="Make moveable all..." + MARKNEWPOS="New position (mark on the screen)..." + ALIGNMENT="Alignment" + TOPLEFT="TopLeft" + TOP="Top" + TOPRIGHT="TopRight" + LEFT="Left" + CENTER="Center" + RIGHT="Right" + BOTTOMLEFT="BottomLeft" + BOTTOM="Bottom" + BOTTOMRIGHT="BottomRight" + HORIZONTAL_GAP="Horizontal Gap" + VERTICAL_GAP="Vertical Gap" + COLORS="Colors" + DEFCOLOR="Border color" + COLOR_0="(color0) Text" + COLOR_1="(color1) Text alt" + COLOR_2="(color2) Bars/graphs" + COLOR_3="(color3) Bigger text" + BACKGROUND="Background color" + COLORSCHEME="Color schemes" + SYSTEM_SCHEMES="System colorschemes" + YOUR_SCHEMES="My colorschemes" + OPENTHEMEDIR="Open schemes dir" + APPLY_THEME="Apply scheme..." + APPLY_TO_ONE="Apply to " + APPLY_TO_ALL="Apply to All" + NEWTHEME="New Color scheme..." + SAVENEWTHEME="from current colors..." + SAVE_CURRSCHEME="Save current colors as..." + MONOCHROMATIC="Monochromatic" + CHOOSE_AND_PICK="Choose variant and pick color..." + LIGHTBG="Light Background" + DARKBG="Dark Background" + RESETCOLORS="Restore default colors" + GENFROMWP="Generate from wallpaper" + TRANSPARENT="Transparent background?" + YES="Yes" + NO="No" + FONTS="Font" + SELECTFONT="Select Font..." + FONTFAMILY_LBL="font family" + _EDIT_FAVFONTS="Edit favorite fonts list" + FONTSIZE_LBL="font size" + INCREASE="Increase to" + DECREASE="Decrease to" + OLINE="Outline" + SHADOW="Shadow" + DRAW="Draw" + BORDERS="Borders" + EDIT="Edit Conky file" + RELOAD="Reload" + KILL="Kill" + LOGOSIZE="Logo size" + SMALL="Small" + NORMAL="Normal" + BIG="Big" + _BORDER_WIDTH="Border width" + _OLD_STYLE="(old style)" + STIPPLED_BORDERS="Stippled borders" + SOLID_LINE="solid line" + NOT_WORKING="Not working? Try to fix" + MOUNTPOINTS="Discs (mount points)" + _ACTIONS="Actions" + ;; + esac +} + +single () { + unset NOT_SUPPORTED OLD_SYNTAX + + SYSSCHEMES="/usr/share/mabox-colorizer/colorschemes/conky.csv" + #USERSCHEMES="$HOME/.config/colorizer/conky/c_userschemes.csv" + USERSCHEMES="$HOME/.config/colorizer/conky/colorschemes.csv" + if [ ! -f "$USERSCHEMES" ]; then + mkdir -p "$HOME/.config/colorizer/conky/" + echo "WINCLR | CLR | CLR0 | CLR1 | CLR2 | CLR3 |WINTRANS|OUTLINE|SHADES | BORD |BWIDTH| STIP |scheme_name" > "$USERSCHEMES" + fi + + ### Wallpaper colors +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 + if [ "$ext" == "avif" ];then + magick ${WALLPATH} -resize 25% /tmp/out.jpg + magick /tmp/out.jpg -colors 12 -unique-colors txt:- |grep -v '^#'| awk '{print substr($3,1,7)}' |pastel sort-by brightness |pastel format hex > "$WALLPALDIR/$NAME.clr" + else + magick ${WALLPATH} -resize 25% -colors 12 -unique-colors txt:- |grep -v '^#'| awk '{print substr($3,1,7)}' |pastel sort-by brightness |pastel format hex > "$WALLPALDIR/$NAME.clr" + fi +fi +mapfile -t w < "$WALLPALDIR/$NAME.clr" + + + languages + filename=${1##*/} + name=${filename%%_mb*} + title=${name//_/ } + + grep -q "conky.text" "$1" && : || OLD_SYNTAX="true" + + # breaks mbclr color picking from contextmenu, leave it as "colorizer-conky -s" for now + if [[ "$2" == "s" ]];then + me="none none" + else + me="colorizer-conky -s" + fi + read POS <<< "$(grep alignment ${1} | cut -d'=' -f2 | cut -d"'" -f2)" + read GAPX <<< "$(grep gap_x ${1} | cut -d'=' -f2 | cut -d"," -f1)" + read GAPY <<< "$(grep gap_y ${1} | cut -d'=' -f2 | cut -d"," -f1)" + + read WINCLASS <<< "$(grep own_window_class ${1} | cut -d'=' -f2 | cut -d"," -f1)" + #notify-send.sh "Class" "${WINCLASS}" + + read WINTRANS <<< "$(grep own_window_transparent ${1} | cut -d'=' -f2 | cut -d"," -f1)" + read FONTDEF <<< "$(grep "font .*=.*,$" ${1} | cut -d'=' -f2,3 |cut -d"'" -f2)" + FONT=${FONTDEF%:*} + FONTSIZE=${FONTDEF#*=} + read WINCLR <<< "$(grep own_window_colour ${1} | cut -d'=' -f2 | cut -d"'" -f2)" + [[ $WINCLR =~ ^#.* ]] && : || WINCLR="#${WINCLR}" + + read CLR <<< "$(grep default_color ${1} | cut -d'=' -f2 | cut -d"'" -f2)" + [[ $CLR =~ ^#.* ]] && : || CLR="#${CLR}" + read CLR0 <<< "$(grep color0 ${1} | cut -d'=' -f2 | cut -d"'" -f2)" + [[ $CLR0 =~ ^#.* ]] && : || CLR0="#${CLR0}" + read CLR1 <<< "$(grep color1 ${1} | cut -d'=' -f2 | cut -d"'" -f2)" + [[ $CLR1 =~ ^#.* ]] && : || CLR1="#${CLR1}" + read CLR2 <<< "$(grep color2 ${1} | cut -d'=' -f2 | cut -d"'" -f2)" + [[ $CLR2 =~ ^#.* ]] && : || CLR2="#${CLR2}" + read CLR3 <<< "$(grep color3 ${1} | cut -d'=' -f2 | cut -d"'" -f2)" + [[ $CLR3 =~ ^#.* ]] && : || CLR3="#${CLR3}" + read OUTLINE <<< "$(grep draw_outline ${1} | cut -d'=' -f2 | cut -d"," -f1)" + read SHADES <<< "$(grep draw_shades ${1} | cut -d'=' -f2 | cut -d"," -f1)" + SHADOWS="no" + [[ "$OUTLINE" == "true" ]] && SHADOWS="outline" + [[ "$SHADES" == "true" ]] && SHADOWS="shadow" + + + read BORD <<< "$(grep draw_borders ${1} | cut -d'=' -f2 | cut -d"," -f1)" + read BWIDTH <<< "$(grep border_width ${1} | cut -d'=' -f2 | cut -d"," -f1)" + read STIP <<< "$(grep stippled_borders ${1} | cut -d'=' -f2 | cut -d"," -f1)" + + [[ "$WINTRANS" == false ]] && BG="bgcolor='$WINCLR'" || BG="" + + if [[ "$filename" == *"mbcolor"* ]];then + out+=("^sep(${title^})") + else + NOT_SUPPORTED="true" + out+=("^sep(Conky: [ ${title^} ]") + out+=("^sep( ${UNSUPPORTED} )") + fi + +if [[ "$OLD_SYNTAX" = "true" ]];then + out+=("$OLD_SYNTAX_DETECTED,^checkout(oldsyntax)") + out2+=("^tag(oldsyntax)") + out2+=("^sep($CONVERT_OLD)") + out2+=("\"\"\"$CONVERT_OLD_TRY\"\"\",conkyctl convert_from_old ${1}") + #notify-send.sh "Plik" "${1}" + else + out+=(" $POSITION,^checkout(position)") + if [[ "$1" =~ "etwork_mbcolor" ]]; then + out+=("$NOT_WORKING,conkyctl netdevice") + fi + #out+=("^sep($POSITION)") + out2+=("^tag(position)") + out2+=("^sep($POSITION)") + out2+=(" $MARKNEWPOS,conkyctl setpos ${1};$me") + #out2+=("^sep()") + out2+=("^sep($ALIGNMENT)") + out2+=(" $TOPLEFT,conkyctl pos top_left ${1};$me") + out2+=(" $TOP,conkyctl pos top_middle ${1};$me") + out2+=(" $TOPRIGHT,conkyctl pos top_right ${1};$me") + out2+=(" $LEFT,conkyctl pos middle_left ${1};$me") + out2+=("$CENTER,conkyctl pos middle_middle ${1};$me") + out2+=(" $RIGHT,conkyctl pos middle_right ${1};$me") + out2+=(" $BOTTOMLEFT,conkyctl pos bottom_left ${1};$me") + out2+=(" $BOTTOM,conkyctl pos bottom_middle ${1};$me") + out2+=(" $BOTTOMRIGHT,conkyctl pos bottom_right ${1};$me") + + + if [[ "$NOT_SUPPORTED" != "true" ]];then + out2+=("^sep()") + out2+=(" $MAKEMOVEABLE,conkyctl makemoveableall") + fi + + + if [[ "$1" =~ "logo_mbcolor" ]]; then + read LSIZE <<< "$(grep minimum_height ${1} | cut -d'=' -f2 | cut -d"," -f1)" + out+=("^sep($LOGOSIZE)") + out+=("$LOGOSIZE [ $LSIZE ],^checkout(logosize)") + out2+=("^tag(logosize)") + out2+=("^sep($LOGOSIZE)") + out2+=("$SMALL 64px,conkyctl logosize 64;$me") + out2+=("$NORMAL 128px,conkyctl logosize 128;$me") + out2+=("$BIG 256px,conkyctl logosize 256;$me") + fi + + if [[ "$1" =~ "quoter" ]]; then + case "$LANG" in + pl*) + FONTSIZE="Czcionka i rozmiar" + QUOTE_FSIZE="Cytat" + AUTHOR_FSIZE="Autor" + EDIT_CONF="Edytuj plik konfiguracyjny" + RELOAD="Przeładuj" + ;; + es*) + FONTSIZE="Font size & family" + QUOTE_FSIZE="Quote" + AUTHOR_FSIZE="Author" + EDIT_CONF="Edit conf file" + RELOAD="Reload" + ;; + *) + FONTSIZE="Font size & family" + QUOTE_FSIZE="Quote" + AUTHOR_FSIZE="Author" + EDIT_CONF="Edit conf file" + RELOAD="Reload" + ;; + esac + Q_CFG="$HOME/.config/quoter/quoter.conf" + source "$Q_CFG" + out+=("^sep($FONTSIZE)") + out+=("$QUOTE_FSIZE [ $quote_fontsize ],^checkout(qsize)") + out+=("$AUTHOR_FSIZE [ $author_fontsize ],^checkout(asize)") + out2+=("^tag(qsize)") + out2+=("^sep($QUOTE_FSIZE)") + for i in 10 11 12 13 14 15 16 18 20; do + out2+=("${i},mb-setvar quote_fontsize=$i $Q_CFG;conkyctl restartone ${1};$me") + done + out2+=("^tag(asize)") + out2+=("^sep($AUTHOR_FSIZE)") + for i in 10 11 12 13 14 15 16 18 20; do + out2+=("${i},mb-setvar author_fontsize=$i $Q_CFG;conkyctl restartone ${1};$me") + done + #FONT FAMILY FOR QUOTER + out+=("$FONT_NAME [ ${font_name} ],^checkout(qfontfamily)") + out2+=("^tag(qfontfamily)") + 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 + #notify-send.sh "Ile" "${#favfonts[@]}" + if [ "${#favfonts[@]}" -gt 0 ];then + out2+=("^sep($FONTFAMILY_LBL)") + for fon in "${favfonts[@]}";do + [[ "$fon" == "$font_name" ]] && out2+=(" ${fon},$me") || out2+=(" ${fon},mb-setvar 'font_name=\"${fon}\"' $Q_CFG;conkyctl restartone ${1}") + done + fi + fi +if [[ "${WINCLASS}" != *"nobg"* ]];then + out+=("^sep($COLORS)") + # COLOR SCHEMES + #if [ "$WINTRANS" == false ];then + out+=(" $COLORSCHEME,^checkout(regensingle)") + out2+=("^tag(regensingle)") + out2+=("^sep($MONOCHROMATIC)") + out2+=("^sep($CHOOSE_AND_PICK)") + out2+=(" $DARKBG...,conkyctl monoone pick dark ${1}") + out2+=(" $LIGHTBG...,conkyctl monoone pick light ${1}") + out2+=("^sep($GENFROMWP)") + out2+=(" $LIGHTBG ,w2theme conkyone light ${1}") + out2+=(" $DARKBG ,w2theme conkyone dark ${1}") + out2+=("^sep($APPLY_THEME)") + out2+=("^sep($SYSTEM_SCHEMES)") + n=1 + while IFS="|" read -r winclr clr clr0 clr1 clr2 clr3 wintrans outline shades bord bwidth stip scheme_name + do + ((n=n+1)) + [[ "$wintrans" = true ]] && bga=1 || bga=100 + out2+=("$(printf '%-20s' "${scheme_name}") ,conkyctl applyscheme sys $n ${1}") + done < <(tail -n +2 "$SYSSCHEMES") + out2+=("^sep($YOUR_SCHEMES)") + if [[ "$1" =~ "sysinfo_" ]]; then + #check for CLR3 + if [[ "${CLR3}" == "#" ]];then + case "$LANG" in + pl*)_UPD_NEEDED="Dostępna aktualizacja konfigów Conky!!!" + _UPD_NOW="Aktualizuj teraz!" + ;; + *)_UPD_NEEDED="Conky configs update needed !!!" + _UPD_NOW="Update now!" + ;; + esac + out+=(" $_UPD_NEEDED ,^checkout(conkyupd)") + out3+=("^tag(conkyupd)") + out3+=("^sep($_UPD_NEEDED)") + out3+=("$_UPD_NOW (mb-reset conky),mb-reset conky") + CLR3=${CLR} + recolor3=1 + fi + #currcolors="${WINCLR}|${CLR}|${CLR0}|${CLR1}|${CLR2}|" + cursettings="${WINCLR}|${CLR}|${CLR0}|${CLR1}|${CLR2}|${CLR3}|${WINTRANS}|${OUTLINE}|${SHADES}|${BORD}|${BWIDTH}|${STIP}|" + out2+=(" $SAVE_CURRSCHEME,conkyctl savescheme '${cursettings}'" "^sep()") + if [[ "${recolor3}" == "1" ]];then + CLR3="#" + recolor3=0 + fi + fi + n=1 + while IFS="|" read -r winclr clr clr0 clr1 clr2 clr3 wintrans outline shades bord bwidth stip scheme_name + do + ((n=n+1)) + [[ "$wintrans" = true ]] && bga=1 || bga=100 + out2+=("$(printf '%-20s' "${scheme_name}") ,conkyctl applyscheme usr $n ${1}") + #out2+=(" $schemetitle,conkyctl settheme $themefilename $1") + + done < <(tail -n +2 "$USERSCHEMES") + + + + out+=("^sep()") + #fi + + if [[ "$WINCLR" != "#" ]];then + if [ "$WINTRANS" == false ];then + out+=(" AbCd $BACKGROUND,^pipe(mbclr '$WINCLR' conkyctl win_bgcolor '${BACKGROUND}' '$me' ${1})") + else + out+=(" transparent $BACKGROUND,^pipe(mbclr '$WINCLR' conkyctl win_bgcolor '${BACKGROUND}' '$me' ${1})") + fi + fi + [[ "$WINTRANS" == false ]] && out+=("󰄱 $TRANSPARENT,conkyctl transparent true ${1}") || out+=("󰄲 $TRANSPARENT,conkyctl transparent false ${1}") + out+=("^sep()") + + if [[ "$1" != *"logo_mbcolor"* ]]; then + + [[ "$CLR" != "#" ]] && out+=(" border $DEFCOLOR,^pipe(mbclr '$CLR' conkyctl default_color '${DEFCOLOR}' '$me' ${1})") + [[ "$CLR0" != "#" ]] && out+=(" AbCd $COLOR_0,^pipe(mbclr '$CLR0' conkyctl color0 '$COLOR_0' '$me' ${1})") + [[ "$CLR1" != "#" ]] && out+=(" AbCd $COLOR_1,^pipe(mbclr '$CLR1' conkyctl color1 '$COLOR_1' '$me' ${1})") + [[ "$CLR2" != "#" ]] && out+=(" 󰍴󰍴󰍴󰍴 $COLOR_2,^pipe(mbclr '$CLR2' conkyctl color2 '$COLOR_2' '$me' ${1})") + [[ "$CLR3" != "#" ]] && out+=(" AbCd $COLOR_3,^pipe(mbclr '$CLR3' conkyctl color3 '$COLOR_3' '$me' ${1})") + out+=("^sep()") + fi +fi #Conky-nobg END + +if [[ "${1}" == *"SVG_mbcolor"* ]];then +case "$LANG" in + pl*) + _VARIANT_AND_SIZE="Wariant i rozmiar" + _3D="sześcian 3D" + _SQUARE="kwadratowe" + _CIRCLE="okrągłe" + _LOGOSIZE="Rozmiar logo" + _COLORS="Kolory" + _INNER_COLOR="Wewnętrzny kolor (M)" + _OUTER_COLOR="Zewnętrzny kolor" + _REVERSE_COLORS="Oderóć kolory" + _RESTORE_COLORS="Przywróć domyślne kolory" + _OPACITY_BOTH="Nieprzejrzystość" + _INNER_OPACITY="Nieprzejrzystość (M)" + _OUTER_OPACITY="Nieprzejrzystość" + ;; + *) + _VARIANT_AND_SIZE="Variant and size" + _3D="cube 3D" + _SQUARE="square" + _CIRCLE="circle" + _LOGOSIZE="Logo size" + _COLORS="Colors" + _INNER_COLOR="Inner color (M)" + _OUTER_COLOR="Outer color" + _REVERSE_COLORS="Reverse colors" + _RESTORE_COLORS="Restore default colors" + _OPACITY_BOTH="Opacity (both)" + _INNER_OPACITY="Inner opacity (M)" + _OUTER_OPACITY="Outer opacity" + ;; +esac + +CONKYLOGO="$HOME/.config/conky/Mabox_logo_SVG_mbcolor.conkyrc" +read TYP <<< "$(grep template0 ${1} | cut -d'=' -f2)" +read SIZE <<< "$(grep minimum_height ${1} | cut -d'=' -f2 | cut -d"," -f1)" +. ~/.config/mabox/mabox.conf +#notify-send.sh "Colors" "${logo_in_color} ${logo_in_opacity}\n${logo_out_color} ${logo_out_opacity}" + out+=("^sep($_VARIANT_AND_SIZE)") + [[ "${TYP}" == *"3d"* ]] && out+=(" $_3D,mabox-logo type 3d") || out+=(" $_3D,mabox-logo type 3d") + [[ "${TYP}" == *"square"* ]] && out+=(" $_SQUARE,mabox-logo type square") || out+=(" $_SQUARE,mabox-logo type square") + [[ "${TYP}" == *"circle"* ]] && out+=(" $_CIRCLE,mabox-logo type circle") || out+=(" $_CIRCLE,mabox-logo type circle") + out+=("^sep()") + out+=("$_LOGOSIZE [ ${SIZE} x ${SIZE} ],^checkout(logosize)") + out2+=("^tag(logosize)") + out2+=("^sep($_LOGOSIZE (px))") + for s in 32 48 64 96 128 256 512;do + [[ "${SIZE}" == "${s}" ]] && out2+=(" ${s},mabox-logo size ${s}") || out2+=(" ${s},mabox-logo size ${s}") + done + out+=("^sep($_COLORS)") + out+=(" $_INNER_COLOR,^pipe(mbclr '${logo_in_color}' mabox-logo ic '$_INNER_COLOR')") + out+=(" $_OUTER_COLOR,^pipe(mbclr '${logo_out_color}' mabox-logo oc '$_OUTER_COLOR')") + out+=(" $_REVERSE_COLORS,mabox-logo revcolors") + out+=(" $_RESTORE_COLORS,mabox-logo default") + out+=("^sep()") + out+=("$_OPACITY_BOTH [ ${logo_in_opacity} ${logo_out_opacity} ],^checkout(oboth)") + out2+=("^tag(oboth)") + out2+=("^sep($_OPACITY_BOTH)") + for o in 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3;do + out2+=("${o},mabox-logo io ${o};mabox-logo oo ${o}") + done + out+=("^sep()") + out+=(" $_INNER_OPACITY [ ${logo_in_opacity} ],^checkout(iopa)") + out2+=("^tag(iopa)") + out2+=("^sep($_INNER_OPACITY)") + for o in 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0;do + [[ "${logo_in_opacity}" == "$o" ]] && out2+=(" ${o},mabox-logo io ${o}") || out2+=(" ${o},mabox-logo io ${o}") + done + out+=(" $_OUTER_OPACITY [ ${logo_out_opacity} ],^checkout(oopa)") + out2+=("^tag(oopa)") + out2+=("^sep($_OUTER_OPACITY)") + for o in 1 0.9 0.8 0.7 0.6 0.5 0.4 0.3 0.2 0.1 0;do + [[ "${logo_out_opacity}" == "$o" ]] && out2+=(" ${o},mabox-logo oo ${o}") || out2+=(" ${o},mabox-logo oo ${o}") + done +fi # END LOGO SVG + +if [[ "${1}" == *"etter_Clock_mbcolor"* ]];then +case "$LANG" in + pl*) + _TIME="Godzina" + _DATE="Data" + _SHOW_SECONDS="Pokaż sekundy (mniejsze)" + _SHOW_DATE="Pokaż datę" + _TIMECOLOR="Kolor Godzina" + _DATECOLOR="Kolor Data" + _FONT_TIME="Czcionka Godzina" + _FONT_DATE="Czcionka Data" + ;; + *) + _TIME="Time" + _DATE="Date" + _SHOW_SECONDS="Show seconds (smaller)" + _SHOW_DATE="Show date" + _TIMECOLOR="Color Time" + _DATECOLOR="Color Date" + _FONT_TIME="Font Time" + _FONT_DATE="Font Date" + ;; +esac + +out+=("^sep($_TIME)") +#getvalues +read TIMEFORMAT <<< "$(grep template0 ${1} | cut -d'[' -f3 | cut -d']' -f1)" +read DATEFORMAT <<< "$(grep template1 ${1} | cut -d'[' -f3 | cut -d']' -f1)" +read FONTTIME <<< "$(grep template2 ${1} | cut -d'[' -f3 | cut -d']' -f1)" +read FONTDATE <<< "$(grep template3 ${1} | cut -d'[' -f3 | cut -d']' -f1)" +read FSTIME <<< "$(grep template4 ${1} | cut -d'[' -f3 | cut -d']' -f1)" +read FSDATE <<< "$(grep template6 ${1} | cut -d'[' -f3 | cut -d']' -f1)" +read DCOLOR <<< "$(grep color9 ${1} | cut -d'=' -f2 | cut -d"'" -f2)" +read TCOLOR <<< "$(grep color8 ${1} | cut -d'=' -f2 | cut -d"'" -f2)" + +#out+=("\"\"\"󱑀 _TIMEFORMAT [ ${TIMEFORMAT} ]\"\"\"") +[[ "${TIMEFORMAT}" == "%H:%M" ]] && out+=(" $(date +%H:%M) ( %H:%M )") || out+=(" $(date +%H:%M) ( %H:%M ),conkyctl bc_tformat \"%H:%M\"") +[[ "${TIMEFORMAT}" == "%H:%M:%S" ]] && out+=(" $(date +%H:%M:%S) ( %H:%M:%S )") || out+=(" $(date +%H:%M:%S) ( %H:%M:%S ),conkyctl bc_tformat \"%H:%M:%S\"") +[[ "${TIMEFORMAT}" == "%I:%M %p" ]] && out+=(" $(date +"%I:%M %p") ( %I:%M %p )") || out+=(" $(date +"%I:%M %p") ( %I:%M %p ),conkyctl bc_tformat \"%I:%M %p\"") +[[ "${TIMEFORMAT}" == "%-I:%M %p" ]] && out+=(" $(date +"%-I:%M %p") ( %-I:%M %p )") || out+=(" $(date +"%-I:%M %p") ( %-I:%M %p ),conkyctl bc_tformat \"%-I:%M %p\"") +[[ "${TIMEFORMAT}" == "%H:%M (%a)" ]] && out+=(" $(date +"%H:%M (%a)") ( %H:%M (%a) )") || out+=(" $(date +"%H:%M (%a)") ( %H:%M (%a) ),conkyctl bc_tformat \"%H:%M (%a)\"") +out+=("^sep()") +[[ -f "${CONKYDIR}/menuscripts/.seconds" ]] && out+=("󰄲 $_SHOW_SECONDS,rm ${CONKYDIR}/menuscripts/.seconds") || out+=("󰄱 $_SHOW_SECONDS,touch ${CONKYDIR}/menuscripts/.seconds") +out+=("^sep()") +out+=(" ${FONTTIME} ${FSTIME},^checkout(ftime)") +out2+=("^tag(ftime)") +out2+=("^sep($_FONT_TIME)") +for si in 128 96 64 48 32;do +[[ "${FSTIME}" == "$si" ]] && out2+=(" ${si} px") || out2+=(" ${si} px,conkyctl bc_fstime ${si}") +done +out2+=("^sep()") + +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 + [[ "$fon" == "${FONTTIME}" ]] && out2+=(" ${fon},$me") || out2+=(" ${fon},conkyctl bc_ftime \"${fon}\"") + done +fi + +out+=("^sep()") +out+=(" $_TIMECOLOR,^pipe(mbclr '$TCOLOR' conkyctl color8 '$_TIMECOLOR' '$me' ${1})") +out+=("^sep($_DATE)") +[[ -f "${CONKYDIR}/menuscripts/.date" ]] && out+=("󰄲 $_SHOW_DATE,rm ${CONKYDIR}/menuscripts/.date") || out+=("󰄱 $_SHOW_DATE,touch ${CONKYDIR}/menuscripts/.date") +if [[ -f "${CONKYDIR}/menuscripts/.date" ]];then +out+=("^sep()") +#out+=("\"\"\"_DATEFORMAT [ ${DATEFORMAT} ]\"\"\"") +[[ "${DATEFORMAT}" == "%A, %B %d" ]] && out+=("\"\"\" $(date "+%A, %B %d") ( %A, %B %d )\"\"\"") || out+=("\"\"\" $(date "+%A, %B %d") ( %A, %B %d )\"\"\",\"\"\"conkyctl bc_dformat '%A, %B %d'\"\"\"") +[[ "${DATEFORMAT}" == "%A %d %B" ]] && out+=(" $(date "+%A %d %B") ( %A %d %B )") || out+=(" $(date "+%A %d %B") ( %A %d %B ),conkyctl bc_dformat '%A %d %B'") +[[ "${DATEFORMAT}" == "%a %d %b" ]] && out+=(" $(date "+%a %d %b") ( %a %d %b )") || out+=(" $(date "+%a %d %b") ( %a %d %b ),conkyctl bc_dformat '%a %d %b'") +[[ "${DATEFORMAT}" == "%F" ]] && out+=("\"\"\" $(date "+%F") ( %F )\"\"\"") || out+=(" $(date "+%F") ( %F ),conkyctl bc_dformat \"%F\"") +[[ "${DATEFORMAT}" == "%x" ]] && out+=("\"\"\" $(date "+%x") ( %x )\"\"\"") || out+=(" $(date "+%x") ( %x ),conkyctl bc_dformat \"%x\"") +[[ "${DATEFORMAT}" == "%m-%d-%Y" ]] && out+=("\"\"\" $(date "+%m-%d-%Y") ( %m-%d-%Y )\"\"\"") || out+=(" $(date "+%m-%d-%Y") ( %m-%d-%Y ),conkyctl bc_dformat \"%m-%d-%Y\"") + +out+=("^sep()") +out+=(" ${FONTDATE} ${FSDATE},^checkout(fdate)") +out2+=("^tag(fdate)") +out2+=("^sep($_FONT_DATE)") +for si in 32 24 20 16 12 10;do +[[ "${FSDATE}" == "$si" ]] && out2+=(" ${si} px") || out2+=(" ${si} px,conkyctl bc_fsdate ${si}") +done +out2+=("^sep()") +if [ "${#favfonts[@]}" -gt 0 ];then + for fon in "${favfonts[@]}";do + [[ "$fon" == "${FONTDATE}" ]] && out2+=(" ${fon},$me") || out2+=(" ${fon},conkyctl bc_fdate \"${fon}\"") + done +fi +out+=("^sep()") +out+=(" $_DATECOLOR,^pipe(mbclr '$DCOLOR' conkyctl color9 '$_DATECOLOR' '$me' ${1})") +fi +fi +# END Better Clock + +if [[ "$FONT" != "" ]];then + if [[ "$1" != *"logo_mbcolor"* ]]; then + if [[ "$1" != *"quoter_mbcolor"* ]]; then + + out+=("󰛖 $FONTS [ $FONT $FONTSIZE ],^checkout(fontsingle)") + out2+=("^tag(fontsingle)") + out2+=("^sep($FONTS)") + out2+=("󰛖 $SELECTFONT [ $FONT $FONTSIZE ],mb-setfont conky_single ${1};$me") + out2+=("^sep($FONTSIZE_LBL)") + out2+=("󰧴 $INCREASE $((FONTSIZE+1)) px,conkyctl basefont_inc ${1};$me") + out2+=("󰧳 $DECREASE $((FONTSIZE-1)) px,conkyctl basefont_dec ${1};$me") + out2+=("^sep()") + sizes=(14 13 12 11 10 9 8 7 6) + for i in "${sizes[@]}" + do + [[ "$FONTSIZE" == "$i" ]] && out2+=(" $i px,conkyctl basefont_size ${1} $i;$me") || out2+=(" $i px,conkyctl basefont_size ${1} $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 + #notify-send.sh "Ile" "${#favfonts[@]}" + if [ "${#favfonts[@]}" -gt 0 ];then + out2+=("^sep($FONTFAMILY_LBL)") + for fon in "${favfonts[@]}";do + [[ "$FONT" == "$fon" ]] && out2+=(" ${fon},$me") || out2+=(" ${fon},conkyctl basefont_family ${1} \"${fon}\";$me") + done + fi + out2+=("^sep()") + out2+=(" $_EDIT_FAVFONTS,geany ~/.config/mabox/fonts.list") + + fi + [[ "$SHADOWS" == "shadow" ]] && out+=("󰄲 $SHADOW,conkyctl shades no ${1};$me") || out+=("󰄱 $SHADOW,conkyctl shades shadow ${1};$me") + [[ "$SHADOWS" == "outline" ]] && out+=("󰄲 $OLINE,conkyctl shades no ${1};$me") || out+=("󰄱 $OLINE,conkyctl shades outline ${1};$me") + #out+=("^sep()") + fi + + [[ "$BORD" == false ]] && out+=("󰄱 $BORDERS [ $BWIDTH px ],^checkout(bordersingle)") || out+=("󰄲 $BORDERS [ $BWIDTH px ],^checkout(bordersingle)") + out2+=("^tag(bordersingle)") + out2+=("^sep($DRAW $BORDERS?)") + [[ "$BORD" == false ]] && out2+=(" $YES,conkyctl draw_borders true ${1};$me") || out2+=(" $YES,conkyctl draw_borders false ${1};$me") + [[ "$BORD" == false ]] && out2+=(" $NO,conkyctl draw_borders true ${1};$me") || out2+=(" $NO,conkyctl draw_borders false ${1};$me") + out2+=("^sep($_BORDER_WIDTH)") + [[ "${BWIDTH}" == "1" ]] && out2+=(" 1 px ${_OLD_STYLE}") || out2+=(" 1 px ${_OLD_STYLE},conkyctl border_width 1 ${1}") + for i in 2 4 6 8 10 12;do + [[ "${BWIDTH}" == "${i}" ]] && out2+=(" ${i} px") || out2+=(" ${i} px,conkyctl border_width ${i} ${1}") + done + out2+=("^sep($STIPPLED_BORDERS ?)") + [[ "${STIP}" == "0" ]] && out2+=(" 0 ($SOLID_LINE)") || out2+=(" 0 ($SOLID_LINE),conkyctl stippled_borders 0 ${1};$me") + out2+=("^sep()") + for st in 1 2 3 4;do + [[ "${STIP}" == "${st}" ]] && out2+=(" ${st} px") || out2+=(" ${st} px,conkyctl stippled_borders ${st} ${1};$me") + done +fi +fi #OLD SYNTAX CHECK + out+=("^sep($_ACTIONS)") + out+=(" $EDIT ${title^},xdg-open ${1}") + out+=("北 $RELOAD ${title^},conkyctl restartone ${1}") + out+=("^sep()") + out+=(" $KILL ${title^},conkyctl kill ${1##*/};${me}") +} +pipemenu () { + single "$1" + printf '%s\n' "${out[@]}" + printf '%s\n' "${out2[@]}" + printf '%s\n' "${out3[@]}" + exit 0 +} + +contextmenu () { + + source "$HOME/.config/mabox/mabox.conf" + if [[ "$conky_rightclick" == "off" ]];then + exit 0 + fi + + # get conky config path from clicked "conky window" + # maybe split this to separate function? + eval $(xdotool getmouselocation --shell) + eval $(xdotool getwindowgeometry --shell ${WINDOW}) + hexid=$(wmctrl -lpG | grep ${X} |grep ${Y}|grep ${WIDTH}|grep ${HEIGHT} |cut -d' ' -f1) + CONKYCFG=$(xprop -id ${hexid}|grep WM_COMMAND|cut -d'"' -f6) + + if [ ! -f "$CONKYCFG" ]; then + exit 0 + fi + + languages + filename=${CONKYCFG##*/} + name=${filename%%_mb*} + title=${name//_/ } + #read POS <<< "$(grep alignment ${CONKYCFG} | cut -d'=' -f2 | cut -d"'" -f2)" + #read GAPX <<< "$(grep gap_x ${CONKYCFG} | cut -d'=' -f2 | cut -d"," -f1)" + #read GAPY <<< "$(grep gap_y ${CONKYCFG} | cut -d'=' -f2 | cut -d"," -f1)" + + + #read WINTRANS <<< "$(grep own_window_transparent ${CONKYCFG} | cut -d'=' -f2 | cut -d"," -f1)" + #read FONTDEF <<< "$(grep "font .*=.*,$" ${CONKYCFG} | cut -d'=' -f2,3 |cut -d"'" -f2)" + #FONT=${FONTDEF%:*} + #FONTSIZE=${FONTDEF#*=} + #read WINCLR <<< "$(grep own_window_colour ${CONKYCFG} | cut -d'=' -f2 | cut -d"'" -f2)" + #[[ $WINCLR =~ ^#.* ]] && : || WINCLR="#${WINCLR}" + + #read CLR <<< "$(grep default_color ${CONKYCFG} | cut -d'=' -f2 | cut -d"'" -f2)" + #[[ $CLR =~ ^#.* ]] && : || CLR="#${CLR}" + #read CLR0 <<< "$(grep color0 ${CONKYCFG} | cut -d'=' -f2 | cut -d"'" -f2)" + #[[ $CLR0 =~ ^#.* ]] && : || CLR0="#${CLR0}" + #read CLR1 <<< "$(grep color1 ${CONKYCFG} | cut -d'=' -f2 | cut -d"'" -f2)" + #[[ $CLR1 =~ ^#.* ]] && : || CLR1="#${CLR1}" + #read CLR2 <<< "$(grep color2 ${CONKYCFG} | cut -d'=' -f2 | cut -d"'" -f2)" + #[[ $CLR2 =~ ^#.* ]] && : || CLR2="#${CLR2}" + #read CLR3 <<< "$(grep color3 ${CONKYCFG} | cut -d'=' -f2 | cut -d"'" -f2)" + #[[ $CLR3 =~ ^#.* ]] && : || CLR3="#${CLR3}" + #read OUTLINE <<< "$(grep draw_outline ${CONKYCFG} | cut -d'=' -f2 | cut -d"," -f1)" + #read SHADES <<< "$(grep draw_shades ${CONKYCFG} | cut -d'=' -f2 | cut -d"," -f1)" + #SHADOWS="no" + #[[ "$OUTLINE" == "true" ]] && SHADOWS="outline" + #[[ "$SHADES" == "true" ]] && SHADOWS="shadow" + + + #read BORD <<< "$(grep draw_borders ${CONKYCFG} | cut -d'=' -f2 | cut -d"," -f1)" + #read STIP <<< "$(grep stippled_borders ${CONKYCFG} | cut -d'=' -f2 | cut -d"," -f1)" + + #[[ "$WINTRANS" == false ]] && BG="bgcolor='$WINCLR'" || BG="" + + + #notify-send.sh -t 0 "Window" "z xdotool: ${WINDOW} \n X $X \n Y $Y \n hexid: $hexid \n $CONKYCFG \n ${WINCLR}\n ${name}\n $HOME/.config/mabox/${name}.csv" + + + . /usr/share/mb-jgtools/pipemenu-standalone.cfg + . $HOME/.config/mabox/mabox.conf + CONFIG_FILE=$(mktemp) + MENU_ITEMS=$(mktemp) + trap "rm -f ${CONFIG_FILE} ${MENU_ITEMS}" EXIT + POSITION_MODE=${1:-pointer} + HIDE_BACK_ITEMS=1 + menu_gradient_pos=none + jgtools_padding=4 + MENU_PADDING_TOP=${jgtools_padding:-0} + + TABS=140 + jgmenu_icon_size=0 + + + single "${CONKYCFG}" "s" + + case "$LANG" in + pl*) + EDIT_CUSTOMCOMMANDS=" Edytuj menu komend (lewy klik) dla ${name^}" + CONKY_WIDGET_MNGR="Menadżer widżetów Conky";; + *) + EDIT_CUSTOMCOMMANDS=" Edit cmd menu (left-clik) for ${name^}" + CONKY_WIDGET_MNGR="Conky Widget Manager" + ;; + esac + out+=("^sep()") + out+=("$EDIT_CUSTOMCOMMANDS,conkyctl cmdmenu_edit ${name}") + out+=("^sep()") + out+=(" ${arrow_string_left} $CONKY_WIDGET_MNGR,colorizer-conky -s") + + if [[ "$CONKYCFG" =~ "mount_points" ]]; then + out+=("^sep($MOUNTPOINTS)") + while read DEVICE SIZE USED FREE PERCENT MOUNT + do + [[ "${#MOUNT}" -gt "10" ]] && MOUNTLBL=${MOUNT##*/} || MOUNTLBL=${MOUNT} + [[ "${#MOUNTLBL}" -gt "10" ]] && MOUNTLBL=${MOUNTLBL:0:9} + out+=("$MOUNTLBL,^pipe(jgbrowser ${MOUNT})") + done < <(df -h | grep -v "boot" | grep '^/dev') + fi + + + + mkconfigfile + +cat < ${MENU_ITEMS} +$(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 + +} + +cmdmenu () { + source "$HOME/.config/mabox/mabox.conf" + if [[ "$conky_leftclick" == "off" ]];then + exit 0 + fi + + mkdir -p "${CONKYDIR}"/menuscripts + # get conky config path from clicked "conky window" + eval $(xdotool getmouselocation --shell) + eval $(xdotool getwindowgeometry --shell ${WINDOW}) + hexid=$(wmctrl -lpG | grep ${X} |grep ${Y}|grep ${WIDTH}|grep ${HEIGHT} |cut -d' ' -f1) + CONKYCFG=$(xprop -id ${hexid}|grep WM_COMMAND|cut -d'"' -f6) + + # Fix for nonsense Conky context menu when Left Click on Root is not binded to ToogleShowDesktop + if [ ! -f "$CONKYCFG" ]; then + exit 0 + fi + + filename=${CONKYCFG##*/} + name=${filename%%_mb*} + title=${name//_/ } + # for quoter + if [[ "${name}" == "quoter" && ("${1}" == "up" || "${1}" == "down") ]];then + reload "${CONKYCFG}" + exit 0 + fi + + #notify-send.sh "${X} ${Y}" "${WIDTH} ${HEIGHT}" + # if script exist run it and exit + if [ "$1" != "" ];then + if [ -x "${CONKYDIR}/menuscripts/${name}" ];then + bash -c "${CONKYDIR}/menuscripts/${name} ${1}" + exit 0 + fi + fi + # if CSV for menu exist show it + if [ -f ${CONKYDIR}/menuscripts/${name}.csv ]; then + LINES=$(grep -Ev "^#|^$" ${CONKYDIR}/menuscripts/${name}.csv|wc -l) + #notify-send.sh "$LINES" + if [ ${LINES} == 0 ]; then + : # do nothing, was contextmenu + fi + if [ ${LINES} == 1 ]; then + # 1 line - execute command (one line menu make no sense) + while IFS=$'\r\n' read -r line + do + cmd=${line#*,} + label=${line%,*} + done <<< $(grep -v '^\s*$\|^#\|^\s*#' ${CONKYDIR}/menuscripts/${name}.csv) + #notify-send.sh "${label}" "${cmd[@]}" + sleep .1 + ${cmd[@]} + exit 0 + else + # more than 1 lines - show menu + CUSTOMCOMMANDS=". ${CONKYDIR}/menuscripts/${name}.csv" + fi + else + : # do nothing + fi + + # otherwise build and show standalone menu with custom commands + + sleep .1 + read WINTRANS <<< "$(grep own_window_transparent ${CONKYCFG} | cut -d'=' -f2 | cut -d"," -f1)" + read FONTDEF <<< "$(grep "font .*=.*,$" ${CONKYCFG} | cut -d'=' -f2,3 |cut -d"'" -f2)" + FONT=${FONTDEF%:*} + FONTSIZE=${FONTDEF#*=} + read WINCLR <<< "$(grep own_window_colour ${CONKYCFG} | cut -d'=' -f2 | cut -d"'" -f2)" + [[ $WINCLR =~ ^#.* ]] && : || WINCLR="#${WINCLR}" + read CLR <<< "$(grep default_color ${CONKYCFG} | cut -d'=' -f2 | cut -d"'" -f2)" + [[ $CLR =~ ^#.* ]] && : || CLR="#${CLR}" + + + + . /usr/share/mb-jgtools/pipemenu-standalone.cfg + . $HOME/.config/mabox/mabox.conf + CONFIG_FILE=$(mktemp) + MENU_ITEMS=$(mktemp) + trap "rm -f ${CONFIG_FILE} ${MENU_ITEMS}" EXIT + POSITION_MODE=pointer + #POSITION_MODE=fixed + HIDE_BACK_ITEMS=1 + menu_gradient_pos=none + jgtools_padding=4 + MENU_PADDING_TOP=${jgtools_padding:-0} + JGWIDTH=270 + TABS=140 + jgmenu_icon_size=0 + + mkconfigfile + + case "$LANG" in + pl*) + CUSTOM_COMMANDS_SEP="Własne polecenia" + EDIT_CUSTOMCOMMANDS=" Edytuj menu" + ;; + es*) + CUSTOM_COMMANDS_SEP="Custom commands" + EDIT_CUSTOMCOMMANDS=" Edit menu" + ;; + *) + CUSTOM_COMMANDS_SEP="Custom commands" + EDIT_CUSTOMCOMMANDS=" Edit menu" + ;; + esac +cat < ${MENU_ITEMS} +${CUSTOMCOMMANDS} +EOF + +jgmenu --config-file=${CONFIG_FILE} --csv-file=${MENU_ITEMS} 2>/dev/null +} +cmdmenu_edit() { + if [[ -s "${CONKYDIR}/menuscripts/${1}.csv" ]];then + geany "${CONKYDIR}/menuscripts/${1}.csv" + else + +cat < "${CONKYDIR}/menuscripts/${1}.csv" +# Add your commands here +# Syntax is simple: Label,command +# examples: + +#The Gimp,gimp +#Firefox,firefox --new-window https://maboxlinux.org +#Btop,terminator -T Btop -e btop + +# If only one command is uncommented it will run, if more commands available menu will be shown +# to see how it works play with uncomenting examples above and clicking Conky +EOF +geany "${CONKYDIR}/menuscripts/${1}.csv" + fi +} + +netdevice () { +CFGFILE="$HOME/.config/conky/Network_mbcolor.conkyrc" +rm /tmp/xx* +cd /tmp + +csplit -s ${CFGFILE} /conky.text/ + +#IFACE=$(ip route get 8.8.8.8 | awk -- '{printf $5}') +# thanks @sng :) +IFACE=$(ip route get 8.8.8.8 | awk '{for(i=1; i> /tmp/xx00 +conky.text = [[ +\${color}$NETWORK +\${color}$DEVICE \${alignr}\${color0}$IFACE +\${color}$IP \${alignr}\${color0}\${addr $IFACE} +\${color}$DOWNLOAD \$color0\${downspeed $IFACE} \${alignr}\${color0}\${upspeed $IFACE}\${color} Upload +\${color2}\${downspeedgraph $IFACE 30,100 -t} \${alignr} \${upspeedgraph $IFACE 30,100 -t} +\${color}Total Down \${color0}\${totaldown $IFACE} \${alignr}\${color0}\${totalup $IFACE}\${color} Total Up +\${color0}\${hr} +\${execi 30 netstat -ept | grep ESTAB | awk '{print \$9}' | cut -d/ -f2 | sort | uniq -c | sort -nr} +]]; +EOF + +cat /tmp/xx00 > ${CFGFILE} +} +savescheme () { + case "$LANG" in + pl*)SAVE_AS="Nowy motyw Conky" + DESC="Zapisz obecnie ustawione kolory Conky jako nowy motyw..." + LABEL="Nazwa:" + NAME="nazwa";; + *) SAVE_AS="New Conky colorscheme" + DESC="Save current Conky colors as colorscheme..." + LABEL="Name:" + NAME="colorscheme-name";; + esac + # ask for scheme name + schemename=$(yad --center --width=300 --borders=20 --window-icon=mbcc --title "$SAVE_AS" --text="$DESC" --entry --entry-label="$LABEL" --entry-text="$NAME") || exit 1 + echo "${1}${schemename}" >> "$HOME/.config/colorizer/conky/colorschemes.csv" +} +delscheme() { + sed -i ${1}d "$HOME/.config/colorizer/conky/colorschemes.csv" +} + +applyscheme () { +case "$1" in + sys) SCHEMEFILE="/usr/share/mabox-colorizer/colorschemes/conky.csv";; + usr) SCHEMEFILE="$HOME/.config/colorizer/conky/colorschemes.csv";; +esac +while IFS="|" read -r own_window_colour default_color color0 color1 color2 color3 wintrans outline shades bord bwidth stip scheme_name +do + win_bgcolor ${own_window_colour} ${3} + default_color ${default_color} ${3} + color0 ${color0} ${3} + color1 ${color1} ${3} + color2 ${color2} ${3} + color3 ${color3} ${3} + transparent ${wintrans} ${3} + shadow="no" + [[ "$outline" == true ]] && shadow="outline" + [[ "$shades" == true ]] && shadow="shadow" + shades "$shadow" ${3} + stippled_borders ${stip} ${3} + draw_borders ${bord} ${3} + border_width ${bwidth} ${3} + +done < <(awk 'NR == n' n=$2 "$SCHEMEFILE") +} +fix_transparent_conkies(){ + transparent true ${CONKYDIR}/Polaroid_mbcolor.conkyrc + transparent true ${CONKYDIR}/Better_Clock_mbcolor.conkyrc + transparent true ${CONKYDIR}/Mabox_logo_SVG_mbcolor.conkyrc +} + +applyscheme_all () { +case "$1" in + sys) SCHEMEFILE="/usr/share/mabox-colorizer/colorschemes/conky.csv";; + usr) SCHEMEFILE="$HOME/.config/colorizer/conky/colorschemes.csv";; +esac +while IFS="|" read -r own_window_colour default_color color0 color1 color2 color3 wintrans outline shades bord bwidth stip scheme_name +do + win_bgcolor_all ${own_window_colour} + default_color_all ${default_color} + color0_all ${color0} + color1_all ${color1} + color2_all ${color2} + color3_all ${color3} + transparent_all ${wintrans} + shadow="no" + [[ "$outline" == true ]] && shadow="outline" + [[ "$shades" == true ]] && shadow="shadow" + shades_all "$shadow" + stippled_borders_all ${stip} + draw_borders_all ${bord} + border_width_all ${bwidth} +done < <(awk 'NR == n' n=$2 "$SCHEMEFILE") + +fix_transparent_conkies +} + + +convert_from_old () { + # try to convert from old syntax to new by convert.lua script + #notify-send.sh "Convert func" "${1}" + kill ${1} + convert.lua ${1} + sleep 1 + startone ${1} +} +baseconky_info() { + #notify-send.sh -i mbcc "Important" "Baseconky info" + case "$LANG" in + pl*) + TITLE="Ważna informacja" + MSG="Podczas pracy nad nowymi schematami kolorów lub dostosowywaniem kolorów warto uruchomić Conky: Sysinfo - który jest bazowym Conky.\nJego kolory i inne zmienne są brane pod uwagę.\n\nUruchomić Sysinfo teraz?\n\n" + START="Tak, uruchom Sysinfo Conky" + NO="Nie" + ;; + *) + TITLE="Important info" + MSG="When working on new color schemes or customizing colors, it's worth running Conky: Sysinfo - which is the base Conky. Its colors and other variables are taken into account by Colorizer.\n\nStart Sysinfo Conky now?\n\n" + START="Yes, start Sysinfo Conky" + NO="No" + ;; + esac + cmd=( + yad --center --width=360 --borders=20 --window-icon=mbcc --image=colorizer + --title "${TITLE}" + --text="${MSG}" + --button="${START}:1" + --button="${NO}:0" + ) + "${cmd[@]}" + exval=$? + #notify-send.sh -t 10000 "Exval" "${exval}" + case $exval in + 1) startone "$HOME/.config/conky/sysinfo_mbcolor.conkyrc";; + 0) : ;; + 252): ;; + esac + colorizer-conky -s +} +mono () { +lighten=(0.92 0.8 0.65 0.45 0.28) +darken=(0.9 0.74 0.54 0.38 0.18) + +if [ "${1}" == pick ];then + color=$(gpick -pso 2>/dev/null) +else + color="${1}" +fi + +if [ "${#color}" == 7 ];then + for i in "${lighten[@]}" + do + pal+=("$(pastel mix -f $i "#ffffff" "$color"|pastel format hex)") + done + pal+=("$color") + + for i in "${darken[@]}" + do + pal+=("$(pastel mix -f $i "$color" "#000000"|pastel format hex)") + done +else + exit 0 +fi + +#colorize Conky +if [ "$2" == "dark" ];then + win_bgcolor_all "${pal[10]}" + default_color_all "${pal[0]}" + color0_all "${pal[3]}" + color1_all "${pal[4]}" + color2_all "${pal[5]}" + color3_all "${pal[6]}" +else # light + win_bgcolor_all "${pal[4]}" + default_color_all "${pal[9]}" + color0_all "${pal[7]}" + color1_all "${pal[8]}" + color2_all "${pal[1]}" + color3_all "${pal[6]}" +fi + +fix_transparent_conkies +colorizer-conky -s 2>/dev/null +} +monoone () { +lighten=(0.92 0.8 0.65 0.45 0.28) +darken=(0.9 0.74 0.54 0.38 0.18) + +if [ "${1}" == pick ];then + color=$(gpick -pso 2>/dev/null) +else + color="${1}" +fi + +if [ "${#color}" == 7 ];then + for i in "${lighten[@]}" + do + pal+=("$(pastel mix -f $i "#ffffff" "$color"|pastel format hex)") + done + pal+=("$color") + + for i in "${darken[@]}" + do + pal+=("$(pastel mix -f $i "$color" "#000000"|pastel format hex)") + done +else + exit 0 +fi + +# colorize one Conky +if [ "$2" == "dark" ];then + win_bgcolor "${pal[9]}" "${3}" + default_color "${pal[8]}" "${3}" + color0 "${pal[3]}" "${3}" + color1 "${pal[4]}" "${3}" + color2 "${pal[5]}" "${3}" + color3 "${pal[6]}" "${3}" +else # light + win_bgcolor "${pal[4]}" "${3}" + default_color "${pal[5]}" "${3}" + color0 "${pal[8]}" "${3}" + color1 "${pal[9]}" "${3}" + color2 "${pal[1]}" "${3}" + color3 "${pal[6]}" "${3}" +fi +} + +bc_fstime (){ +sd "template4 =.*$" "template4 = [[${1}]]," "$HOME/.config/conky/Better_Clock_mbcolor.conkyrc" +size="$1" +sek=$((size/2)) +sd "template5 =.*$" "template5 = [[${sek}]]," "$HOME/.config/conky/Better_Clock_mbcolor.conkyrc" +} +bc_ftime () { +sd "template2 =.*$" "template2 = [[${1}]]," "$HOME/.config/conky/Better_Clock_mbcolor.conkyrc" +} +bc_fsdate () { +sd "template6 =.*$" "template6 = [[${1}]]," "$HOME/.config/conky/Better_Clock_mbcolor.conkyrc" +} +bc_fdate () { +sd "template3 =.*$" "template3 = [[${1}]]," "$HOME/.config/conky/Better_Clock_mbcolor.conkyrc" +} +bc_tformat() { +sd "template0 =.*$" "template0 = [[${1}]]," "$HOME/.config/conky/Better_Clock_mbcolor.conkyrc" +} +bc_dformat() { +sd "template1 =.*$" "template1 = [[${1}]]," "$HOME/.config/conky/Better_Clock_mbcolor.conkyrc" +} + + +case "$1" in + transparent_all) transparent_all "$2";; + transparent) transparent "$2" "$3";; + win_bgcolor_all) win_bgcolor_all "$2";; + win_bgcolor) win_bgcolor "$2" "$3";; + draw_borders_all) draw_borders_all "$2" ;; + draw_borders) draw_borders "$2" "$3";; + border_width)border_width "$2" "$3";; + border_width_all)border_width_all "$2";; + stippled_borders_all) stippled_borders_all "$2" ;; + stippled_borders) stippled_borders "$2" "$3";; + default_color_all) default_color_all "$2";; + color0_all) color0_all "$2";; + color1_all) color1_all "$2";; + color2_all) color2_all "$2";; + color3_all) color3_all "$2";; + default_color) default_color "$2" "$3";; + color0) color0 "$2" "$3";; + color1) color1 "$2" "$3";; + color2) color2 "$2" "$3";; + color3) color3 "$2" "$3";; + color8) color8 "$2" "$3";; + color9) color9 "$2" "$3";; + basefont_inc_all) basefont_inc_all;; + basefont_dec_all) basefont_dec_all;; + basefont_inc) basefont_inc "$2";; + basefont_dec) basefont_dec "$2";; + basefont_family) basefont_family "$2" "$3";; + basefont_family_all) basefont_family_all "$2";; + basefont_size) basefont_size "$2" "$3";; + basefont_size_all) basefont_size_all "$2";; + setfont_all) setfont_all;; + serfont) setfont;; + shades_all) shades_all "$2";; + shades) shades "$2" "$3";; + logosize) logosize "$2";; + single) pipemenu "$2";; + pos) pos "$2" "$3";; + gap_x) gap_x "$2" "$3";; + gap_y) gap_y "$2" "$3";; + setpos) setpos "$2";; + startone) startone "$2";; + startall) startall;; + kill) kill "$2";; + toggleone) toggleone "$2";; + restartone) restartone "$2";; + contextmenu) contextmenu;; + cmdmenu) cmdmenu "$2";; + cmdmenu_edit) cmdmenu_edit "$2";; + makemoveableall) makemoveableall;; + saveposall) saveposall;; + resetcolorsall) resetcolorsall ;; + resetcolorsone) resetcolorsone "$2";; + savescheme) savescheme "$2";; + delscheme) delscheme "$2";; + applyscheme) applyscheme "$2" "$3" "$4";; + applyscheme_all) applyscheme_all "$2" "$3";; + netdevice) netdevice ;; + convert_from_old) convert_from_old "$2";; + baseconky_info) baseconky_info;; + mono) mono "$2" "$3";; + monoone) monoone "$2" "$3" "$4";; + fix_transparent_conkies)fix_transparent_conkies;; + bc_fstime)bc_fstime "$2";; + bc_ftime)bc_ftime "$2";; + bc_fsdate)bc_fsdate "$2";; + bc_fdate)bc_fdate "$2";; + bc_tformat)bc_tformat "$2";; + bc_dformat)bc_dformat "$2";; + *) : ;; +esac diff --git a/bin/conkymountpoints.sh b/bin/conkymountpoints.sh new file mode 100755 index 0000000..a8ac709 --- /dev/null +++ b/bin/conkymountpoints.sh @@ -0,0 +1,25 @@ +#!/bin/bash + +getdata () { +df -h | grep -v "boot" | grep -v "/dev/loop" | grep '^/dev' | while read DEVICE SIZE USED FREE PERCENT MOUNT +do +[[ "${#MOUNT}" -gt "10" ]] && MOUNTLBL=${MOUNT##*/} || MOUNTLBL=${MOUNT} +[[ "${#MOUNTLBL}" -gt "10" ]] && MOUNTLBL=${MOUNTLBL:0:9} +echo "\${color0}$MOUNTLBL\${goto 90}\${color2}\${fs_bar 6,64 $MOUNT}\${color1}\${goto 160}$USED\${goto 200}$SIZE\${goto 240}$PERCENT" +done +} +case "$LANG" in + pl*) + MOUNTPOINTS="Punkty montowania" + USED="użyte" + SIZE="rozmiar" + ;; + *) + MOUNTPOINTS="MOUNT POINTS" + USED="used" + SIZE="size" + ;; +esac +echo "\${color0}$MOUNTPOINTS" +echo "\${goto 160}$USED\${goto 200}$SIZE\${goto 240}%" +getdata diff --git a/bin/convert.lua b/bin/convert.lua new file mode 100755 index 0000000..92f9d56 --- /dev/null +++ b/bin/convert.lua @@ -0,0 +1,161 @@ +#! /usr/bin/lua + +local usage = [[ +Usage: convert.lua old_conkyrc [new_conkyrc] + +Tries to convert conkyrc from the old v1.x format to the new, lua-based format. + +Keep in mind that there is no guarantee that the output will work correctly +with conky, or that it will be able to convert every conkyrc. However, it +should provide a good starting point. + +Although you can use this script with only 1 arg and let it overwrite the old +config, it's suggested to use 2 args so that the new config is written in a new +file (so that you have backup if something went wrong). + +Optional: Install dos2unix. We will attempt to use this if it is available +because Conky configs downloaded from Internet sometimes are created on DOS/Windows +machines with different line endings than Conky configs created on Unix/Linux. + +For more information about the new format, read the wiki page + +]]; + +local function quote(s) + if not s:find("[\n'\\]") then + return "'" .. s .. "'"; + end; + local q = ''; + while s:find(']' .. q .. ']', 1, true) do + q = q .. '='; + end; + return string.format('[%s[\n%s]%s]', q, s, q); +end; + +local bool_setting = { + background = true, disable_auto_reload = true, double_buffer = true, draw_borders = true, + draw_graph_borders = true, draw_outline = true, draw_shades = true, extra_newline = true, + format_human_readable = true, no_buffers = true, out_to_console = true, + out_to_wayland = true, + out_to_ncurses = true, out_to_stderr = true, out_to_x = true, override_utf8_locale = true, + own_window = true, own_window_argb_visual = true, own_window_transparent = true, + short_units = true, show_graph_range = true, show_graph_scale = true, + times_in_seconds = true, top_cpu_separate = true, uppercase = true, use_xft = true, + draw_blended = true, forced_redraw = true +}; + +local num_setting = { + border_inner_margin = true, border_outer_margin = true, border_width = true, + cpu_avg_samples = true, diskio_avg_samples = true, gap_x = true, gap_y = true, + imlib_cache_flush_interval = true, imlib_cache_size = true, + max_port_monitor_connections = true, max_text_width = true, max_user_text = true, + maximum_width = true, mpd_port = true, music_player_interval = true, net_avg_samples = true, + own_window_argb_value = true, pad_percents = true, stippled_borders = true, + text_buffer_size = true, top_name_width = true, total_run_times = true, + update_interval = true, update_interval_on_battery = true, xftalpha = true, + xinerama_head = true, +}; + +local split_setting = { + default_bar_size = true, default_gauge_size = true, default_graph_size = true, + minimum_size = true +}; + +local colour_setting = { + color0 = true, color1 = true, color2 = true, color3 = true, color4 = true, color5 = true, + color6 = true, color7 = true, color8 = true, color9 = true, default_color = true, + default_outline_color = true, default_shade_color = true, own_window_colour = true +}; + +local function alignment_map(value) + local map = { m = 'middle', t = 'top', b = 'bottom', r = 'right', l = 'left' }; + if map[value] == nil then + return value; + else + return map[value]; + end; +end; + +local function handle(setting, value) + setting = setting:lower(); + if setting == '' then + return ''; + end; + if split_setting[setting] then + local x, y = value:match('^(%S+)%s*(%S*)$'); + local ret = setting:gsub('_size', '_width = ') .. x .. ','; + if y ~= '' then + ret = ret .. ' ' .. setting:gsub('_size', '_height = ') .. y .. ','; + end; + return '\t' .. ret; + end; + if bool_setting[setting] then + value = value:lower(); + if value == 'yes' or value == 'true' or value == '1' or value == '' then + value = 'true'; + else + value = 'false'; + end; + elseif not num_setting[setting] then + if setting == 'alignment' and value:len() == 2 then + value = alignment_map(value:sub(1,1)) .. '_' .. alignment_map(value:sub(2,2)); + elseif colour_setting[setting] and value:match('^[0-9a-fA-F]+$') then + value = '#' .. value; + elseif setting == 'xftfont' then + setting = 'font'; + end; + value = quote(value); + end; + return '\t' .. setting .. ' = ' .. value .. ','; +end; + +local function convert(s) + local setting, comment = s:match('^([^#]*)#?(.*)\n$'); + if comment ~= '' then + comment = '--' .. comment; + end; + comment = comment .. '\n'; + return handle(setting:match('^%s*(%S*)%s*(.-)%s*$')) .. comment; +end; + +local input; +local output; + +if conky == nil then --> standalone program + -- 1 arg: arg is input and outputfile + -- 2 args: 1st is inputfile, 2nd is outputfile + -- 0, 3 or more args: print usage to STDERR and quit + if #arg == 1 or #arg == 2 then + if os.execute('command -v dos2unix 2>&1 >/dev/null') == 0 then + os.execute('dos2unix ' .. arg[1]); + end + input = io.input(arg[1]); + else + io.stderr:write(usage); + return; + end; +else + -- we are called from conky, the filename is the first argument + input = io.open(..., 'r'); +end; + + +local config = input:read('*a'); +input:close(); + +local settings, text = config:match('^(.-)TEXT\n(.*)$'); + +local converted = 'conky.config = {\n' .. settings:gsub('.-\n', convert) .. '};\n\nconky.text = ' .. + quote(text) .. ';\n'; + +if conky == nil then + if #arg == 2 then + output = io.output(arg[2]); + else + output = io.output(arg[1]); + end + output:write(converted); + output:close(); +else + return assert(load(converted, 'converted config')); +end; diff --git a/bin/fontctl b/bin/fontctl new file mode 100755 index 0000000..045d3f2 --- /dev/null +++ b/bin/fontctl @@ -0,0 +1,148 @@ +#!/bin/bash + +# fontctl - cli to handle fonts in Mabox: openbox, jgmenu, tint2, conky, gtk +CONKYDIR="$HOME"/.config/conky +BASECONKY="$CONKYDIR/sysinfo_mbcolor.conkyrc" +. $HOME/.config/mabox/mabox.conf + +get_gtkfont() { +GTK2RC="$HOME"/.gtkrc-2.0 +GTK3RC="$HOME"/.config/gtk-3.0/settings.ini + +GTK_FONT=( $(grep "gtk-font-name" ${GTK2RC} | cut -d'"' -f2) ) +GTK_FAMILY=${GTK_FONT[@]::${#GTK_FONT[@]}-1} +GTK_SIZE=${GTK_FONT[-1]} +} + +gtk_fontfamily() { + get_gtkfont + sd "^gtk-font-name=.*" "gtk-font-name=\"${1} ${GTK_SIZE}\"" ${GTK2RC} + sd "^gtk-font-name=.*" "gtk-font-name=${1} ${GTK_SIZE}" ${GTK3RC} + reload-gtk +} +gtk_fontsize() { + get_gtkfont + case "$1" in + inc) SIZE=$((GTK_SIZE+1));; + dec) SIZE=$((GTK_SIZE-1));; + *) SIZE=${1};; + esac + sd "^gtk-font-name=.*" "gtk-font-name=\"${GTK_FAMILY} ${SIZE}\"" ${GTK2RC} + sd "^gtk-font-name=.*" "gtk-font-name=${GTK_FAMILY} ${SIZE}" ${GTK3RC} + reload-gtk +} +resetgtk() { + get_gtkfont + sd "^gtk-font-name=.*" "gtk-font-name=\"Ubuntu 10\"" ${GTK2RC} + sd "^gtk-font-name=.*" "gtk-font-name=Ubuntu 10" ${GTK3RC} + reload-gtk +} +resetob () { + nspace="http://openbox.org/3.4/rc" + cfg="$HOME/.config/openbox/rc.xml" + + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:name' -v "Ubuntu" "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:name' -v "Ubuntu" "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:size' -v 10 "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:size' -v 10 "$cfg" + + #add Weight and slant + + openbox --reconfigure +} +resetmenus () { + mb-setvar menu_font_size=10 + mb-setvar menu_sep_font_size=11 + mb-setvar "menu_font_family=\'Ubuntu\'" + mb-setvar "menu_sep_font_family=\'Ubuntu Bold\'" +} +resetconky () { + sd "font .*=.*,$" "font = 'Ubuntu:size=8'," ${CONKYDIR}/*mbcolor.conkyrc +} +resetall () { + resetconky + resetob + resetmenus + resetgtk + + } + +inc_all() { + gtk_fontsize inc + inc_conky + inc_menus + ob_fontsize inc +} +dec_all() { + gtk_fontsize dec + dec_conky + dec_menus + ob_fontsize dec +} +inc_conky () { + read FONTDEF <<< "$(grep "font .*=.*,$" ${BASECONKY} | cut -d'=' -f2,3 |cut -d"'" -f2)" + FONT=${FONTDEF%:*} + FONTSIZE=${FONTDEF#*=} + ((FONTSIZE++)) + sd "font .*=.*,$" "font = '${FONT}:size=${FONTSIZE}'," ${CONKYDIR}/*mbcolor.conkyrc +} +dec_conky () { + read FONTDEF <<< "$(grep "font .*=.*,$" ${BASECONKY} | cut -d'=' -f2,3 |cut -d"'" -f2)" + FONT=${FONTDEF%:*} + FONTSIZE=${FONTDEF#*=} + ((FONTSIZE--)) + sd "font .*=.*,$" "font = '${FONT}:size=${FONTSIZE}'," ${CONKYDIR}/*mbcolor.conkyrc +} +inc_menus () { + mb-setvar menu_font_size=$((menu_font_size+1)) + mb-setvar menu_sep_font_size=$((menu_sep_font_size+1)) +} +dec_menus () { + mb-setvar menu_font_size=$((menu_font_size-1)) + mb-setvar menu_sep_font_size=$((menu_sep_font_size-1)) +} +ob_fontsize () { + nspace="http://openbox.org/3.4/rc" + cfg="$HOME/.config/openbox/rc.xml" + case "$1" in + inc|increase) + SIZE=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:size' "$cfg") + if [ "$SIZE" -lt "21" ];then + ((SIZE=SIZE+1)) + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:size' -v "$SIZE" "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:size' -v "$SIZE" "$cfg" + fi + ;; + dec|decrease) + SIZE=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:size' "$cfg") + if [ "$SIZE" -gt "7" ];then + ((SIZE=SIZE-1)) + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:size' -v "$SIZE" "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:size' -v "$SIZE" "$cfg" + fi + ;; + *) + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:size' -v "$1" "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:size' -v "$1" "$cfg" + ;; + esac + openbox --reconfigure +} + +case "$1" in + gtk_fontfamily) gtk_fontfamily "$2";; + gtk_fontsize) gtk_fontsize "$2";; + inc_all) inc_all;; + dec_all) dec_all;; + inc_conky) inc_conky;; + dec_conky) dec_conky;; + inc_menus) inc_menus;; + dec_menus) dec_menus;; + ob_fontsize) ob_fontsize "$2";; # arg: size, inc or dec + resetall) resetall;; + resetob) resetob;; + resetmenus) resetmenus;; + resetconky) resetconky;; + resetgtk) resetgtk;; + *):;; +esac diff --git a/bin/gtkcolors.py b/bin/gtkcolors.py new file mode 100755 index 0000000..955873b --- /dev/null +++ b/bin/gtkcolors.py @@ -0,0 +1,119 @@ +#!/usr/bin/env python3 + +""" +Based on labwc-gtktheme.py: +Create labwc theme based on the current Gtk theme + +SPDX-License-Identifier: GPL-2.0-only + +Copyright (C) @Misko_2083 2019 +Copyright (C) Johan Malm 2019-2022 +""" + +import os +import errno +from tokenize import tokenize, NUMBER, NAME, OP +from io import BytesIO +import gi +gi.require_version("Gtk", "3.0") +from gi.repository import Gtk + +def parse(tokens): + """ + Parse css color expression token list and return red/green/blue values + Valid name-tokens include 'rgb' and 'rgba', whereas 'alpha', 'shade' and + 'mix' are ignored. @other-color references are still to be implemented. + """ + nr_colors_to_parse = 0 + in_label = False + color = [] + for toknum, tokval, _, _, _ in tokens: + if '@' in tokval: + in_label = True + continue + if toknum == NAME and in_label: + color.clear() + color.append(f"@{tokval}") + return color + if nr_colors_to_parse > 0: + if toknum == OP and tokval in ')': + print("warn: still parsing numbers; did not expect ')'") + if toknum == NUMBER: + color.append(tokval) + nr_colors_to_parse -= 1 + continue + if toknum == NAME and tokval in 'rgb': + nr_colors_to_parse = 3 + elif toknum == NAME and tokval in 'rgba': + nr_colors_to_parse = 4 + return color + +def color_hex(color): + """ return rrggbb color hex from list [r, g, b,...] """ + if not color: + return "None" + elif len(color) < 3: + return f"{color[0]}" + return '{:02x}{:02x}{:02x}'.format(*(int(x) for x in color[:3])) + +def hex_from_expr(line): + """ parse color expression to return hex style rrggbb """ + tokens = tokenize(BytesIO(line.encode('utf-8')).readline) + color = parse(tokens) + return color_hex(color) + +def parse_section(lines, name): + theme = {} + inside = False + for line in lines: + if f"{name} {{" in line: + inside = True + continue + if inside: + if "}" in line or "{" in line: + inside = False + break + if 'color' not in line: + continue + key, value = line.strip().split(":", maxsplit=1) + theme[f'{name}.{key.replace(" ", "")}'] = hex_from_expr(value) + return theme + +def resolve_labels(theme): + for key, label in theme.items(): + if '@' in label: + for tmp, value in theme.items(): + if tmp == label[1:]: + theme[key] = value + return resolve_labels(theme) + return theme + +def main(): + """ main """ + + gset = Gtk.Settings.get_default() + themename = gset.get_property("gtk-theme-name") + css = Gtk.CssProvider.get_named(themename).to_string() + + lines = css.split("\n") + theme = {} + + # Parse @define-color lines using syntax "@define-color " + for line in lines: + if "@define-color" not in line: + continue + x = line.split(" ", maxsplit=2) + theme[x[1]] = hex_from_expr(x[2]) + + # Add the color definitions in the headerbar{} and menu{} sections + theme |= parse_section(lines, "headerbar") + theme |= parse_section(lines, "menu") + + theme = resolve_labels(theme) + + for key, value in theme.items(): + print(f"{key}: {value}") + return + +if __name__ == '__main__': + main() diff --git a/bin/gtkctl b/bin/gtkctl new file mode 100755 index 0000000..58d2c47 --- /dev/null +++ b/bin/gtkctl @@ -0,0 +1,72 @@ +#!/bin/bash + +# gtkctl - GTK widget (theme), Icons settings for Mabox + +GTK2RC="$HOME"/.gtkrc-2.0 +GTK3RC="$HOME"/.config/gtk-3.0/settings.ini + + +get_theme(){ + GTK_THEME=( $(grep "gtk-theme-name" ${GTK2RC} | cut -d'"' -f2) ) + echo ${GTK_THEME} +} + +get_icons(){ + GTK_ICON=( $(grep "gtk-icon-theme-name" ${GTK2RC} | cut -d'"' -f2) ) + echo ${GTK_ICON} +} + + + +theme(){ + # set GTK theme + : +} + +icons(){ + # set icon theme + sd "^gtk-icon-theme-name=.*" "gtk-icon-theme-name=\"${1}\"" ${GTK2RC} + sd "^gtk-icon-theme-name=.*" "gtk-icon-theme-name=${1}" ${GTK3RC} + reload-gtk +} + +papcolor(){ +ICON_DIR="$HOME/.local/share/icons" +case "$1" in +adwaita|black|blue|bluegrey|breeze|brown|carmine|cyan|darkcyan|deeporange|green|grey|indigo|magenta|nordic|orange|palebrown|paleorange|pink|red|teal|violet|white|yaru|yellow) +;; +*) +exit 1 +esac + +[[ "$2" == "-d" ]] && VARIANT="Dark-" || VARIANT="" + +if [ -f "${ICON_DIR}/Papirus-Mabox-${VARIANT}${1}/index.theme" ];then +TITLE="Icons theme changed!" +TEXT="Papirus folders color: ${VARIANT}${1^}" +icons Papirus-Mabox-${VARIANT}${1} +notify-send.sh -u normal -i "${ICON_DIR}/Papirus-Mabox-${VARIANT}${1}/64x64/places/folder-linux.svg" "$TITLE" "$TEXT" + +else +TITLE="Please wait..." +TEXT="Preparing ${VARIANT}${1} folder color icons" +TITLE2="Success!" +TEXT2="${VARIANT}${1^} icons color variant generated successfully" +notify-send.sh -u critical -i /usr/share/icons/Papirus/64x64/places/folder-${VARIANT}${1}.svg -R /tmp/papicon "$TITLE" "$TEXT" +papirus-folder-color.sh -c ${1} ${2} +notify-send.sh -u normal -i "${ICON_DIR}/Papirus-Mabox-${VARIANT}${1}/64x64/places/folder-linux.svg" -R /tmp/papicon "$TITLE2" "$TEXT2" +icons Papirus-Mabox-${VARIANT}${1} + +fi +} + + + +case "$1" in + get_theme)get_theme;; + get_icons)get_icons "$2";; + theme)theme "$2";; + icons)icons "$2";; + papcolor)papcolor "$2" "$3";; + *):;; +esac diff --git a/bin/jgctl b/bin/jgctl new file mode 100755 index 0000000..aa00eb3 --- /dev/null +++ b/bin/jgctl @@ -0,0 +1,531 @@ +#!/bin/bash +# jgctl - menu config actions +# jgctl variable value config_file +. $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"); +THEMERC="$HOME/.config/mabox/jgobthemes/${OBTHEME}.colorrc";; +*) +THEMERC="$HOME/.config/mabox/jgobthemes/${jgmenu_theme}.colorrc";; +esac + +# Backup original theme file +if [ ! -f "${THEMERC}.bak" ]; then + cp ${THEMERC} ${THEMERC}.bak +fi +theme () { + mb-setvar jgmenu_theme=${1} +} +reset () { + rm ${THEMERC} + mv ${THEMERC}.bak ${THEMERC} +} +resetMBcolors() { + mb-setvar jgmenu_theme=MBcolors + mb-setvar item_height_factor=200 + reset + case "$1" in + show) + colorizer-menus -s + ;; + *):;; + esac +} +color_menu_bg () { + read MBG MBGA<<< "$(grep 'color_menu_bg ' ${THEMERC} | cut -d'=' -f2)" + case "${#1}" in + 7) #color + sd "color_menu_bg .*$" "color_menu_bg = $1 $MBGA" ${THEMERC} + ;; + *) + sd "color_menu_bg .*$" "color_menu_bg = $MBG $1" ${THEMERC} + ;; + esac + } +color_menu_bg_to () { + read MBGT MBGTA<<< "$(grep 'color_menu_bg_to ' ${THEMERC} | cut -d'=' -f2)" + case "${#1}" in + 7) #color + sd "color_menu_bg_to.*$" "color_menu_bg_to = $1 $MBGTA" ${THEMERC} + ;; + *) + sd "color_menu_bg_to.*$" "color_menu_bg_to = $MBGT $1" ${THEMERC} + ;; + esac + } +color_menu_border () { + read MBORDER MBORDERA<<< "$(grep 'color_menu_border' ${THEMERC} | cut -d'=' -f2)" + case "${#1}" in + 7) #color + sd "color_menu_border.*$" "color_menu_border = $1 $MBORDERA" ${THEMERC} + ;; + *) + sd "color_menu_border.*$" "color_menu_border = $MBORDER $1" ${THEMERC} + ;; + esac + } +menu_gradient_pos () { + sd "menu_gradient_pos.*$" "menu_gradient_pos = $1" ${THEMERC} + #mb-setvar menu_gradient_pos=${1} + } +gradient () { + read MBG MBGA<<< "$(grep 'color_menu_bg ' ${THEMERC} | cut -d'=' -f2)" + read MBGT MBGTA<<< "$(grep 'color_menu_bg_to ' ${THEMERC} | cut -d'=' -f2)" + sd "color_menu_bg .*$" "color_menu_bg = $1 $MBGA" ${THEMERC} + sd "color_menu_bg_to.*$" "color_menu_bg_to = $2 $MBGTA" ${THEMERC} +# Item + ITEM_FG=$(pastel textcolor ${2}|pastel format hex) + if [[ "${ITEM_FG}" == *"ffffff"* ]];then + ITEM_FGCOLOR="#c0c0c0" + else + ITEM_FGCOLOR="#222222" + fi + + + read NFG NFGA<<< "$(grep 'color_norm_fg' ${THEMERC} | cut -d'=' -f2)" + sd "color_norm_fg.*$" "color_norm_fg = $ITEM_FGCOLOR $NFGA" ${THEMERC} + read NBG NBGA<<< "$(grep 'color_norm_bg' ${THEMERC} | cut -d'=' -f2)" + sd "color_norm_bg.*$" "color_norm_bg = $2 $NBGA" ${THEMERC} +# Title (Separator with text) + read TBG TBGA<<< "$(grep 'color_title_bg' ${THEMERC} | cut -d'=' -f2)" + sd "color_title_bg.*$" "color_title_bg = $2 $TBGA" ${THEMERC} + # calculate readable FG color + TITLE_FG=$(pastel textcolor ${2}|pastel format hex) + read TFG TFGA<<< "$(grep 'color_title_fg' ${THEMERC} | cut -d'=' -f2)" + + ###TITLE_FGCOLOR=$(pastel complement ${2}|pastel format hex) + if [[ "${TITLE_FG}" == *"ffffff"* ]];then + TITLE_FGCOLOR=$(pastel mix -f 0.7 '#ffffff' "${2}"|pastel format hex) + else + TITLE_FGCOLOR=$(pastel mix -f 0.7 '#000000' "${2}"|pastel format hex) + fi + sd "color_title_fg.*$" "color_title_fg = ${TITLE_FGCOLOR} $TFGA" ${THEMERC} + ###sd "color_title_fg.*$" "color_title_fg = ${1} $TFGA" ${THEMERC} + read TBORDER TBORDERA<<< "$(grep 'color_title_border' ${THEMERC} | cut -d'=' -f2)" + TITLE_BORDER=$(pastel darken 0.05 ${1}|pastel format hex) + sd "color_title_border.*$" "color_title_border = $TITLE_BORDER $TBORDERA" ${THEMERC} +# Selected (Active) item + read SBG SBGA<<< "$(grep 'color_sel_bg' ${THEMERC} | cut -d'=' -f2)" + alpha=${SBGA:-100} + sd "color_sel_bg.*$" "color_sel_bg = $2 $alpha" ${THEMERC} + ACTIVE_FG=$(pastel textcolor ${2}|pastel format hex) + read SFG SFGA<<< "$(grep 'color_sel_fg' ${THEMERC} | cut -d'=' -f2)" + sd "color_sel_fg.*$" "color_sel_fg = $ACTIVE_FG $SFGA" ${THEMERC} + + read SBORDER SBORDERA<<< "$(grep 'color_sel_border' ${THEMERC} | cut -d'=' -f2)" + alpha=${SBORDERA:-100} + sd "color_sel_border.*$" "color_sel_border = $1 $alpha" ${THEMERC} + +# Separator line + read SFG SFGA<<< "$(grep 'color_sep_fg' ${THEMERC} | cut -d'=' -f2)" + SEP_FG=$(pastel mix -f 0.5 "${1}" "${2}"|pastel format hex) + sd "color_sep_fg.*$" "color_sep_fg = $SEP_FG $SFGA" ${THEMERC} +# Menu border + read MBORDER MBORDERA<<< "$(grep 'color_menu_border' ${THEMERC} | cut -d'=' -f2)" + sd "color_menu_border.*$" "color_menu_border = $1 $MBORDERA" ${THEMERC} +} +sep_halign () { + sd "sep_halign.*$" "sep_halign = $1" ${THEMERC} + } +color_sep_fg () { + read SFG SFGA<<< "$(grep 'color_sep_fg' ${THEMERC} | cut -d'=' -f2)" + case "${#1}" in + 7) #color + sd "color_sep_fg.*$" "color_sep_fg = $1 $SFGA" ${THEMERC} + ;; + *) + sd "color_sep_fg.*$" "color_sep_fg = $SFG $1" ${THEMERC} + ;; + esac +} +color_title_bg () { + read TBG TBGA<<< "$(grep 'color_title_bg' ${THEMERC} | cut -d'=' -f2)" + #notify-send.sh "${1}" "${#1}" + case "${#1}" in + 7) #color + sd "color_title_bg.*$" "color_title_bg = $1 $TBGA" ${THEMERC} + ;; + *) + sd "color_title_bg.*$" "color_title_bg = $TBG $1" ${THEMERC} + ;; + esac +} +color_title_fg () { + read TFG TFGA<<< "$(grep 'color_title_fg' ${THEMERC} | cut -d'=' -f2)" + case "${#1}" in + 7) #color + sd "color_title_fg.*$" "color_title_fg = $1 $TFGA" ${THEMERC} + ;; + *) + sd "color_title_fg.*$" "color_title_fg = $TFG $1" ${THEMERC} + ;; + esac +} +color_title_border () { + read TBORDER TBORDERA<<< "$(grep 'color_title_border' ${THEMERC} | cut -d'=' -f2)" + case "${#1}" in + 7) #color + sd "color_title_border.*$" "color_title_border = $1 $TBORDERA" ${THEMERC} + ;; + *) + sd "color_title_border.*$" "color_title_border = $TBORDER $1" ${THEMERC} + ;; + esac +} +item_border () { + sd "item_border.*$" "item_border = $1" ${THEMERC} + } +item_radius () { + sd "item_radius.*$" "item_radius = $1" ${THEMERC} + } +color_norm_bg () { + read NBG NBGA<<< "$(grep 'color_norm_bg' ${THEMERC} | cut -d'=' -f2)" + case "${#1}" in + 7) #color + sd "color_norm_bg.*$" "color_norm_bg = $1 $NBGA" ${THEMERC} + ;; + *) + sd "color_norm_bg.*$" "color_norm_bg = $NBG $1" ${THEMERC} + ;; + esac +} +color_norm_fg () { + read NFG NFGA<<< "$(grep 'color_norm_fg' ${THEMERC} | cut -d'=' -f2)" + case "${#1}" in + 7) #color + sd "color_norm_fg.*$" "color_norm_fg = $1 $NFGA" ${THEMERC} + ;; + *) + sd "color_norm_fg.*$" "color_norm_fg = $NFG $1" ${THEMERC} + ;; + esac +} +color_sel_bg () { + read SBG SBGA<<< "$(grep 'color_sel_bg' ${THEMERC} | cut -d'=' -f2)" + alpha=${SBGA:-100} + case "${#1}" in + 7) #color + sd "color_sel_bg.*$" "color_sel_bg = $1 $alpha" ${THEMERC} + ;; + *) + sd "color_sel_bg.*$" "color_sel_bg = $SBG $1" ${THEMERC} + ;; + esac +} +color_sel_fg () { + read SFG SFGA<<< "$(grep 'color_sel_fg' ${THEMERC} | cut -d'=' -f2)" + case "${#1}" in + 7) #color + sd "color_sel_fg.*$" "color_sel_fg = $1 $SFGA" ${THEMERC} + ;; + *) + sd "color_sel_fg.*$" "color_sel_fg = $SFG $1" ${THEMERC} + ;; + esac +} +color_sel_border () { + read SBORDER SBORDERA<<< "$(grep 'color_sel_border' ${THEMERC} | cut -d'=' -f2)" + case "${#1}" in + 7) #color + sd "color_sel_border.*$" "color_sel_border = $1 $SBORDERA" ${THEMERC} + ;; + *) + sd "color_sel_border.*$" "color_sel_border = $SBORDER $1" ${THEMERC} + ;; + esac + #read IBOR<<< "$(grep 'item_border' ${THEMERC} | cut -d'=' -f2)" + #[[ ${IBOR} == "0" ]] && item_border 1 +} +accent () { + color_sel_bg "${1}" + color_sel_fg "${2}" + color_sel_border "${2}" +} +tweak () { + case "$1" in + solid) + menu_gradient_pos none + tweak opacity 100 + opacity color_norm_bg 0 + opacity color_sep_fg 30 + item_radius 0 + item_border 0 + ;; + gradient) + menu_gradient_pos right + opacity color_norm_bg 10 + opacity color_sep_fg 0 + item_radius 3 + item_border 0 + ;; + opacity) + opacity color_menu_bg "$2" + opacity color_menu_bg_to "$2" + ;; + sizing) + case "$2" in + tight) + mb-setvar jgtools_padding=4 + mb-setvar jgtools_border=0 + mb-setvar submenu_spacing=2 + mb-setvar arrow_string= + ;; + normal) + mb-setvar jgtools_padding=8 + mb-setvar jgtools_border=3 + mb-setvar submenu_spacing=3 + mb-setvar arrow_string= + ;; + wide) + mb-setvar jgtools_padding=20 + mb-setvar jgtools_border=6 + mb-setvar submenu_spacing=6 + mb-setvar arrow_string= + ;; + esac + ;; + *):;; + esac + [[ "$3" == "menu" ]] && colorizer-menus -s 2>/dev/null +} + +t_search_field () { + [[ $search_field == "false" ]] && mb-setvar search_field=true || mb-setvar search_field=false + mb-jgtools main ipc +} +t_apps_in_submenu () { + [[ $apps_in_submenu == "true" ]] && mb-setvar apps_in_submenu=false || mb-setvar apps_in_submenu=true + mb-jgtools main ipc +} +t_icons () { + [[ $jgmenu_use_icons == "true" ]] && mb-setvar jgmenu_use_icons=false || mb-setvar jgmenu_use_icons=true + mb-jgtools main ipc +} +border () { + [[ "$jgtools_padding" -lt "${1}" ]] && mb-setvar jgtools_padding=${1} + mb-setvar jgtools_border=${1} + colorizer-menus -s +} +padding () { + [[ "$jgtools_border" -gt "${1}" ]] && mb-setvar jgtools_border=${1} + mb-setvar jgtools_padding=${1} + colorizer-menus -s +} + +opacity () { + # jgctl opacity element value + read FUNC B COLOR OPACITY REST<<< "$(grep ${1} ${THEMERC})" + #echo "$FUNC $B $COLOR $OPACITY $REST" + + sd "$1 .*= $COLOR.*$" "$FUNC = $COLOR $2 $REST" ${THEMERC} + +} +savescheme () { + case "$LANG" in + pl*)SAVE_AS="Nowy motyw Menu" + DESC="Zapisz obecnie ustawione kolory Menu jako nowy motyw..." + LABEL="Nazwa:" + NAME="nazwa";; + *) SAVE_AS="New Menu colorscheme" + DESC="Save current Menu colors as colorscheme..." + LABEL="Name:" + NAME="colorscheme-name";; + esac + # ask for scheme name + schemename=$(yad --center --width=300 --borders=20 --window-icon=mbcc --title "$SAVE_AS" --text="$DESC" --entry --entry-label="$LABEL" --entry-text="$NAME") || exit 1 + + echo "${1}${schemename}" >> "$HOME/.config/colorizer/menus/userschemes2.csv" +} +applyscheme () { +theme MBcolors +line=$(awk 'NR == n' n=$1 "$HOME/.config/colorizer/menus/userschemes2.csv") +#notify-send.sh "$1" "${line}" +case "$1" in + sys) SCHEMEFILE="/usr/share/mabox-colorizer/colorschemes/menus.csv";; + usr) SCHEMEFILE="$HOME/.config/colorizer/menus/userschemes2.csv";; +esac + +while IFS="|" read -r mbg mbga mbgt mbgta mborder mbordera tbg tbga tfg tfga tborder tbordera normbg normbga nfg nfga sbg sbga sfg sfga sborder sbordera sepfg sepfga b r p ss ibor irad a al sephal grad scheme_name +do +mb-setvar jgmenu_theme=MBcolors +color_menu_bg "${mbg}" +color_menu_bg_to "${mbgt}" +color_menu_border "${mborder}" +color_title_bg "${tbg}" +color_title_fg "${tfg}" +color_title_border "${tborder}" +color_norm_bg "${normbg}" +color_norm_fg "${nfg}" +color_sel_bg "${sbg}" +color_sel_fg "${sfg}" +color_sel_border "${sborder}" +color_sep_fg "${sepfg}" +menu_gradient_pos "${grad}" + +#opacity +color_menu_bg "${mbga}" +color_menu_bg_to "${mbgta}" +color_menu_border "${mbordera}" +color_title_bg "${tbga}" +color_title_fg "${tfga}" +color_title_border "${tbordera}" +color_norm_bg "${normbga}" +color_norm_fg "${nfga}" +color_sel_bg "${sbga}" +color_sel_fg "${sfga}" +color_sel_border "${sbordera}" +color_sep_fg "${sepfga}" + + +item_border "${ibor}" +item_radius "${irad}" +sep_halign "${sephal}" + +mb-setvar arrow_string=${a} +mb-setvar arrow_string_left=${al} + +# missing: ( from mabox.conf ) +mb-setvar jgtools_border=${b} +mb-setvar jgtools_padding=${p} +mb-setvar jgtools_radius=${r} +mb-setvar submenu_spacing=${ss} + + +#notify-send.sh "${scheme_name}" "${mbg}" +done < <(awk 'NR == n' n=$2 "$SCHEMEFILE") +} + +delscheme() { + sed -i ${1}d "$HOME/.config/colorizer/menus/userschemes2.csv" +} +mono () { +lighten=(0.92 0.8 0.65 0.45 0.28) +darken=(0.9 0.74 0.54 0.38 0.18) + +if [ "${1}" == pick ];then + color=$(gpick -pso 2>/dev/null) +else + color="${1}" +fi + +if [ "${#color}" == 7 ];then + for i in "${lighten[@]}" + do + pal+=("$(pastel mix -f $i "#ffffff" "$color"|pastel format hex)") + done + pal+=("$color") + + for i in "${darken[@]}" + do + pal+=("$(pastel mix -f $i "$color" "#000000"|pastel format hex)") + done +else + exit 0 +fi + +# colorize menu +if [ "$2" == "dark" ];then + #notify-send.sh "$1" "gen_menu" + color_menu_bg "${pal[8]}" + color_menu_bg_to "${pal[7]}" + color_menu_border "${pal[10]}" + color_title_bg "${pal[9]}" + color_title_border "${pal[9]}" + color_title_fg "${pal[2]}" + color_norm_bg "${pal[8]}" + color_norm_fg "${pal[3]}" + color_sel_bg "${pal[6]}" + color_sel_fg "${pal[1]}" + color_sep_fg "${pal[6]}" +elif [ "$2" == "light" ];then + color_menu_bg "${pal[2]}" + color_menu_bg_to "${pal[3]}" + color_menu_border "${pal[1]}" + color_title_bg "${pal[3]}" + color_title_border "${pal[4]}" + color_title_fg "${pal[10]}" + color_norm_bg "${pal[2]}" + color_norm_fg "${pal[8]}" + color_sel_bg "${pal[4]}" + color_sel_fg "${pal[10]}" + color_sep_fg "${pal[3]}" +else #normal +ITEM_FG=$(pastel textcolor ${color}|pastel format hex) + if [[ "${ITEM_FG}" == *"ffffff"* ]];then + ITEM_FGCOLOR="#c0c0c0" + else + ITEM_FGCOLOR="#222222" + fi + + color_menu_bg "$color" + color_menu_bg_to "$color" + color_menu_border "${pal[8]}" + color_title_bg "${pal[7]}" + color_title_border "${pal[7]}" + color_title_fg "${pal[1]}" + color_norm_bg "${pal[6]}" + color_norm_fg "${ITEM_FGCOLOR}" + color_sel_bg "${pal[4]}" + color_sel_fg "${ITEM_FG}" + color_sep_fg "${pal[4]}" +fi + # opacity + color_norm_bg 0 + +case "$3" in + col)colorizer-menus -s 2>/dev/null;; + stylemenu) jgwallpaperchanger -s jgmenus;; + *):;; +esac +} +randomscheme(){ +mb-setvar jgmenu_theme=MBcolors +themefile=$(find /usr/share/mb-jgtools/jgobthemes/ -type f -name *.colorrc |shuf -n 1) +#notify-send.sh "Theme:" "${themefile}" +cat ${themefile} > ~/.config/mabox/jgobthemes/MBcolors.colorrc +} +applyoldscheme(){ + #notify-send.sh "th" "${1}" +mb-setvar jgmenu_theme=MBcolors +cat ${1} > ~/.config/mabox/jgobthemes/MBcolors.colorrc +} + +case "$1" in + theme) theme "$2";; + reset) reset ;; + resetMBcolors) resetMBcolors "$2";; + color_menu_bg) color_menu_bg "$2";; + color_menu_bg_to) color_menu_bg_to "$2";; + color_menu_border) color_menu_border "$2";; + menu_gradient_pos) menu_gradient_pos "$2";; + gradient) gradient "$2" "$3";; + sep_halign) sep_halign "$2";; + color_sep_fg) color_sep_fg "$2";; + color_title_bg) color_title_bg "$2";; + color_title_fg) color_title_fg "$2";; + color_title_border) color_title_border "$2";; + item_border) item_border "$2";; + item_radius) item_radius "$2";; + color_norm_bg) color_norm_bg "$2";; + color_norm_fg) color_norm_fg "$2";; + color_sel_bg) color_sel_bg "$2";; + color_sel_fg) color_sel_fg "$2";; + color_sel_border) color_sel_border "$2";; + accent) accent "$2" "$3";; + tweak) tweak "$2" "$3" "$4";; + opacity) opacity "$2" "$3";; + t_search_field)t_search_field;; + t_apps_in_submenu) t_apps_in_submenu;; + t_icons)t_icons;; + border)border "$2";; + padding)padding "$2";; + mono) mono "$2" "$3" "$4";; + savescheme) savescheme "$2";; + applyscheme) applyscheme "$2" "$3";; + delscheme) delscheme "$2";; + randomscheme) randomscheme;; + applyoldscheme) applyoldscheme "$2";; + *) : ;; +esac diff --git a/bin/mbclr b/bin/mbclr new file mode 100755 index 0000000..625e5f2 --- /dev/null +++ b/bin/mbclr @@ -0,0 +1,282 @@ +#!/bin/bash +# +# colorizer - set of tools for Mabox (auto)theming +# Copyright (C) 2022-2025 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 . + +# mbclr current polecenie funkcja argument backprg [config_file] +# mbclr +#notify-send.sh "mbclr" "${1}\n${2}\n${3}\n${4}\n${5}\n${6}" +case "$LANG" in + pl*) + PICK_FROM_SCREEN="Pobierz kolor z ekranu" + SELECT_OR_PICK="Wybierz kolor z selektora" + OPACITY="Nieprzezroczystość" + SHADES_OF_CURRENT="Oblicz z bieżącego" + SHADES_OF="Odcienie" + LIGHTEN_DARKEN="Jaśniejsze / Ciemniejsze" + SATURATION="Nasycenie..." + ROTATE_HSL_HUE="Obróć kanał barwy HSL..." + CHANGE_COLOR="Zmień na..." + CURRENT="obecny kolor" + WALLPAPER_COLORS="...kolory z tapety" + GTKCOLORS="Kolory motywu GTK" + ACCENT_COLORS="Popularne kolory akcentu" + GRAYS="Odcienie szarości" + + ;; + *) + PICK_FROM_SCREEN="Pick color from screen" + SELECT_OR_PICK="Select or pick from screen" + OPACITY="Opacity" + SHADES_OF_CURRENT="Calculate from" + SHADES_OF="Shades of" + LIGHTEN_DARKEN="Lighten / Darken" + SATURATION="Saturation..." + ROTATE_HSL_HUE="Rotate HSL hue channel..." + CHANGE_COLOR="Change to..." + CURRENT="current color" + WALLPAPER_COLORS="...wallpaper colors" + GTKCOLORS="GTK theme colors" + ACCENT_COLORS="Popular accent colors" + GRAYS="Shades of Gray" + ;; +esac +ccol_ind=" " +gtkthemename=$(grep gtk-theme ~/.config/gtk-3.0/settings.ini |cut -d'=' -f2) + +main () { +#read WALLPAPER<<< $(grep file "$HOME"/.config/nitrogen/bg-saved.cfg | cut -d'=' -f2) +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 + if [ "$ext" == "avif" ];then + magick ${WALLPATH} -resize 25% /tmp/out.jpg + magick /tmp/out.jpg -colors 12 -unique-colors txt:- |grep -v '^#'| awk '{print substr($3,1,7)}' |pastel sort-by brightness |pastel format hex > "$WALLPALDIR/$NAME.clr" + else + magick ${WALLPATH} -resize 25% -colors 12 -unique-colors txt:- |grep -v '^#'| awk '{print substr($3,1,7)}' |pastel sort-by brightness |pastel format hex > "$WALLPALDIR/$NAME.clr" + fi +fi +mapfile -t wallcolors < "$WALLPALDIR/$NAME.clr" +if [[ "${#wallcolors[@]}" -lt 8 ]]; then +wallcolors+=("#2e3440" "#4c566a" "#5e81ac" "#bf616b" "#b48ead" "#a3be8c" "#ebcb8b" "#d8dee9" "#eceff4") +fi + + +grays=("#000000" "#0d0d0d" "#1b1b1b" "#282828" "#363636" "#434343" "#515151" "#5e5e5e" "#6b6b6b" "#797979" "#868686" "#949494" "#a1a1a1" "#aeaeae" "#bcbcbc" "#c9c9c9" "#d7d7d7" "#e4e4e4" "#f2f2f2" "#FFFFFF") +accents=("#e93d57" "#c7162b" "#e9633a" "#e95620" "#f4a300" "#e8cc2d" "#3cd425" "#0e8420" "#00d3b7" "#18b0b0" "#3dade9" "#686b6f" "#3584e4" "#916ee4" "#b875dc" "#77216e" "#c748ba" "#e93a9a") + +out+=("^sep($4)") +#TU +out+=(" $PICK_FROM_SCREEN,mbclr pixelcolor $2 $3 ${5} ${6}") +out+=(" $SELECT_OR_PICK,mbclr pick $2 $3 ${5} ${6}") + + + +if [[ "$2" == "jgctl" ]]; then +. $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"); +THEMERC="$HOME/.config/mabox/jgobthemes/${OBTHEME}.colorrc";; +*) +THEMERC="$HOME/.config/mabox/jgobthemes/${jgmenu_theme}.colorrc";; +esac +read COLOR OP<<< $(grep "${3}" ${THEMERC} | cut -d'=' -f2) +out+=("^sep($OPACITY)") +out+=("$OPACITY [ $OP ],^checkout(opacity)") +out2+=("^tag(opacity)") +out2+=("^sep($OPACITY [ $OP ]") +out2+=("100 ,jgctl $3 100;${5}") +out2+=(" 95 ,jgctl $3 95 ;${5}") +out2+=(" 90 ,jgctl $3 90 ;${5}") +out2+=(" 80 ,jgctl $3 80 ;${5}") +out2+=(" 70 ,jgctl $3 70 ;${5}") +out2+=(" 60 ,jgctl $3 60 ;${5}") +out2+=(" 50 ,jgctl $3 50 ;${5}") +out2+=(" 40 ,jgctl $3 40 ;${5}") +out2+=(" 30 ,jgctl $3 30 ;${5}") +out2+=(" 20 ,jgctl $3 20 ;${5}") +out2+=(" 10 ,jgctl $3 10 ;${5}") +out2+=(" 5 ,jgctl $3 5 ;${5}") +out2+=(" 0 ,jgctl $3 0 ;${5}") +fi +if [[ "$2" == "t2ctl" ]]; then +T2RC="$HOME/.config/tint2/jaskier_mb.tint2rc" +read COLOR OP<<< $(grep "${3}" ${T2RC} | cut -d'=' -f2) +out+=("^sep($OPACITY)") +out+=("$OPACITY [ $OP ],^checkout(opacity)") +out2+=("^tag(opacity)") +out2+=("^sep($OPACITY [ $OP ]") +out2+=("100 ,t2ctl $3 100;${5}") +out2+=(" 95 ,t2ctl $3 95 ;${5}") +out2+=(" 90 ,t2ctl $3 90 ;${5}") +out2+=(" 80 ,t2ctl $3 80 ;${5}") +out2+=(" 70 ,t2ctl $3 70 ;${5}") +out2+=(" 60 ,t2ctl $3 60 ;${5}") +out2+=(" 50 ,t2ctl $3 50 ;${5}") +out2+=(" 40 ,t2ctl $3 40 ;${5}") +out2+=(" 30 ,t2ctl $3 30 ;${5}") +out2+=(" 20 ,t2ctl $3 20 ;${5}") +out2+=(" 10 ,t2ctl $3 10 ;${5}") +out2+=(" 5 ,t2ctl $3 5 ;${5}") +out2+=(" 0 ,t2ctl $3 0 ;${5}") +fi + + +CUR_FG=$(pastel textcolor $1|pastel format hex) +out+=("^sep($SHADES_OF_CURRENT $1)") +out+=("$LIGHTEN_DARKEN,^checkout(curshades)") +out+=("$SATURATION,^checkout(saturate)") +out+=("󰑧 $ROTATE_HSL_HUE,^checkout(rotate_hsl)") +#out+=("$SHADES_OF_CURRENT ($1),^checkout(curshades)") +out+=("^sep($CHANGE_COLOR)") +#Current +out+=(" $ACCENT_COLORS,^checkout(accents)") +out2+=("^tag(accents)") +out2+=("^sep($ACCENT_COLORS)") +for i in ${accents[@]};do out2+=("$i ${ccol_ind},$2 $3 '${i}' ${6};${5}");done +out+=("^sep()") + +mapfile -t gtkcolors < <( gtkcolors.py 2>/dev/null| grep -v None|awk '{print "#"$2}'|sort|uniq) +if [ "${#gtkcolors[@]}" -gt 0 ];then +out+=("$GTKCOLORS,^checkout(gtkcols)") +out2+=("^tag(gtkcols)") +out2+=("^sep($GTKCOLORS)") +out2+=("^sep($gtkthemename)") +for i in ${gtkcolors[@]};do out2+=("$i ${ccol_ind},$2 $3 '${i}' ${6};${5}");done +out+=("^sep()") +fi + + +out+=("$GRAYS,^checkout(grayscol)") +out2+=("^tag(grayscol)") +out2+=("^sep($GRAYS)") +for i in "${grays[@]}" +do +out2+=("$i ${ccol_ind},$2 $3 '${i}' ${6};${5}") +done + + +out+=("^sep($WALLPAPER_COLORS)") +for i in "${wallcolors[@]}" +do +out+=("$i ${ccol_ind},$2 $3 '${i}' ${6};${5}") +done + + + + +# Shades +out2+=("^tag(curshades)") +out2+=("^sep($SHADES_OF $1)") +for i in 3 25 2 15 1 05; do +clr=$(pastel lighten 0.$i "${1}" | pastel format hex) +if [ "${clr}" != "#ffffff" ];then +out2+=("$clr ${ccol_ind},$2 $3 '${clr}' ${6};${5}") +fi +done + +out2+=("^sep()") +out2+=(" $CURRENT $1 ,$2 $3 '${1}' ${6};${5}") +out2+=("^sep()") +for i in 05 1 15 2 25 3; do +clr=$(pastel darken 0.$i "${1}" | pastel format hex) +if [ "${clr}" != "#000000" ];then +out2+=("$clr ${ccol_ind},$2 $3 '${clr}' ${6};${5}") +fi +done +# Shades ENG + + + +# SATURATION +out2+=("^tag(saturate)") +out2+=("^sep($SATURATION)") +for i in 9 8 7 6 5 4 3 2 1; do +clr=$(pastel desaturate 0.$i "${1}" | pastel format hex) +if [ "${clr}" != "${oldclr}" ];then +out2+=("$clr ${ccol_ind},$2 $3 '${clr}' ${6};${5}") +oldclr=${clr} +fi +done +out2+=("^sep()") +out2+=(" $CURRENT $1 ,$2 $3 '${1}' ${6};${5}") +out2+=("^sep()") +for i in 1 2 3 4 5 6 7 8 9; do +clr=$(pastel saturate 0.$i "${1}" | pastel format hex) +if [ "${clr}" != "${oldclr}" ];then +out2+=("$clr ${ccol_ind},$2 $3 '${clr}' ${6};${5}") +oldclr=${clr} +fi +done +# SATURATION END + +# ROTATE HSL +out2+=("^tag(rotate_hsl)") +out2+=("^sep($ROTATE_HSL_HUE)") +for i in {135..15..15};do +clr=$(pastel rotate -- -$i "${1}" |pastel format hex) +out2+=("$clr ${ccol_ind} -$i°,$2 $3 '${clr}' ${6};${5}") +done +out2+=("^sep()") +out2+=(" $CURRENT $1 ,$2 $3 '${1}' ${6};${5}") +out2+=("^sep()") +for i in {15..135..15};do +clr=$(pastel rotate $i "${1}" |pastel format hex) +out2+=("$clr ${ccol_ind} $i°,$2 $3 '${clr}' ${6};${5}") +done +# ROTATE HSL END + +printf '%s\n' "${out[@]}" +printf '%s\n' "${out2[@]}" +} +pickcolor () { + #notify-send.sh -t 50000 "From pickcolor" "1: $1\n2: $2\n3: $3\n4: $4\n5: $5\n6: $6" + color=$(gcolor3 2>/dev/null) + if [ "$color" ]; then + mycmd=("$1 $2 '${color}' ${4};${3}") + fi + eval "${mycmd[@]}" + } +pixelcolor() { + picker=${picker:-gpick} + if [ "$picker" == "gpick" ]; then + command="gpick -pso 2>/dev/null" + else + command="xcolor --preview-size ${size} --scale ${scale}" + fi + color="$(${command})" + if [ -n "${color}" ]; then + mycmd=("$1 $2 '${color}' ${4};${3}") + fi + eval "${mycmd[@]}" +} + +case "$1" in + pick) pickcolor "$2" "${3}" "${4} ${5}" "${6}";; + pixelcolor) pixelcolor "$2" "${3}" "${4} ${5}" "${6}";; + *) main "$@" ;; +esac diff --git a/bin/mbgrad b/bin/mbgrad new file mode 100755 index 0000000..29fbf0a --- /dev/null +++ b/bin/mbgrad @@ -0,0 +1,122 @@ +#!/bin/bash + +GRADIENT_FILE="$HOME"/.config/colorizer/gradients_all.inc +if [ ! -f $GRADIENT_FILE ]; then +cp -a /usr/share/mabox-colorizer/gradients_all.inc $GRADIENT_FILE +fi + +case "$1" in + ob) + CACHEFILE="$HOME"/.config/colorizer/grad_ob.csv + COMMAND="obtctl activegradient" + me="colorizer-ob -s" + ;; + menu) + CACHEFILE="$HOME"/.config/colorizer/grad_menu.csv + COMMAND="jgctl gradient" + me="colorizer-menus -s" + ;; + cava) + CACHEFILE="$HOME"/.config/colorizer/grad_cava.csv + COMMAND="cavactl gradient" + me="colorizer-cava -s" + ;; + *) + CACHEFILE="$HOME"/.config/colorizer/grad_root.csv + COMMAND="w2theme gradient" + me="colorizer -s" + ;; + +esac + + +if [ -f "$CACHEFILE" ]; then +cat "$CACHEFILE" +else + +case $LANG in + pl*) + GRADIENTS="Gradienty" + MORE_GRADIENTS="Więcej..." + ;; + *) + GRADIENTS="Gradients" + MORE_GRADIENTS="More gradients" + ;; +esac + +out2+=("^sep($GRADIENTS)") +n=0 +while read -r FROM TO NAME; +do + ((n++)) + for i in $(pastel gradient -n 24 ${FROM} ${TO}|pastel format hex) + do + tablica+=" " + done + case "$n" in + 31) out2+=("^sep($MORE_GRADIENTS)") + out2+=("$GRADIENTS 30...60,^checkout(grad31)") + out3+=("^tag(grad31)") + out3+=("^sep($GRADIENTS 30...60)");; + 61) out2+=("$GRADIENTS 61...90,^checkout(grad61)") + out3+=("^tag(grad61)") + out3+=("^sep($GRADIENTS 61...90)");; + 91) out2+=("$GRADIENTS 91...120,^checkout(grad91)") + out3+=("^tag(grad91)") + out3+=("^sep($GRADIENTS 91...120)");; + 121) out2+=("$GRADIENTS 121...150,^checkout(grad121)") + out3+=("^tag(grad121)") + out3+=("^sep($GRADIENTS 121...150)");; + 151) out2+=("$GRADIENTS 151...180,^checkout(grad151)") + out3+=("^tag(grad151)") + out3+=("^sep($GRADIENTS 151...180)");; + 181) out2+=("$GRADIENTS 181...210,^checkout(grad181)") + out3+=("^tag(grad181)") + out3+=("^sep($GRADIENTS 181...210)");; + 211) out2+=("$GRADIENTS 211...240,^checkout(grad211)") + out3+=("^tag(grad211)") + out3+=("^sep($GRADIENTS 211...240)");; + 241) out2+=("$GRADIENTS 241...270,^checkout(grad241)") + out3+=("^tag(grad241)") + out3+=("^sep($GRADIENTS 241...270)");; + 271) out2+=("$GRADIENTS 271...300,^checkout(grad271)") + out3+=("^tag(grad271)") + out3+=("^sep($GRADIENTS 271...300)");; + 301) out2+=("$GRADIENTS 301...330,^checkout(grad301)") + out3+=("^tag(grad301)") + out3+=("^sep($GRADIENTS 301...330)");; + 331) out2+=("$GRADIENTS 331...,^checkout(grad331)") + out3+=("^tag(grad331)") + out3+=("^sep($GRADIENTS 331...)");; + *) : ;; + esac + case 1 in + $(($n<=30))) out2+=("$(echo ${tablica}) ${NAME},${COMMAND} '${FROM}' '${TO}';${me}");; + $((30<$n && $n<=60))) out3+=("$(echo ${tablica}) ${NAME},${COMMAND} '${FROM}' '${TO}';$me");; + $((60<$n && $n<=90))) out3+=("$(echo ${tablica}) ${NAME},${COMMAND} '${FROM}' '${TO}';$me");; + $((90<$n && $n<=120))) out3+=("$(echo ${tablica}) ${NAME},${COMMAND} '${FROM}' '${TO}';$me");; + $((120<$n && $n<=150))) out3+=("$(echo ${tablica}) ${NAME},${COMMAND} '${FROM}' '${TO}';$me");; + $((150<$n && $n<=180))) out3+=("$(echo ${tablica}) ${NAME},${COMMAND} '${FROM}' '${TO}';$me");; + $((180<$n && $n<=210))) out3+=("$(echo ${tablica}) ${NAME},${COMMAND} '${FROM}' '${TO}';$me");; + $((210<$n && $n<=240))) out3+=("$(echo ${tablica}) ${NAME},${COMMAND} '${FROM}' '${TO}';$me");; + $((240<$n && $n<=270))) out3+=("$(echo ${tablica}) ${NAME},${COMMAND} '${FROM}' '${TO}';$me");; + $((270<$n && $n<=300))) out3+=("$(echo ${tablica}) ${NAME},${COMMAND} '${FROM}' '${TO}';$me");; + $((300<$n && $n<=330))) out3+=("$(echo ${tablica}) ${NAME},${COMMAND} '${FROM}' '${TO}';$me");; + $((330<$n))) out3+=("$(echo ${tablica}) ${NAME},${COMMAND} '${FROM}' '${TO}';$me");; + *) + : + ;; + esac + tablica=() +done < "${GRADIENT_FILE}" + +printf '%s\n' "${out[@]}" +printf '%s\n' "${out2[@]}" +printf '%s\n' "${out3[@]}" + +printf '%s\n' "${out[@]}" > $CACHEFILE +printf '%s\n' "${out2[@]}" >> $CACHEFILE +printf '%s\n' "${out3[@]}" >> $CACHEFILE + +fi diff --git a/bin/obtctl b/bin/obtctl new file mode 100755 index 0000000..3f0543f --- /dev/null +++ b/bin/obtctl @@ -0,0 +1,943 @@ +#!/bin/bash + +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" +THEMEDIR="$HOME/.themes/$OBTHEME/openbox-3" +THEMERC="$HOME/.themes/$OBTHEME/openbox-3/themerc" + +#if [[ $OBTHEME = MBcolor* ]];then +#switch to MBcolors theme +# THEMEDIR="$HOME/.themes/$OBTHEME/openbox-3" +# 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/ +if [ ! -d "$MBCOLORSDIR" ]; then +mkdir -p ${MBCOLORSDIR} +rsync -a /usr/share/mabox-colorizer/themes/MBcolors/openbox-3/* ${MBCOLORSDIR}/ +fi + + if [ ! -f "${THEMERC}.bak" ]; then + cp ${THEMERC} ${THEMERC}.bak + fi + +theme () { + xmlstarlet ed -L -N o="http://openbox.org/3.4/rc" -u '/o:openbox_config/o:theme/o:name' -v "$1" "$HOME/.config/openbox/rc.xml" +} +reset () { + rm ${THEMERC} + mv ${THEMERC}.bak ${THEMERC} +} +resetonlycolors () { + theme MBcolors + clractivebg "#579c8e" + clractivebgto "#41756a" + + +} +resetMBcolors() { + theme MBcolors + rsync -a /usr/share/mabox-colorizer/themes/MBcolors/openbox-3/* ${MBCOLORSDIR}/ + #set font + nspace="http://openbox.org/3.4/rc" + cfg="$HOME/.config/openbox/rc.xml" + + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:name' -v "Ubuntu" "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:size' -v "9" "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:weight' -v "Bold" "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:slant' -v "Normal" "$cfg" + + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:name' -v "Ubuntu" "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:size' -v "9" "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:weight' -v "Bold" "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:slant' -v "Normal" "$cfg" + rm ${THEMERC}.bak +} + +borderWidth () { + case "$1" in + increase) + read BWIDTH <<< "$(grep border.width: ${THEMERC} | cut -d':' -f2)" + BWIDTH=$((BWIDTH+1)) + sd "^border.width:.*$" "border.width: ${BWIDTH}" ${THEMERC} + ;; + decrease) + read BWIDTH <<< "$(grep border.width: ${THEMERC} | cut -d':' -f2)" + if [ "$BWIDTH" -gt "0" ];then + BWIDTH=$((BWIDTH-1)) + sd "^border.width:.*$" "border.width: ${BWIDTH}" ${THEMERC} + fi + ;; + *) + sd "^border.width:.*$" "border.width: $1" ${THEMERC} + ;; + esac +} +activeborderColor () { + sd "\.active.border.color:.*$" ".active.border.color: $1" ${THEMERC} + read BORD <<< "$(grep border.width ${THEMERC} | cut -d':' -f2)" + [[ "$BORD" == 0 ]] && borderWidth 1 +} +inactiveborderColor () { + sd "\.inactive.border.color:.*$" ".inactive.border.color: $1" ${THEMERC} + read BORD <<< "$(grep border.width ${THEMERC} | cut -d':' -f2)" + [[ "$BORD" == 0 ]] && borderWidth 1 +} +paddingHeight () { + case "$1" in + increase) + read PHEIGHT <<< "$(grep ^padding.height: ${THEMERC} | cut -d':' -f2)" + PHEIGHT=$((PHEIGHT+1)) + sd "^padding.height:.*$" "padding.height: ${PHEIGHT}" ${THEMERC} + sd "^padding.width:.*$" "padding.width: ${PHEIGHT}" ${THEMERC} + ;; + decrease) + read PHEIGHT <<< "$(grep ^padding.height: ${THEMERC} | cut -d':' -f2)" + if [ "$PHEIGHT" -gt "0" ];then + PHEIGHT=$((PHEIGHT-1)) + sd "^padding.height:.*$" "padding.height: ${PHEIGHT}" ${THEMERC} + sd "^padding.width:.*$" "padding.width: ${PHEIGHT}" ${THEMERC} + fi + ;; + 0|1|2|3|4|5|6|8|10|12|16|20) + sd "^padding.height:.*$" "padding.height: $1" ${THEMERC} + sd "^padding.width:.*$" "padding.width: $1" ${THEMERC} + ;; + esac + +} +paddingWidth () { + sd "^padding.width:.*$" "padding.width: $1" ${THEMERC} +} +textjustify () { + sd "\.text.justify:.*$" ".text.justify: $1" ${THEMERC} +} +shadow () { + case "$1" in + 0|no) + sd "\.active.label.text.font:.*$" ".active.label.text.font: shadow=n:shadowtint=70:shadowoffset=1" ${THEMERC} + sd "\.inactive.label.text.font:.*$" ".inactive.label.text.font: shadow=n:shadowtint=20:shadowoffset=1" ${THEMERC} + ;; + 1|dark) + sd "\.active.label.text.font:.*$" ".active.label.text.font: shadow=y:shadowtint=70:shadowoffset=1" ${THEMERC} + #sd "\.inactive.label.text.font:.*$" ".inactive.label.text.font: shadow=y:shadowtint=20:shadowoffset=1" ${THEMERC} + ;; + 2|light) + sd "\.active.label.text.font:.*$" ".active.label.text.font: shadow=y:shadowtint=-40:shadowoffset=1" ${THEMERC} + #sd "\.inactive.label.text.font:.*$" ".inactive.label.text.font: shadow=y:shadowtint=-20:shadowoffset=1" ${THEMERC} + ;; + esac + +} +handlewidth () { + sd "\.handle.width:.*$" ".handle.width: $1" ${THEMERC} +} +raised () { + #flat 0 or raised 1 or sunken 2 + read WINRAISED REST <<< "$(grep .title.bg: ${THEMERC} | cut -d':' -f2)" + case "$1" in + 0|flat) + sd "\.title.bg:.*$" ".title.bg: flat ${REST}" ${THEMERC} + sd "\.handle.bg:.*$" ".handle.bg: flat ${REST}" ${THEMERC} + sd "\.grip.bg:.*$" ".grip.bg: flat ${REST}" ${THEMERC} + ;; + 1|raised) + sd "\.title.bg:.*$" ".title.bg: raised ${REST}" ${THEMERC} + sd "\.handle.bg:.*$" ".handle.bg: raised ${REST}" ${THEMERC} + sd "\.grip.bg:.*$" ".grip.bg: raised ${REST}" ${THEMERC} + ;; + 2|sunken) + sd "\.title.bg:.*$" ".title.bg: sunken ${REST}" ${THEMERC} + sd "\.handle.bg:.*$" ".handle.bg: sunken ${REST}" ${THEMERC} + sd "\.grip.bg:.*$" ".grip.bg: sunken ${REST}" ${THEMERC} + ;; + esac +} +gradient_type () { + #solid or gradient gradient-type + read WINRAISED REST <<< "$(grep .title.bg: ${THEMERC} | cut -d':' -f2)" + case "$1" in + solid) + sd "\.title.bg:.*$" ".title.bg: ${WINRAISED} solid" ${THEMERC} + sd "\.handle.bg:.*$" ".handle.bg: ${WINRAISED} solid" ${THEMERC} + sd "\.grip.bg:.*$" ".grip.bg: ${WINRAISED} solid" ${THEMERC} + ;; + *) + sd "\.title.bg:.*$" ".title.bg: ${WINRAISED} gradient ${1}" ${THEMERC} + sd "\.handle.bg:.*$" ".handle.bg: ${WINRAISED} gradient ${1}" ${THEMERC} + sd "\.grip.bg:.*$" ".grip.bg: ${WINRAISED} gradient ${1}" ${THEMERC} + ;; + esac +} +random_gradient () { + GRADIENT_FILE="$HOME"/.config/colorizer/gradients_all.inc + if [ ! -f $GRADIENT_FILE ]; then + cp -a /usr/share/mabox-colorizer/gradients_all.inc $GRADIENT_FILE + fi + read CLR CLRTO REST <<< "$(shuf -n 1 $GRADIENT_FILE)" + activegradient "$CLR" "$CLRTO" +} +activegradient () { + # ACTIVE + + # ACTIVE GRIP and HANDLE + colorTo=$(pastel darken 0.1 "${1}"|pastel format hex) + #activehandle? + ###read ABG <<< "$(grep .active.title.bg.color: ${THEMERC} | cut -d':' -f2)" + ###read AHBG <<< "$(grep .active.handle.bg.color: ${THEMERC} | cut -d':' -f2)" + ###if [ "$ABG" == "$AHBG" ];then + + ###fi + sd "\.active.grip.bg.color:.*$" ".active.grip.bg.color: ${1}" ${THEMERC} + sd "\.active.grip.bg.colorTo:.*$" ".active.grip.bg.colorTo: ${colorTo}" ${THEMERC} + sd "^window.active.title.bg.color:.*$" "window.active.title.bg.color: ${1}" ${THEMERC} + sd "\.active.border.color:.*$" ".active.border.color: ${1}" ${THEMERC} + + sd "^window.active.title.bg.colorTo:.*$" "window.active.title.bg.colorTo: ${colorTo}" ${THEMERC} + + + #sd "\.active.handle.bg.color:.*$" ".active.handle.bg.color: ${1}" ${THEMERC} + sd "^window.active.title.bg.color:.*$" "window.active.title.bg.color: ${1}" ${THEMERC} + sd "^window.active.title.bg.colorTo:.*$" "window.active.title.bg.colorTo: ${2}" ${THEMERC} + + ## split.To - only used if gradient = splitvertical + splitTo=$(pastel lighten 0.275 "${1}"|pastel format hex) + ## 1 color (top one) + sd "window.active.title.bg.color.splitTo:.*$" "window.active.title.bg.color.splitTo: ${splitTo}" ${THEMERC} + + splitTo2=$(pastel lighten 0.12 "${2}"|pastel format hex) + #splitTo2=$(pastel lighten 0.09 "${1}"|pastel format hex) + ## 4 color (bottom one) + sd "window.active.title.bg.colorTo.splitTo:.*$" "window.active.title.bg.colorTo.splitTo: ${splitTo2}" ${THEMERC} + + + # Border color = active.title.bg.color (gradient start color) + sd "\.active.border.color:.*$" ".active.border.color: $1" ${THEMERC} + + #### INACTIVE + icolor=$(pastel mix -s RGB -f 0.3 ${1} '#000000' |pastel format hex) + icolorTo=$(pastel mix -s RGB -f 0.3 ${2} '#000000' |pastel format hex) + + + sd "^window.inactive.title.bg.color:.*$" "window.inactive.title.bg.color: ${icolor}" ${THEMERC} + sd "^window.inactive.title.bg.colorTo:.*$" "window.inactive.title.bg.colorTo: ${icolorTo}" ${THEMERC} + # Border color = active.title.bg.color (gradient start color) + sd "\.inactive.border.color:.*$" ".inactive.border.color: ${icolor}" ${THEMERC} + + ## INACTIVE GRIP and HANDLE + #normalhandle? + ###read IBG <<< "$(grep .inactive.title.bg.color: ${THEMERC} | cut -d':' -f2)" + ###read IHBG <<< "$(grep .inactive.handle.bg.color: ${THEMERC} | cut -d':' -f2)" + ###if [ "$IBG" == "$IHBG" ];then + sd "\.inactive.handle.bg.color:.*$" ".inactive.handle.bg.color: ${icolor}" ${THEMERC} + sd "\.inactive.handle.bg.colorTo:.*$" ".inactive.handle.bg.colorTo: ${icolorTo}" ${THEMERC} + ###fi + sd "\.inactive.grip.bg.color:.*$" ".inactive.grip.bg.color: ${icolor}" ${THEMERC} + sd "\.inactive.grip.bg.colorTo:.*$" ".inactive.grip.bg.colorTo: ${icolorTo}" ${THEMERC} + sd "^window.inactive.title.bg.color:.*$" "window.inactive.title.bg.color: ${icolor}" ${THEMERC} + sd "\.inactive.border.color:.*$" ".inactive.border.color: ${icolor}" ${THEMERC} + sd "^window.inactive.title.bg.colorTo:.*$" "window.inactive.title.bg.colorTo: ${icolorTo}" ${THEMERC} + + ## Active handle always have inactive colors + sd "\.active.handle.bg.color:.*$" ".active.handle.bg.color: ${icolor}" ${THEMERC} + sd "\.active.handle.bg.colorTo:.*$" ".active.handle.bg.colorTo: ${icolorTo}" ${THEMERC} + + + # calculate color for title.fg and buttons + TITLE_FG=$(pastel textcolor ${2}|pastel format hex) + if [[ "${TITLE_FG}" == *"ffffff"* ]];then + TITLE_FG="#E5E5E5" + else + TITLE_FG="#222222" + fi + sd "\.active.label.text.color:.*$" ".active.label.text.color: ${TITLE_FG}" ${THEMERC} + + # Button colors + activebuttonscolors "${TITLE_FG}" + # Shadow + read SHADOW <<< "$(grep .active.label.text.font: ${THEMERC} | cut -d':' -f2| cut -d'=' -f2)" + if [ "$SHADOW" == "y" ];then + if [ "$TITLE_FG" == "#E5E5E5" ];then + shadow dark + else + shadow light + fi + fi +} +gradient () { + sd "^window.active.title.bg.color:.*$" "window.active.title.bg.color: ${1}" ${THEMERC} + sd "^window.active.title.bg.colorTo:.*$" "window.active.title.bg.colorTo: ${2}" ${THEMERC} + + ## split.To - only used if gradient = splitvertical + splitTo=$(pastel lighten 0.275 "${1}"|pastel format hex) + ## 1 color (top one) + sd "window.active.title.bg.color.splitTo:.*$" "window.active.title.bg.color.splitTo: ${splitTo}" ${THEMERC} + + splitTo2=$(pastel lighten 0.12 "${2}"|pastel format hex) + #splitTo2=$(pastel lighten 0.09 "${1}"|pastel format hex) + ## 4 color (bottom one) + sd "window.active.title.bg.colorTo.splitTo:.*$" "window.active.title.bg.colorTo.splitTo: ${splitTo2}" ${THEMERC} + + # Border color = active.title.bg.color (gradient start color) + sd "\.active.border.color:.*$" ".active.border.color: $1" ${THEMERC} + + #### INACTIVE + icolor=$(pastel darken 0.5 ${1}|pastel format hex) + icolorTo=$(pastel darken 0.5 ${2}|pastel format hex) + + sd "^window.inactive.title.bg.color:.*$" "window.inactive.title.bg.color: ${icolor}" ${THEMERC} + sd "^window.inactive.title.bg.colorTo:.*$" "window.inactive.title.bg.colorTo: ${icolorTo}" ${THEMERC} + # Border color = active.title.bg.color (gradient start color) + sd "\.inactive.border.color:.*$" ".inactive.border.color: ${icolor}" ${THEMERC} + + + + # calculate color for title.fg and buttons + TITLE_FG=$(pastel textcolor ${2}|pastel format hex) + if [[ "${TITLE_FG}" == *"ffffff"* ]];then + TITLE_FG="#E5E5E5" + else + TITLE_FG="#222222" + fi + sd "\.active.label.text.color:.*$" ".active.label.text.color: ${TITLE_FG}" ${THEMERC} + + # Button colors + activebuttonscolors "${TITLE_FG}" + # Shadow + read SHADOW <<< "$(grep .active.label.text.font: ${THEMERC} | cut -d':' -f2| cut -d'=' -f2)" + if [ "$SHADOW" == "y" ];then + if [ "$TITLE_FG" == "#E5E5E5" ];then + shadow dark + else + shadow light + fi + fi + +} +gradient_reverse () { +: +} +activehandle () { + case "$1" in + no) #no + read NBG <<< "$(grep inactive.title.bg.color: ${THEMERC} | cut -d':' -f2)" + read NBGTO <<< "$(grep inactive.title.bg.colorTo: ${THEMERC} | cut -d':' -f2)" + #notify-send.sh "Normal" "${NBG} ${NBGTO}" + sd "\.active.handle.bg.color:.*$" ".active.handle.bg.color: ${NBG}" ${THEMERC} + sd "\.active.handle.bg.colorTo:.*$" ".active.handle.bg.colorTo: ${NBGTO}" ${THEMERC} + sd "\.active.grip.bg:.*$" ".active.grip.bg: parentrelative" ${THEMERC} + sd "\.active.grip.bg.color:.*$" ".active.grip.bg.color: ${NBG}" ${THEMERC} + sd "\.active.grip.bg.colorTo:.*$" ".active.grip.bg.colorTo: ${NBGTO}" ${THEMERC} + ;; + yes) #yes + read ABG <<< "$(grep window.active.title.bg.color: ${THEMERC} | cut -d':' -f2)" + read ABGTO <<< "$(grep window.active.title.bg.colorTo: ${THEMERC} | cut -d':' -f2)" + #notify-send.sh "Active" "${ABG} ${ABGTO}" + sd "\.active.handle.bg.color:.*$" ".active.handle.bg.color: ${ABG}" ${THEMERC} + sd "\.active.handle.bg.colorTo:.*$" ".active.handle.bg.colorTo: ${ABGTO}" ${THEMERC} + sd "\.active.grip.bg:.*$" ".active.grip.bg: parentrelative" ${THEMERC} + sd "\.active.grip.bg.color:.*$" ".active.grip.bg.color: ${ABG}" ${THEMERC} + sd "\.active.grip.bg.colorTo:.*$" ".active.grip.bg.colorTo: ${ABGTO}" ${THEMERC} + ;; + grip) + read GRAD <<< "$(grep .title.bg: ${THEMERC} | cut -d':' -f2)" + read ABG <<< "$(grep window.active.title.bg.color: ${THEMERC} | cut -d':' -f2)" + read ABGTO <<< "$(grep window.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)" + sd "\.active.grip.bg:.*$" ".active.grip.bg: ${GRAD}" ${THEMERC} + sd "\.active.grip.bg.color:.*$" ".active.grip.bg.color: ${ABG}" ${THEMERC} + sd "\.active.grip.bg.colorTo:.*$" ".active.grip.bg.colorTo: ${ABGTO}" ${THEMERC} + sd "\.active.handle.bg.color:.*$" ".active.handle.bg.color: ${NBG}" ${THEMERC} + sd "\.active.handle.bg.colorTo:.*$" ".active.handle.bg.colorTo: ${NBGTO}" ${THEMERC} + ;; + esac +} +clractivebg_only () { + sd "^window.active.title.bg.color:.*$" "window.active.title.bg.color: ${1}" ${THEMERC} + # calculate color for title.fg and buttons + TITLE_FG=$(pastel textcolor ${1}|pastel format hex) + if [[ "${TITLE_FG}" == *"ffffff"* ]];then + TITLE_FG="#E5E5E5" + else + TITLE_FG="#222222" + fi + sd "\.active.label.text.color:.*$" ".active.label.text.color: ${TITLE_FG}" ${THEMERC} + + # Button colors + activebuttonscolors "${TITLE_FG}" +} +clractivebg () { + colorTo=$(pastel darken 0.14 "${1}"|pastel format hex) + #activehandle? + read ABG <<< "$(grep .active.title.bg.color: ${THEMERC} | cut -d':' -f2)" + read AHBG <<< "$(grep .active.handle.bg.color: ${THEMERC} | cut -d':' -f2)" + if [ "$ABG" == "$AHBG" ];then + sd "\.active.handle.bg.color:.*$" ".active.handle.bg.color: ${1}" ${THEMERC} + sd "\.active.handle.bg.colorTo:.*$" ".active.handle.bg.colorTo: ${colorTo}" ${THEMERC} + fi + sd "\.active.grip.bg.color:.*$" ".active.grip.bg.color: ${1}" ${THEMERC} + sd "\.active.grip.bg.colorTo:.*$" ".active.grip.bg.colorTo: ${colorTo}" ${THEMERC} + sd "^window.active.title.bg.color:.*$" "window.active.title.bg.color: ${1}" ${THEMERC} + sd "\.active.border.color:.*$" ".active.border.color: ${1}" ${THEMERC} + + sd "^window.active.title.bg.colorTo:.*$" "window.active.title.bg.colorTo: ${colorTo}" ${THEMERC} + + ## split.To - only used if gradient = splitvertical + splitTo=$(pastel lighten 0.275 "${1}"|pastel format hex) + ## 1 color (top one) + sd "window.active.title.bg.color.splitTo:.*$" "window.active.title.bg.color.splitTo: ${splitTo}" ${THEMERC} + + splitTo2=$(pastel lighten 0.12 "${colorTo}"|pastel format hex) + #splitTo2=$(pastel lighten 0.09 "${1}"|pastel format hex) + ## 4 color (bottom one) + sd "window.active.title.bg.colorTo.splitTo:.*$" "window.active.title.bg.colorTo.splitTo: ${splitTo2}" ${THEMERC} + + #menu (Openbox menu - not really used in Mabox) + sd "menu.title.bg.color:.*$" "menu.title.bg.color: ${1}" ${THEMERC} + sd "menu.title.bg.colorTo:.*$" "menu.title.bg.colorTo: ${colorTo}" ${THEMERC} + + sd "menu.items.active.bg.color:.*$" "menu.items.active.bg.color: ${1}" ${THEMERC} + sd "menu.items.active.bg.colorTo:.*$" "menu.items.active.bg.colorTo: ${colorTo}" ${THEMERC} + + # calculate color for title.fg and buttons + TITLE_FG=$(pastel textcolor ${colorTo}|pastel format hex) + if [[ "${TITLE_FG}" == *"ffffff"* ]];then + TITLE_FG="#E5E5E5" + else + TITLE_FG="#222222" + fi + sd "\.active.label.text.color:.*$" ".active.label.text.color: ${TITLE_FG}" ${THEMERC} + + # Button colors + activebuttonscolors "${TITLE_FG}" + +} + +clrnormalbg_only () { + sd "^window.inactive.title.bg.color:.*$" "window.inactive.title.bg.color: ${1}" ${THEMERC} +} + +clrnormalbg () { + colorTo=$(pastel darken 0.1 "${1}"|pastel format hex) + + ###sd "\.inactive.handle.bg.color:.*$" ".inactive.handle.bg.color: ${1}" ${THEMERC} + ###sd "\.inactive.handle.bg.colorTo:.*$" ".inactive.handle.bg.colorTo: ${colorTo}" ${THEMERC} + sd "\.handle.bg.color:.*$" ".handle.bg.color: ${1}" ${THEMERC} + sd "\.handle.bg.colorTo:.*$" ".handle.bg.colorTo: ${colorTo}" ${THEMERC} + + sd "\.inactive.grip.bg.color:.*$" ".inactive.grip.bg.color: ${1}" ${THEMERC} + sd "\.inactive.grip.bg.colorTo:.*$" ".inactive.grip.bg.colorTo: ${colorTo}" ${THEMERC} + sd "^window.inactive.title.bg.color:.*$" "window.inactive.title.bg.color: ${1}" ${THEMERC} + sd "^window.inactive.title.bg.colorTo:.*$" "window.inactive.title.bg.colorTo: ${colorTo}" ${THEMERC} + + ## split.To - only used if gradient = splitvertical + splitTo=$(pastel lighten 0.275 "${1}"|pastel format hex) + ## 1 color (top one) + sd "window.inactive.title.bg.color.splitTo:.*$" "window.inactive.title.bg.color.splitTo: ${splitTo}" ${THEMERC} + + splitTo2=$(pastel lighten 0.12 "${colorTo}"|pastel format hex) + #splitTo2=$(pastel lighten 0.09 "${1}"|pastel format hex) + ## 4 color (bottom one) + sd "window.inactive.title.bg.colorTo.splitTo:.*$" "window.inactive.title.bg.colorTo.splitTo: ${splitTo2}" ${THEMERC} + + + + sd "\.inactive.border.color:.*$" ".inactive.border.color: ${1}" ${THEMERC} +} + +clractivebgto () { + sd "^window.active.title.bg.colorTo:.*$" "window.active.title.bg.colorTo: ${1}" ${THEMERC} + + splitTo2=$(pastel lighten 0.12 "${1}"|pastel format hex) + #splitTo2=$(pastel lighten 0.09 "${1}"|pastel format hex) + ## 4 color (bottom one) + sd "window.active.title.bg.colorTo.splitTo:.*$" "window.active.title.bg.colorTo.splitTo: ${splitTo2}" ${THEMERC} + + #activehandle? + ###read ABG <<< "$(grep .active.title.bg.color: ${THEMERC} | cut -d':' -f2)" + ###read AHBG <<< "$(grep .active.handle.bg.color: ${THEMERC} | cut -d':' -f2)" + ###if [ "$ABG" == "$AHBG" ];then + sd "\.active.handle.bg.colorTo:.*$" ".active.handle.bg.colorTo: ${1}" ${THEMERC} + ###fi + sd "\.active.grip.bg.colorTo:.*$" ".active.grip.bg.colorTo: ${1}" ${THEMERC} +} + +clrnormalbgto () { + sd "^window.inactive.title.bg.colorTo:.*$" "window.inactive.title.bg.colorTo: ${1}" ${THEMERC} + splitTo2=$(pastel lighten 0.12 "${1}"|pastel format hex) + #splitTo2=$(pastel lighten 0.09 "${1}"|pastel format hex) + ## 4 color (bottom one) + sd "window.active.title.bg.colorTo.splitTo:.*$" "window.active.title.bg.colorTo.splitTo: ${splitTo2}" ${THEMERC} + + sd "\.inactive.handle.bg.colorTo:.*$" ".inactive.handle.bg.colorTo: ${1}" ${THEMERC} + sd "\.inactive.grip.bg.colorTo:.*$" ".inactive.grip.bg.colorTo: ${1}" ${THEMERC} +} +activetextcolor () { + sd "\.active.label.text.color:.*$" ".active.label.text.color: ${1}" ${THEMERC} + activebuttonscolors ${1} +} +inactivetextcolor () { + sd "\.inactive.label.text.color:.*$" ".inactive.label.text.color: ${1}" ${THEMERC} +} +buttons () { + rm $THEMEDIR/*.xbm + cp -a /usr/share/mabox-colorizer/themes/obbuttons/${1}/*.xbm $THEMEDIR/ + #save buttons name to file + echo "${1}" > $THEMEDIR/.buttons + #if buttons big check font size also + case "$1" in + big-12) + nspace="http://openbox.org/3.4/rc" + cfg="$HOME/.config/openbox/rc.xml" + SIZE=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:size' "$cfg") + if [ "$SIZE" -lt "12" ]; then + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:size' -v "12" "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:size' -v "12" "$cfg" + fi + ;; + big-14) + nspace="http://openbox.org/3.4/rc" + cfg="$HOME/.config/openbox/rc.xml" + SIZE=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:size' "$cfg") + if [ "$SIZE" -lt "14" ]; then + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:size' -v "14" "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:size' -v "14" "$cfg" + fi + ;; + *) : ;; + esac +} +ndslimc() { + xmlstarlet ed -L -N o="http://openbox.org/3.4/rc" -u '/o:openbox_config/o:theme/o:titleLayout' -v "$1" "$HOME/.config/openbox/rc.xml" +} +activebuttonscolors () { + sd "^window.active.button.*.unpressed.image.color:.*$" "window.active.button.*.unpressed.image.color: ${1}" ${THEMERC} + # Calculate colors for other button states (mix of ${1} and clractivebg + #read ABG <<< "$(grep .active.title.bg.color: ${THEMERC} | cut -d':' -f2)" + #hover=$(pastel mix -f 0.2 "${1}" "${ABG}"|pastel format hex) + #pressed=$() + #disabled=$() + if [[ "${1}" == *"E5E5E5"* ]];then + hover="#FFFFFF" + else + hover="#000000" + fi + #notify-send.sh "${1}" "${hover}" + sd "^window.active.button.*.hover.image.color:.*$" "window.active.button.*.hover.image.color: ${hover}" ${THEMERC} +} +fontfamily () { + nspace="http://openbox.org/3.4/rc" + cfg="$HOME/.config/openbox/rc.xml" + + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:name' -v "${1}" "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:name' -v "${1}" "$cfg" +} +fontsize () { + nspace="http://openbox.org/3.4/rc" + cfg="$HOME/.config/openbox/rc.xml" + case "$1" in + inc|increase) + SIZE=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:size' "$cfg") + if [ "$SIZE" -lt "21" ];then + ((SIZE=SIZE+1)) + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:size' -v "$SIZE" "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:size' -v "$SIZE" "$cfg" + fi + ;; + dec|decrease) + SIZE=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:size' "$cfg") + if [ "$SIZE" -gt "7" ];then + ((SIZE=SIZE-1)) + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:size' -v "$SIZE" "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:size' -v "$SIZE" "$cfg" + fi + ;; + *) + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:size' -v "$1" "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:size' -v "$1" "$cfg" + ;; + esac +} +fontweight () { + nspace="http://openbox.org/3.4/rc" + cfg="$HOME/.config/openbox/rc.xml" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:weight' -v "${1}" "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:weight' -v "${1}" "$cfg" + +} +fontweight_inactive () { + nspace="http://openbox.org/3.4/rc" + cfg="$HOME/.config/openbox/rc.xml" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:weight' -v "${1}" "$cfg" +} +fontweighttoggle (){ + nspace="http://openbox.org/3.4/rc" + cfg="$HOME/.config/openbox/rc.xml" + WEIGHT=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:weight' "$cfg") + if [ "$WEIGHT" = "Normal" ];then + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:weight' -v "Bold" "$cfg" + else + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:weight' -v "Normal" "$cfg" + fi +} +fontslant (){ + nspace="http://openbox.org/3.4/rc" + cfg="$HOME/.config/openbox/rc.xml" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:slant' -v "${1}" "$cfg" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:slant' -v "${1}" "$cfg" +} +fontslant_inactive (){ + nspace="http://openbox.org/3.4/rc" + cfg="$HOME/.config/openbox/rc.xml" + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="InactiveWindow"]/a:slant' -v "${1}" "$cfg" +} + +fontslanttoggle (){ + nspace="http://openbox.org/3.4/rc" + cfg="$HOME/.config/openbox/rc.xml" + SLANT=$(xmlstarlet sel -N a="$nspace" -t -v '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:slant' "$cfg") + if [ "$SLANT" = "Normal" ];then + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:slant' -v "Italic" "$cfg" + else + xmlstarlet ed -L -N a="$nspace" -u '/a:openbox_config/a:theme/a:font[@place="ActiveWindow"]/a:slant' -v "Normal" "$cfg" + fi +} +randomizer () { + + # TODO: - maybe put all options to cnf file and let users customize options??? + + ### ensure we use MBColors at the moment + theme MBcolors + ### SHADOW (here, because we must know if is set later when title font color is calculated) + ### Maybe better is not to change shadow? for now + #SHADOWS=(no dark light) + #rand=$((RANDOM%3)) + #SHADOW="${SHADOWS[$rand]}" + + #shadow "${SHADOW}" + shadow no + + ### RANDOM GRADIENT COLORS + GRADIENT_FILE="$HOME"/.config/colorizer/gradients_all.inc + if [ ! -f $GRADIENT_FILE ]; then + cp -a /usr/share/mabox-colorizer/gradients_all.inc $GRADIENT_FILE + fi + read CLR CLRTO GRAD_NAME <<< "$(shuf -n 1 $GRADIENT_FILE)" + #obtctl random_gradient + activegradient "$CLR" "$CLRTO" + + ### rand gradient type + TYPES=(solid vertical horizontal mirrorhorizontal diagonal mirrorhorizontal) + rand=$((RANDOM%6)) + G_TYPE="${TYPES[$rand]}" + gradient_type "${G_TYPE}" + #rand + + ### Random border + BORDERS=(0 0 1 2 4 6) + rand=$((RANDOM%5)) + BORDER="${BORDERS[$rand]}" + + borderWidth "${BORDER}" + + HANDLES=(0 0 2 4) + rand=$((RANDOM%4)) + HANDLE="${HANDLES[$rand]}" + + handlewidth "${HANDLE}" + + ### Random padding + PADDINGS=(2 4 8 12) + rand=$((RANDOM%4)) + PADDING="${PADDINGS[$rand]}" + + paddingHeight "${PADDING}" + + ### TITLEBAR STYLE + STYLES=(flat raised raised sunken) + rand=$((RANDOM%4)) + STYLE="${STYLES[$rand]}" + + raised "${STYLE}" + + + ### TEXT ALIGN + ALIGNS=(left center right) + rand=$((RANDOM%3)) + ALIGN="${ALIGNS[$rand]}" + + textjustify "${ALIGN}" + + ### FONT FAMILY + FAMILIES=(Ubuntu "Noto Sans" "Roboto Condensed" "GE Inspira" "JetBrains Mono") + rand=$((RANDOM%5)) + FAMILY="${FAMILIES[$rand]}" + + fontfamily "${FAMILY}" + + ### FONT WEIGHT + WEIGHTS=(Bold Normal) + rand=$((RANDOM%2)) + WEIGHT="${WEIGHTS[$rand]}" + + fontweight "${WEIGHT}" + + ### FONT SLANT + SLANTS=(Italic Normal) + rand=$((RANDOM%2)) + SLANT="${SLANTS[$rand]}" + + fontslant "${SLANT}" + + + + ### FONT SIZE + FONTSIZES=(8 10 11 12 14 16) + rand=$((RANDOM%6)) + FONTSIZE="${FONTSIZES[$rand]}" + + fontsize "${FONTSIZE}" + + ### Buttons + BUTTONS=(tiny normal bold dots big-12 big-14) + rand=$((RANDOM%6)) + BUTTON="${BUTTONS[$rand]}" + + buttons "${BUTTON}" + + ### Buttons layout + LAYOUTS=(NDSLIMC NDSLIMC NLIMC LIMC) + rand=$((RANDOM%4)) + LAYOUT="${LAYOUTS[$rand]}" + + ndslimc "${LAYOUT}" + + +#MSG=" +#Openbox Window Decoration settings +#Gradient +#name: ${GRAD_NAME} +#colors: ${CLR} to ${CLRTO} +#type: $G_TYPE + +#Border: ${BORDER} +#Padding: ${PADDING} + +#Titlebar style: ${STYLE} +#Buttons: ${BUTTON} +#Title align: ${ALIGN} +#Font: ${FAMILY} ${WEIGHT} ${SLANT} ${FONTSIZE} +#" +# notify-send.sh -R /tmp/randomizer_notify -t 10000 -i mbcc "Mabox Colorizer" "${MSG}" \ +# -o "Regenerate:randomizer ob" -o "Customize:colorizer-ob -s" +} + +tweak() { + case "$1" in + large) + fontsize 14 + paddingHeight 8 + buttons big-14 + borderWidth 6 + handlewidth 6 + ;; + big) + fontsize 12 + paddingHeight 6 + buttons big-12 + borderWidth 4 + handlewidth 4 + ;; + normal) + fontsize 11 + paddingHeight 4 + buttons tiny + borderWidth 1 + handlewidth 3 + ;; + small) + fontsize 10 + paddingHeight 2 + buttons dots + borderWidth 0 + handlewidth 2 + ;; + tiny) + fontsize 9 + paddingHeight 1 + buttons normal + borderWidth 0 + handlewidth 0 + ;; + *):;; + esac +} +savetheme () { + case "$LANG" in + pl*)SAVE_AS="Nowy motyw Openbox" + DESC="Zapisz obecne ustawionia Openbox jako nowy motyw..." + LABEL="Nazwa:" + NAME="nazwa";; + *) SAVE_AS="New Openbox theme" + DESC="Save current Openbox window decoration setup as theme..." + LABEL="Name:" + NAME="theme-name";; + esac + # ask for scheme name + schemename=$(yad --center --width=300 --borders=20 --window-icon=mbcc --title "$SAVE_AS" --text="$DESC" --entry --entry-label="$LABEL" --entry-text="$NAME") || exit 1 + + echo "${1}${schemename}" >> "$HOME/.config/colorizer/openbox/userthemes.csv" +} +applyscheme () { + theme MBcolors + case "$1" in + sys) SCHEMEFILE="/usr/share/mabox-colorizer/colorschemes/ob.csv";; + usr) SCHEMEFILE="$HOME/.config/colorizer/openbox/userthemes.csv";; + esac + while IFS="|" read -r abg abgto afg aline nbg nbgto nfg nline grad txtjust pheight pwidth handle bord bevel button fsize fname ndslim weight slant scheme_name + do + clractivebg "${abg}" + clractivebgto "${abgto}" + activetextcolor "${afg}" + activeborderColor "${aline}" + clrnormalbg "${nbg}" + clrnormalbgto "${nbgto}" + inactivetextcolor "${nfg}" + inactiveborderColor "${nline}" + gradient_type "${grad}" + done < <(awk 'NR == n' n=$2 "$SCHEMEFILE") +} +applytheme() { + case "$1" in + sys) SCHEMEFILE="/usr/share/mabox-colorizer/colorschemes/ob.csv";; + usr) SCHEMEFILE="$HOME/.config/colorizer/openbox/userthemes.csv";; + esac + applyscheme "$1" "$2" + while IFS="|" read -r abg abgto afg aline nbg nbgto nfg nline grad txtjust pheight pwidth handle bord bevel button fsize fname ndslim weight slant scheme_name + do + textjustify "${txtjust}" + paddingHeight "${pheight}" + paddingWidth "${pwidth}" + handlewidth "${handle}" + borderWidth "${bord}" + raised "${bevel}" + buttons "${button}" + fontsize "${fsize}" + fontfamily "${fname}" + ndslimc "${ndslim}" + fontweight "${weight}" + fontslant "${slant}" + done < <(awk 'NR == n' n=$2 "$SCHEMEFILE") +} +delscheme() { + sed -i ${1}d "$HOME/.config/colorizer/openbox/userthemes.csv" +} +mono() { +lighten=(0.92 0.8 0.65 0.45 0.28) +darken=(0.9 0.74 0.54 0.38 0.18) + +if [ "${1}" == pick ];then + color=$(gpick -pso 2>/dev/null) +else + color="${1}" +fi + +if [ "${#color}" == 7 ];then + for i in "${lighten[@]}" + do + pal+=("$(pastel mix -f $i "#ffffff" "$color"|pastel format hex)") + done + pal+=("$color") + + for i in "${darken[@]}" + do + pal+=("$(pastel mix -f $i "$color" "#000000"|pastel format hex)") + done +else + exit 0 +fi + +#colorize OB +if [ "$2" == "dark" ];then + clractivebg "${pal[5]}" + #clractivebgto "${pal[6]}" + activeborderColor "${pal[2]}" + activetextcolor "${pal[1]}" + clrnormalbg "${pal[9]}" + clrnormalbgto "${pal[10]}" + inactiveborderColor "${pal[8]}" + inactivetextcolor "${pal[4]}" +else #light + clractivebg "${pal[4]}" + #clractivebgto "${pal[4]}" + activeborderColor "${pal[0]}" + activetextcolor "${pal[9]}" + clrnormalbg "${pal[9]}" + clrnormalbgto "${pal[10]}" + inactiveborderColor "${pal[7]}" + inactivetextcolor "${pal[5]}" +fi +openbox --reconfigure +case "$3" in + col)colorizer-ob -s 2>/dev/null;; + stylemenu)jgwallpaperchanger -s obox;; + *):;; +esac +} + +case "$1" in + theme) theme "$2";; + reset) reset;; + resetonlycolors) resetonlycolors;; + resetMBcolors) resetMBcolors;; + borderWidth) borderWidth "$2";; + activeborderColor) activeborderColor "$2";; + inactiveborderColor) inactiveborderColor "$2";; + paddingHeight) paddingHeight "$2";; + paddingWidth) paddingWidth "$2";; + textjustify) textjustify "$2";; + shadow) shadow "$2";; + handlewidth) handlewidth "$2";; + raised) raised "$2";; + gradient_type) gradient_type "$2";; + random_gradient) random_gradient;; + activegradient) activegradient "$2" "$3";; + gradient_reverse) gradient_reverse;; + activehandle) activehandle "$2";; + clractivebg_only) clractivebg_only "$2";; #ADVANCED - do not calculate colorTo + clractivebg) clractivebg "$2";; + clractivebgto) clractivebgto "$2";; + clrnormalbg_only) clrnormalbg_only "$2";; + clrnormalbg) clrnormalbg "$2";; + clrnormalbgto) clrnormalbgto "$2";; + activetextcolor) activetextcolor "$2";; + inactivetextcolor) inactivetextcolor "$2";; + buttons) buttons "$2";; + ndslimc) ndslimc "$2";; + activebuttonscolors) activebuttonscolors "$2";; + fontfamily) fontfamily "$2";; + fontweight) fontweight "$2";; + fontweight_inactive) fontweight_inactive "$2";; + fontslant) fontslant "$2";; + fontslant_inactive) fontslant_inactive "$2";; + fontsize) fontsize "$2";; + fontweighttoggle) fontweighttoggle;; + fontslanttoggle) fontslanttoggle;; + randomizer) randomizer;; + tweak) tweak "$2";; + mono) mono "$2" "$3" "$4";; + savetheme) savetheme "$2";; + applyscheme) applyscheme "$2" "$3";; + applytheme) applytheme "$2" "$3";; + delscheme) delscheme "$2";; + *) : ;; +esac + +openbox --reconfigure diff --git a/bin/papirus-folder-color.sh b/bin/papirus-folder-color.sh new file mode 100755 index 0000000..01f4f22 --- /dev/null +++ b/bin/papirus-folder-color.sh @@ -0,0 +1,275 @@ +#!/bin/bash +# papirus-folder-color.sh +# Generate icon theme inheriting Papirus or Papirus-Dark, +# but with different coloured folder icons. +# +# Copyright: 2019-2022 John Crawley +# +# 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 . + +# If not overruled by --name option, this will be included in generated theme name. +# Other vendors, please edit to taste: +vendor=Mabox + +USAGE=" +papirus-folder-color.sh [OPTIONS] + + Generates a user custom icon theme with a different folder color from + the default Papirus blue. + +Options: + -h, --help + Show this message. + -c, --color + Choose icon color. + -s, --source_path + Set path to directory holding Papirus theme to be used. + -t, --target_path + Set path to directory where new theme will be generated. + -n, --name + Set name of generated theme. + -l, --link + Symlink icons to source instead of copying. + -d, --dark + Declare theme to be dark and inherit Papirus-Dark. + +color must be specified and can be one of: +black,blue,bluegrey,breeze,brown,cyan,deeporange,green,grey,indigo,magenta,nordic,orange,palebrown,paleorange,pink,red,teal,violet,white,yaru,yellow,custom + +NB \"custom\" color corresponds to jet black, while \"black\" is actually dark grey. +\"jet-black\" may also be passed as an alias for \"custom\". + +If --source_path is not passed, the Papirus theme is read from +/usr/share/icons/Papirus + +If --target_path is not passed, the generated theme is written to +~/.local/share/icons/ + +If --name is not passed, the generated theme will be named +Papirus-${vendor}[-Dark]-. + +By default icons will be copied into the new theme, not symlinked. +This increases the size, but improves portability. +Pass --link to generate symlinks instead. + +If source_path and target_path are under the same top-level directory +then symlinked icons will use relative paths, otherwise absolute paths. +" + +## default variables +## these can (should, at least for color) be overridden by script options +source_path=/usr/share/icons # place to find source Papirus theme +target_path="$HOME/.local/share/icons" # place to put generated theme +#target_path="$PWD" +copy_files=true # If true, copy icons into new theme instead of symlinking. +new_theme='' +color='' + +error_exit() { + echo "$0 error: $1" >&2 + exit 1 +} + +while [[ -n $1 ]] +do + case "$1" in + --color|-c) + color=$2 + shift 2 + ;; + --source_path|-s) + source_path=$2 + shift 2 + ;; + --target_path|-t) + target_path=$2 + shift 2 + ;; + --name|-n) + new_theme=$2 + shift 2 + ;; + --link|-l) + copy_files=false + shift + ;; + --dark|-d) + dark_theme=true + shift + ;; + --help|-h) + echo "$USAGE" + exit + ;; + *) + error_exit "$1: Unrecognized option." + ;; + esac +done + +######################################################################## + +case "$color" in +adwaita|black|blue|bluegrey|breeze|brown|carmine|cyan|darkcyan|deeporange|green|grey|indigo|magenta|nordic|orange|palebrown|paleorange|pink|red|teal|violet|white|yaru|yellow|custom) + ;; +jet-black) + color=custom;; +*) + error_exit "${color}: Unrecognized colour." +esac + +[[ -n $new_theme ]] || { + if [[ $dark_theme = true ]] + then + new_theme="Papirus-${vendor}-Dark-${color}" + else + new_theme="Papirus-${vendor}-${color}" + fi +} + +source_dir="$source_path/Papirus" +target_dir="$target_path/$new_theme" + +[[ $(basename "$source_dir") = Papirus ]] || error_exit "$source_dir: Not a Papirus theme directory" +[[ $(basename "$target_dir") = Papirus* ]] || error_exit "$target_dir: Not a Papirus theme directory" # try to avoid accidents + + +# Define function to make symlinks, +# relative if source & target have same top-level directory. +# If copy_files is true, copy instead of linking. +set_linking() { + if [[ $copy_files = true ]] + then + link_file() { cp "$1" "$2"; } + else + local tld_src=$( readlink -f "${source_dir}" ) + tld_src=${tld_src#/} + tld_src=${tld_src%%/*} + local tld_tgt=$( readlink -f "${target_dir}" ) + tld_tgt=${tld_tgt#/} + tld_tgt=${tld_tgt%%/*} + if [[ "$tld_src" = "$tld_tgt" ]] + then + link_file() { ln -sfr "$1" "$2"; } + else + link_file() { ln -sf "$1" "$2"; } + fi + fi +} + +set_linking + +[[ -e "$target_dir" ]] && { + echo "$target_dir will be removed and replaced, OK?" + read -r -p ' remove? (y/n) ' + case ${REPLY^^} in + Y|YES) + rm -rf "$target_dir" || error_exit "Failed to remove $target_dir";; + *) + echo 'User cancelled. Exiting...'; exit;; + esac +} +mkdir -p "$target_dir" || error_exit "Failed to create $target_dir" + +defcolor=blue # the Papirus default +shortdirlist= +longdirlist= +for subdir in "$source_dir"/* +do + [[ -d ${subdir}/places && ! -h $subdir ]] || continue # only use icons in "places" directories + files=() + while IFS= read -r -d '' file + do + files+=("$file") + done < <(find "${subdir}/places" -type l \( -ilname "*-$defcolor-*" -o -lname "*-$defcolor.*" \) ! -iname "*-$defcolor-*" ! -iname "*-$defcolor.*" -print0) + [[ ${#files[@]} -gt 0 ]] || continue + dirname=${subdir##*/} + mkdir -p "$target_dir/${dirname}/places" || error_exit "Failed to create $target_dir/${dirname}/places" + scaledname=${dirname}@2x + [[ $dirname != symbolic ]] && ln -s "${dirname}" "${target_dir}/${scaledname}" || error_exit "Failed to link ${target_dir}/${scaledname} to ${dirname}" + for i in "${files[@]}" + do + find "${subdir}/places" -type l -lname "${i##*/}" -exec cp --no-dereference '{}' "$target_dir/${dirname}/places" \; + target="$(readlink "$i")" + target="${target/-${defcolor}/-${color}}" + [[ -f "$subdir/places/$target" ]] || { echo "$subdir/places/$target: not found"; continue; } + link_file "$subdir/places/$target" "$target_dir/$dirname/places/${i##*/}" || error_exit "Failed to link_file() $target_dir/$dirname/places/${i##*/} to $subdir/places/$target" + done + case "${dirname}" in + symbolic) + shortdirlist+="${dirname}/places," + longdirlist+="[${dirname}/places] +Context=Places +Size=16 +MinSize=16 +MaxSize=512 +Type=Scalable + +" + ;; + *) + shortdirlist+="${dirname}/places,${scaledname}/places," + longdirlist+="[${dirname}/places] +Context=Places +Size=${dirname%x*} +Type=Fixed + +[${scaledname}/places] +Context=Places +Size=${dirname%x*} +Scale=2 +Type=Fixed + +" + ;; + esac +done + +if [[ $dark_theme = true ]] +then + inherit="Papirus-Dark,breeze-dark" +else + inherit="Papirus,breeze" +fi + +cat < "$target_dir/index.theme" +[Icon Theme] +Name=$new_theme +Comment=Recoloured Papirus icon theme for Mabox Linux +Inherits=${inherit},hicolor + +Example=folder + +FollowsColorScheme=true + +DesktopDefault=48 +DesktopSizes=16,22,24,32,48,64 +ToolbarDefault=22 +ToolbarSizes=16,22,24,32,48 +MainToolbarDefault=22 +MainToolbarSizes=16,22,24,32,48 +SmallDefault=16 +SmallSizes=16,22,24,32,48 +PanelDefault=48 +PanelSizes=16,22,24,32,48,64 +DialogDefault=48 +DialogSizes=16,22,24,32,48,64 + +# Directory list +Directories=${shortdirlist%,} + +$longdirlist +EOF + +gtk-update-icon-cache "$target_dir" diff --git a/bin/pcmanwp b/bin/pcmanwp new file mode 100755 index 0000000..757e6eb --- /dev/null +++ b/bin/pcmanwp @@ -0,0 +1,23 @@ +#!/bin/bash + +# pcmanfm based wallpaper chooser +# simple command for now + +CNF_FILE="$HOME/.config/mabox/wallp_dirs.conf" +if [ ! -f $CNF_FILE ]; then +cat < ${CNF_FILE} +# User wallpapers directories - one per line +# Used by "Choose wallpaper" PCmanFM wrapper +# Set wallpapers using context (right click) menu in file manager +~/wallpapers/ +EOF +fi +#System wallpaper dirs +syswpdirs+=("/usr/share/backgrounds") +if [ -d "/usr/share/backgrounds/tiled" ]; then +syswpdirs+=("/usr/share/backgrounds/tiled") +fi + +readarray -t wpdirs < <(grep "^[^#]" "${CNF_FILE}") + +sh -c "pcmanfm -n $(echo ${syswpdirs[@]} ${wpdirs[@]})" diff --git a/bin/prtctl b/bin/prtctl new file mode 100755 index 0000000..ab940d3 --- /dev/null +++ b/bin/prtctl @@ -0,0 +1,161 @@ +#!/bin/bash + +# prtctl - pyradio theme helper + +# TODO start pyradio if not running + +THEMERC=~/.config/pyradio/themes/mbcolors.pyradio-theme +CONF_DIR="$HOME/.config/pyradio/" +CONF_FILE="$CONF_DIR/config" + +stations() { + sd "^Stations .*$" "Stations $1 $2" ${THEMERC} +} +stations_txt() { + read S SFG SBG<<< "$(grep '^Stations ' ${THEMERC})" + sd "^Stations .*$" "Stations $1 $SBG" ${THEMERC} +} +stations_bg() { + read S SFG SBG<<< "$(grep '^Stations ' ${THEMERC})" + sd "^Stations .*$" "Stations $SFG $1" ${THEMERC} +} + +active_station(){ + read AS1 AS2 ASFG<<< "$(grep '^Active Station ' ${THEMERC})" + sd "^Active Station .*$" "Active Station $1" ${THEMERC} +} +status_bar() { + read SB1 SB2 SBFG SBBG<<< "$(grep '^Status Bar ' ${THEMERC})" + sd "^Status Bar .*$" "Status Bar $1 $2" ${THEMERC} +} +status_bar_txt() { + read SB1 SB2 SBFG SBBG<<< "$(grep '^Status Bar ' ${THEMERC})" + sd "^Status Bar .*$" "Status Bar $1 $SBBG" ${THEMERC} +} +status_bar_bg() { + read SB1 SB2 SBFG SBBG<<< "$(grep '^Status Bar ' ${THEMERC})" + sd "^Status Bar .*$" "Status Bar $SBFG $1" ${THEMERC} +} +normal_cursor() { + sd "^Normal Cursor .*$" "Normal Cursor $1 $2" ${THEMERC} +} +normal_cursor_txt() { + read NC1 NC2 NCFG NCBG<<< "$(grep '^Normal Cursor ' ${THEMERC})" + sd "^Normal Cursor .*$" "Normal Cursor $1 $NCBG" ${THEMERC} +} +normal_cursor_bg() { + read NC1 NC2 NCFG NCBG<<< "$(grep '^Normal Cursor ' ${THEMERC})" + sd "^Normal Cursor .*$" "Normal Cursor $NCFG $1" ${THEMERC} +} +active_cursor() { + sd "^Active Cursor .*$" "Active Cursor $1 $2" ${THEMERC} +} +active_cursor_txt() { + read AC1 AC2 ACFG ACBG<<< "$(grep '^Active Cursor ' ${THEMERC})" + sd "^Active Cursor .*$" "Active Cursor $1 $ACBG" ${THEMERC} +} +active_cursor_bg() { + read AC1 AC2 ACFG ACBG<<< "$(grep '^Active Cursor ' ${THEMERC})" + sd "^Active Cursor .*$" "Active Cursor $ACFG $1" ${THEMERC} +} +edit_cursor() { + read EC1 EC2 ECFG ECBG<<< "$(grep '^Edit Cursor ' ${THEMERC})" + sd "^Edit Cursor .*$" "Edit Cursor $1 $2" ${THEMERC} +} +edit_cursor_txt() { + read EC1 EC2 ECFG ECBG<<< "$(grep '^Edit Cursor ' ${THEMERC})" + sd "^Edit Cursor .*$" "Edit Cursor $1 $ECBG" ${THEMERC} +} +edit_cursor() { + read EC1 EC2 ECFG ECBG<<< "$(grep '^Edit Cursor ' ${THEMERC})" + sd "^Edit Cursor .*$" "Edit Cursor $ECFG $1" ${THEMERC} +} +extra_func() { + sd "^Extra Func .*$" "Extra Func $1" ${THEMERC} +} +pyradio_url() { + sd "^PyRadio URL .*$" "PyRadio URL $1" ${THEMERC} +} +messages_border() { + sd "^Messages Border .*$" "Messages Border $1" ${THEMERC} +} +resettheme () { +mkdir -p ~/.config/pyradio/themes +cat < ${THEMERC} +# Main foreground and background +Stations #309552 #142C2C + +# Playing station text color +# (background color will come from Stations) +Active Station #cdc76d + +# Status bar foreground and background +Status Bar #cdc76d #22564b + +# Normal cursor foreground and background +Normal Cursor #0c1d23 #74885a + +# Cursor foreground and background +# when cursor on playing station +Active Cursor #1a231a #cdc76d + +# Cursor foreground and background +# This is the Line Editor cursor +Edit Cursor #eed6aa #1a231a + +# Text color for extra function indication +# and jump numbers within the status bar +# (background color will come from Stations) +Extra Func #22564b + +# Text color for URL +# (background color will come from Stations) +PyRadio URL #d2cda1 + +# Message window border foreground +# (background color will come from Stations) +Messages Border #d3d4bf + +# Theme Transparency +# Values are: +# 0: No transparency (default) +# 1: Theme is transparent +# 2: Obey config setting +transparency 0 + +EOF +} +export_theme () { + DATE=$(date +'%Y%m%d-%H-%M-%S') + cp ${THEMERC} "$HOME/.config/pyradio/themes/exported_${DATE}.pyradio-theme" + notify-send.sh -i radio "PyRadio theme exported!" "\nNew PyRadio theme created as:\nexported_${DATE}.pyradio-theme\n" -o " Open in editor:xdg-open ${CONF_DIR}/themes/exported_${DATE}.pyradio-theme" -o " Open Themes dir:xdg-open ${CONF_DIR}/themes" +} +#run +if [ ! -f $THEMERC ]; then +resettheme +fi + +case "$1" in + stations) stations "$2" "$3";; + stations_txt) stations_txt "$2";; + stations_bg) stations_bg "$2";; + active_station) active_station "$2";; + status_bar) status_bar "$2" "$3";; + status_bar_txt) status_bar_txt "$2";; + status_bar_bg) status_bar_bg "$2";; + normal_cursor) normal_cursor "$2" "$3";; + normal_cursor_txt) normal_cursor_txt "$2";; + normal_cursor_bg) normal_cursor_bg "$2";; + active_cursor) active_cursor "$2" "$3";; + active_cursor_txt) active_cursor_txt "$2";; + active_cursor_bg) active_cursor_bg "$2";; + edit_cursor) edit_cursor "$2" "$3";; + edit_cursor_txt) edit_cursor_txt "$2";; + edit_cursor_bg) edit_cursor_bg "$2";; + extra_func) extra_func "$2";; + pyradio_url) pyradio_url "$2";; + messages_border) messages_border "$2";; + resettheme) resettheme;; + exp) export_theme;; + *);; +esac diff --git a/bin/quote.sh b/bin/quote.sh new file mode 100755 index 0000000..0a1ecd1 --- /dev/null +++ b/bin/quote.sh @@ -0,0 +1,57 @@ +#!/bin/bash + +DIR="$HOME/.config/quoter" +mkdir -p "$DIR" +CNF_FILE="$DIR/quoter.conf" + +notify(){ +source <(grep = $CNF_FILE) +quotes=${quotes_file:-"/usr/share/mabox/quotes.txt"} +Q=$(shuf -n 1 "${quotes}") +QUOTE=${Q%|*} +AUTOR=${Q#*|} +if [[ -f /tmp/quoteID ]];then +notify-send.sh -R /tmp/quoteID -r "$(cat /tmp/quoteID)" -t 15000 --icon=$HOME/.config/mabox/wpicon.png "${AUTOR}\n" "${QUOTE}" --action="Next:quote.sh -n" +else +notify-send.sh -R /tmp/quoteID -t 15000 --icon=$HOME/.config/mabox/wpicon.png "${AUTOR}\n" "${QUOTE}" --action="Next:quote.sh -n" + +fi +} + +conky() { + +if [ ! -f $CNF_FILE ]; then +cat < ${CNF_FILE} +quote_fontsize=12 +author_fontsize=10 +font_name="Ubuntu" +EOF +fi +source <(grep = $CNF_FILE) +qfsize=${quote_fontsize:-12} +afsize=${author_fontsize:-10} +fontname=${font_name:-"Source Code Pro"} +quotes=${quotes_file:-"/usr/share/mabox/quotes.txt"} + + +Q=$(shuf -n 1 "${quotes}") + + +QUOTE=${Q%|*} +AUTOR=${Q#*|} +#QUOTE=$(crow -b $(echo $Q | jq .quoteText)) +#AUTOR=$(echo $Q | jq .quoteAuthor | tr -d '"') +#echo "${QUOTE}|${AUTOR}" >> "${DIR}"/forismatic.txt + +#QUOTE="Kto to jest Hiszpania? i dlaczego był Hitler?" +#AUTOR="Nieznany Zenon" + +printf "\${font ${fontname}:size=$qfsize}\${color1}" +echo ${QUOTE} | fmt -80 +printf "\${font ${fontname}:size=$afsize}\${alignr}\${color0}" +echo "${AUTOR}" +} +case "$1" in + -n) notify;; + *) conky;; +esac diff --git a/bin/randomizer b/bin/randomizer new file mode 100755 index 0000000..602d15e --- /dev/null +++ b/bin/randomizer @@ -0,0 +1,109 @@ +#!/bin/bash + +# randomizer + +ob () { + obtctl randomizer +} +menu () { + jgctl randomscheme + case "$1" in + show) colorizer-menus -s;; + *):;; + esac +} +conky () { + LINES=$(tail -n +2 /usr/share/mabox-colorizer/colorschemes/conky.csv|wc -l) + N=$(( ( RANDOM % $LINES ) + 2 )) + #notify-send.sh "$LINES" "$N" + conkyctl applyscheme_all sys $N +} +wp () { + : # Może niepotrzebne tu +} +all () { + ob + conky + [[ "$1" == "show" ]] && menu show || menu +} +resetall () { + conkyctl resetcolorsall + obtctl resetMBcolors + [[ "$1" == "show" ]] && jgctl resetMBcolors show || jgctl resetMBcolors + +} +pipemenu () { + me="" + [[ "$1" == "l" ]] && me="mb-jgtools places" + [[ "$1" == "c" ]] && me="colorizer -s" + #notify-send.sh "Me $me" + + case "$LANG" in + pl*) + SETRANDOM="Ustaw losowy motyw dla..." + MENUS="Menu i Panele boczne" + OBWD="Dekoracja okien Openbox" + ALL="Wszystko" + ALLRESET="Resetuj wszystko" + RESET_TO_DEFAULT="Resetuj do ustawień domyślnych..." + HELP="Okno Główne i Pomoc" + ;; + es*) + SETRANDOM="Set random colorscheme for..." + MENUS="Menus and Panels" + OBWD="OpenBox Window Decoration" + ALL="All above" + ALLRESET="Reset All above" + RESET_TO_DEFAULT="Reset to default settings..." + HELP="Main Window and Help" + ;; + *) + SETRANDOM="Set random colorscheme for..." + MENUS="Menus and Panels" + OBWD="OpenBox Window Decoration" + ALL="All above" + ALLRESET="Reset All above" + RESET_TO_DEFAULT="Reset to default settings..." + HELP="Main Window and Help" + ;; + esac + out+=("^sep($SETRANDOM)") + out+=("$MENUS,randomizer menu;$me") + out+=("$OBWD,randomizer ob;$me") + out+=("Conky,randomizer conky;$me") + out+=("^sep()") + out+=(" $ALL,randomizer all;$me") + out+=("^sep($RESET_TO_DEFAULT)") + out+=("$MENUS,jgctl resetMBcolors;$me") + out+=("$OBWD,obtctl resetMBcolors;$me") + out+=("Conky,conkyctl resetcolorsall;$me") + out+=("^sep()") + out+=("󰁯 $ALLRESET,randomizer resetall;$me") + if [[ "$1" != "c" ]];then + out+=("^sep(Colorizer)") + out+=(" Colorizer - $HELP,ycolorizer") + out+=("Colorizer - Rootmenu,colorizer -s") + out+=("^sep(Colorizer modules)") + out+=("OpenBox,colorizer-ob -s") + out+=("Menus,colorizer-menus -s") + out+=("Conky,colorizer-conky -s") + out+=("^sep()") + out+=("Cava,colorizer-cava -s") + out+=("PyRadio,colorizer-pyradio -s") + + fi + printf '%s\n' "${out[@]}" +} + + + + +case "$1" in + ob) ob;; + menu) menu "${2}";; + conky) conky;; + wp) wp;; + all) all "$2";; + resetall)resetall "$2";; + l|c|*) pipemenu "$1";; +esac diff --git a/bin/w2theme b/bin/w2theme new file mode 100755 index 0000000..b6bbd06 --- /dev/null +++ b/bin/w2theme @@ -0,0 +1,543 @@ +#!/bin/bash +# +# colorizer - set of tools for Mabox (auto)theming +# Copyright (C) 2022-2025 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 . + +# w2theme - generate themes from wallpaper colors + +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 + if [ "$ext" == "avif" ];then + magick ${WALLPATH} -resize 25% /tmp/out.jpg + magick /tmp/out.jpg -colors 12 -unique-colors txt:- |grep -v '^#'| awk '{print substr($3,1,7)}' |pastel sort-by brightness |pastel format hex > "$WALLPALDIR/$NAME.clr" + else + magick ${WALLPATH} -resize 25% -colors 12 -unique-colors txt:- |grep -v '^#'| awk '{print substr($3,1,7)}' |pastel sort-by brightness |pastel format hex > "$WALLPALDIR/$NAME.clr" + fi +fi +mapfile -t w < "$WALLPALDIR/$NAME.clr" + +if [[ "${#w[@]}" -lt 8 ]]; then +w+=("#2e3440" "#4c566a" "#5e81ac" "#bf616b" "#b48ead" "#a3be8c" "#ebcb8b" "#d8dee9" "#eceff4") +fi + +accents=("#e93d57" "#c7162b" "#e9633a" "#e95620" "#f4a300" "#e8cc2d" "#3cd425" "#0e8420" "#00d3b7" "#18b0b0" "#3dade9" "#686b6f" "#3584e4" "#916ee4" "#b875dc" "#77216e" "#c748ba" "#e93a9a") + + +menu_theme () { + jgctl theme MBcolors + case "$1" in + dark2) #dark bg + ITEM_FG=$(pastel textcolor ${w[1]}|pastel format hex) + if [[ "${ITEM_FG}" == *"ffffff"* ]];then + ITEM_FGCOLOR="#c0c0c0" + else + ITEM_FGCOLOR="#222222" + fi + jgctl color_menu_bg "${w[1]}" + jgctl color_menu_bg_to "${w[2]}" + jgctl color_menu_border "${w[2]}" + jgctl color_norm_fg "${ITEM_FGCOLOR}" + jgctl color_title_bg "${w[0]}" + jgctl color_title_fg "${w[-1]}" + jgctl color_title_border "${w[0]}" + jgctl color_sel_bg "${w[3]}" + jgctl color_sel_fg "${ITEM_FG}" + jgctl color_sel_border "${w[2]}" + jgctl color_sep_fg "${w[2]}" + jgctl color_norm_bg "${w[1]}" + #sleep 1 + ;; + dark) #dark bg + ITEM_FG=$(pastel textcolor ${w[0]}|pastel format hex) + if [[ "${ITEM_FG}" == *"ffffff"* ]];then + ITEM_FGCOLOR="#c0c0c0" + else + ITEM_FGCOLOR="#222222" + fi + jgctl color_menu_bg "${w[0]}" + jgctl color_menu_bg_to "${w[1]}" + jgctl color_menu_border "${w[2]}" + jgctl color_norm_fg "${ITEM_FGCOLOR}" + jgctl color_title_bg "${w[1]}" + jgctl color_title_fg "${w[-1]}" + jgctl color_title_border "${w[0]}" + jgctl color_sel_bg "${w[5]}" + jgctl color_sel_fg "${ITEM_FG}" + jgctl color_sel_border "${w[2]}" + jgctl color_sep_fg "${w[2]}" + jgctl color_norm_bg "${w[0]}" + #sleep 1 + ;; + light) #light bg + ITEM_FG=$(pastel textcolor ${w[-1]}|pastel format hex) + if [[ "${ITEM_FG}" == *"ffffff"* ]];then + ITEM_FGCOLOR="#c0c0c0" + else + ITEM_FGCOLOR="#222222" + fi + jgctl color_menu_bg "${w[-1]}" + jgctl color_menu_bg_to "${w[-2]}" + jgctl color_menu_border "${w[-3]}" + jgctl color_norm_fg "${ITEM_FGCOLOR}" + jgctl color_title_bg "${w[-3]}" + jgctl color_title_fg "${w[0]}" + jgctl color_title_border "${w[-3]}" + jgctl color_sel_bg "${w[-2]}" + jgctl color_sel_fg "${ITEM_FG}" + jgctl color_sel_border "${w[-3]}" + jgctl color_sep_fg "${w[-3]}" + jgctl color_norm_bg "${w[-1]}" + #sleep 1 + ;; + light2) #light bg + ITEM_FG=$(pastel textcolor ${w[-1]}|pastel format hex) + if [[ "${ITEM_FG}" == *"ffffff"* ]];then + ITEM_FGCOLOR="#c0c0c0" + else + ITEM_FGCOLOR="#222222" + fi + jgctl color_menu_bg "${w[-2]}" + jgctl color_menu_bg_to "${w[-3]}" + jgctl color_menu_border "${w[-4]}" + jgctl color_norm_fg "${ITEM_FGCOLOR}" + jgctl color_title_bg "${w[-1]}" + jgctl color_title_fg "${w[0]}" + jgctl color_title_border "${w[-3]}" + jgctl color_sel_bg "${w[-1]}" + jgctl color_sel_fg "${ITEM_FG}" + jgctl color_sel_border "${w[-3]}" + jgctl color_sep_fg "${w[-3]}" + jgctl color_norm_bg "${w[-2]}" + #sleep 1 + ;; + esac + case "$2" in + show) + colorizer-menus -s + ;; + *):;; + esac +} +conky_colors() { + needrestart=0 + if pgrep -u $USER -f "conky -c" ;then + conky_toggle stop + needrestart=1 + fi + source ~/.config/colorizer/colorizer.conf + case "$1" in + dark) #dark bg + conkyctl win_bgcolor_all "${w[0]}" + conkyctl default_color_all "${w[-2]}" + conkyctl color0_all "${w[-4]}" + conkyctl color1_all "${w[-5]}" + conkyctl color2_all "${w[-3]}" + conkyctl color3_all "${w[-2]}" + ;; + *) #light bg + conkyctl win_bgcolor_all "${w[-1]}" + conkyctl default_color_all "${w[1]}" + conkyctl color0_all "${w[2]}" + conkyctl color1_all "${w[5]}" + conkyctl color2_all "${w[3]}" + conkyctl color3_all "${w[2]}" + ;; + esac + #bars/graphs color + #random + #conkyctl color2_all "${accents[ $RANDOM % ${#accents[@]} ]}" + conkyctl fix_transparent_conkies + sleep 1 + [[ "$needrestart" == "1" ]] && conky_toggle start +} +conky_colorsone () { + source ~/.config/colorizer/colorizer.conf + case "$1" in + dark) #dark bg + conkyctl win_bgcolor "${w[0]}" "${2}" + conkyctl default_color "${w[-2]}" "${2}" + conkyctl color0 "${w[-4]}" "${2}" + conkyctl color1 "${w[-5]}" "${2}" + conkyctl color2 "${w[-3]}" "${2}" + conkyctl color3 "${w[-2]}" "${2}" + ;; + *) #light bg + conkyctl win_bgcolor "${w[-1]}" "${2}" + conkyctl default_color "${w[1]}" "${2}" + conkyctl color0 "${w[2]}" "${2}" + conkyctl color1 "${w[5]}" "${2}" + conkyctl color2 "${w[3]}" "${2}" + conkyctl color3 "${w[2]}" "${2}" + ;; + esac + #conkyctl color2_all "${accents[ $RANDOM % ${#accents[@]} ]}" "${2}" +} +pyradio_theme() { + case "$1" in + dark) #dark bg + prtctl stations "${w[-3]}" "${w[0]}" + prtctl active_station "${w[-1]}" + prtctl status_bar "${w[0]}" "${w[-3]}" + prtctl normal_cursor "${w[1]}" "${w[-4]}" + prtctl active_cursor "${w[2]}" "${w[-3]}" + prtctl edit_cursor "${w[2]}" "${w[-3]}" + prtctl extra_func "${w[6]}" + prtctl pyradio_url "${w[2]}" + prtctl messages_border "${w[2]}" + ;; + *) # light bg + prtctl stations "${w[4]}" "${w[-1]}" + prtctl active_station "${w[0]}" + prtctl status_bar "${w[0]}" "${w[-3]}" + prtctl normal_cursor "${w[4]}" "${w[-3]}" + prtctl active_cursor "${w[2]}" "${w[-3]}" + prtctl edit_cursor "${w[2]}" "${w[-3]}" + prtctl extra_func "${w[6]}" + prtctl pyradio_url "${w[2]}" + prtctl messages_border "${w[4]}" + ;; + esac +} +cava () { + case "$1" in + light) #light bottom + cavactl gradientcolors "${w[-3]}" "${w[3]}" + cavactl foregroundcolor "${w[-3]}" + cavactl reload_colors + ;; + dark) #dark bottom + cavactl gradientcolors "${w[3]}" "${w[-3]}" + cavactl foregroundcolor "${w[3]}" + cavactl reload_colors + ;; + *) + : + ;; + esac +} + +accent () { + #obtctl clractivebg ${1} + #colorTo=$(pastel darken 0.2 "${1}"|pastel format hex) + #obtctl clractivebgto ${colorTo} + # JGMENU based menus, sidepanels and tools + #jgctl color_title_bg ${1} + #TITLE_FG=$(pastel textcolor ${colorTo}|pastel format hex) + #TITLE_FG=$(pastel textcolor ${1}|pastel format hex) + #notify-send.sh "title_fg $TITLE_FG" "${w[1]} ${w[-1]}" + #if [[ "${TITLE_FG}" == *"ffffff"* ]];then + #FG=${w[-2]} + #BBG=${w[1]} + #else + #FG=${w[2]} + #BBG=${w[1]} + #fi + SEL_FG=$(pastel textcolor ${1}|pastel format hex) + #jgctl color_title_fg ${FG} + #jgctl color_title_border ${BBG} + jgctl color_sel_bg ${1} + jgctl color_sel_bg 100 + jgctl color_sel_fg ${SEL_FG} +} + +gradient () { + source ~/.config/colorizer/colorizer.conf + #notify-send.sh "zmiennne" "${1} ${2}" + if [ "$gradient_obtheme" = "yes" ]; then + obtctl activegradient "${1}" "${2}" + fi + if [ "$gradient_menu" = "yes" ]; then + jgctl gradient "${1}" "${2}" + fi + if [ "$gradient_conkies" = "yes" ]; then + conkygradient "${1}" "${2}" + fi +} +conkygradient () { + CONKYDIR="$HOME"/.config/conky + for i in "$CONKYDIR"/*_mbcolor*; do + if [[ "$i" = *"sysinfo_graph"* ]];then + conkyctl win_bgcolor ${1} ${i} + FG_COLOR=$(pastel textcolor ${1}|pastel format hex) + if [[ "${FG_COLOR}" == *"ffffff"* ]]; then + conkyctl default_color ${w[-1]} ${i} + conkyctl color0 ${w[-2]} ${i} + conkyctl color1 ${w[-3]} ${i} + else + conkyctl default_color ${w[0]} ${i} + conkyctl color0 ${w[1]} ${i} + conkyctl color1 ${w[2]} ${i} + fi + conkyctl color2 ${2} ${i} + elif [[ "$i" = *"sysinfo_mb"* ]];then + conkyctl win_bgcolor ${2} ${i} + FG_COLOR=$(pastel textcolor ${2}|pastel format hex) + if [[ "${FG_COLOR}" == *"ffffff"* ]]; then + conkyctl default_color ${w[-1]} ${i} + conkyctl color0 ${w[-2]} ${i} + conkyctl color1 ${w[-3]} ${i} + else + conkyctl default_color ${w[0]} ${i} + conkyctl color0 ${w[1]} ${i} + conkyctl color1 ${w[2]} ${i} + fi + conkyctl color2 ${1} ${i} + elif [[ "$i" == *"logo"* ]];then + : + else + ran="$((RANDOM % 8))" + rand=$((ran + 1)) + BG=$(pastel mix -f 0.${rand} ${1} ${2}|pastel format hex) + conkyctl win_bgcolor ${BG} ${i} + FG_COLOR=$(pastel textcolor ${BG}|pastel format hex) + if [[ "${FG_COLOR}" == *"ffffff"* ]]; then + conkyctl default_color ${w[-1]} ${i} + conkyctl color0 ${w[-2]} ${i} + conkyctl color1 ${w[-3]} ${i} + else + conkyctl default_color ${w[0]} ${i} + conkyctl color0 ${w[1]} ${i} + conkyctl color1 ${w[2]} ${i} + fi + fi + done +} +obtheme () { +case "$1" in + dark) + obtctl clractivebg ${w[2]} + TITLE_FG=$(pastel textcolor ${w[2]}|pastel format hex) + if [[ "$TITLE_FG" == *"ffffff"* ]];then + obtctl activetextcolor "#E5E5E5" + #obtctl activetextcolor ${w[-1]} + #obtctl activebuttonscolors ${w[-1]} + else + obtctl activetextcolor "#222222" + #obtctl activetextcolor ${w[0]} + #obtctl activebuttonscolors ${w[0]} + fi + obtctl clractivebgto ${w[4]} + obtctl clrnormalbg ${w[0]} + obtctl clrnormalbgto "$(pastel darken 0.1 "${w[0]}"|pastel format hex)" + ;; + light) + obtctl clractivebg ${w[-2]} + TITLE_FG=$(pastel textcolor ${w[-2]}|pastel format hex) + if [[ "$TITLE_FG" == *"ffffff"* ]];then + obtctl activetextcolor "#E5E5E5" + #obtctl activetextcolor ${w[-1]} + #obtctl activebuttonscolors ${w[-1]} + else + obtctl activetextcolor "#222222" + #obtctl activetextcolor ${w[0]} + #obtctl activebuttonscolors ${w[0]} + fi + obtctl clractivebgto ${w[-4]} + obtctl clrnormalbg ${w[1]} + obtctl clrnormalbgto "$(pastel darken 0.1 "${w[1]}"|pastel format hex)" + ;; + esac + obtctl shadow 0 +} +notify_colorize(){ + +case "$LANG" in +pl*) +_TITLE="Auto theming wykonany!" +_THEME_MODIFIED="\nMotywy pokolorowano zgodnie z konfiguracją.\n +Następna tapeta - ustaw kolejną, losową tapetę +Ustawienia - konfiguraj Auto theming +Reset - reset tapety oraz motywów \n" +_NEXT="Następna tapeta" +_SETTINGS="Ustawienia" +_RESET="Reset" +;; +*) +_TITLE="Auto theming applied!" +_THEME_MODIFIED="\nThemes colorized according to configuration.\n +Next wallpaper - try with next random wallpaper +Settings - configure Auto theming +Reset - reset wallpaper and themes to defaults \n" +_NEXT="Next wallpaper" +_SETTINGS="Settings" +_RESET="Reset" +;; +esac + + notify-send.sh -t 5000 -i ~/.config/mabox/wpicon_wide.png --replace-file=/tmp/colorize_notid "$_TITLE" "$_THEME_MODIFIED" \ + -o "$_NEXT:mbwallpaper -o" -o "$_SETTINGS:jgwallpaperchanger -s autoth" -o "$_RESET:w2theme resetall" +} +colorize () { + source ~/.config/colorizer/colorizer.conf + # + # CONKY + case "$wall2themes_conky" in + dark) conky_colors dark;; + light) conky_colors light;; + *) : ;; + esac + + #show_desktop + #sleep 1 + #show_desktop + # PYRADIO THEME + case "$wall2themes_pyradio" in + dark) pyradio_theme dark;; + light) pyradio_theme light;; + *) : ;; + esac + # Openbox (TUTAJ WARUNEK) + case "$wall2themes_ob" in + dark) obtheme dark;; + light) obtheme light;; + *) : ;; + esac + + + # ACCENT_COLOR + case "$wall2themes_accent" in + dark) + obtctl theme MBcolors + accent ${w[1]} + ;; + light) + obtctl theme MBcolors + accent ${w[-1]} + ;; + *) : ;; + esac + # MENUS + case "$wall2themes_menu" in + dark) menu_theme dark;; + light) menu_theme light;; + *) : ;; + esac + + notify_colorize + + + +} + +reverse () { + source ~/.config/colorizer/colorizer.conf + # Openbox (TUTAJ WARUNEK) + case "$wall2themes_ob" in + dark) obtheme light;; + light) obtheme dark;; + *) : ;; + esac + # PYRADIO THEME + case "$wall2themes_pyradio" in + dark) pyradio_theme light;; + light) pyradio_theme dark;; + *) : ;; + esac + # CONKY + case "$wall2themes_conky" in + dark) conky_colors light + ;; + light) conky_colors dark + ;; + *) : ;; + esac + # ACCENT_COLOR + case "$wall2themes_accent" in + dark) + obtctl theme MBcolors + accent ${w[-1]} + ;; + light) + obtctl theme MBcolors + accent ${w[1]} + ;; + *) : ;; + esac + # MENUS + case "$wall2themes_menu" in + dark) menu_theme light;; + light) menu_theme dark;; + *) : ;; + esac + + +notify_colorize +} + +genthumb () { + #$1 - filename with full path + NAME=${1////_} + if [[ "${NAME}" =~ ^_home_.* ]]; then + n=${#HOME} + ((n++)) + NAME=${NAME:${n}} + fi + # GENERATE THUMBNAIL + THUMBDIR="$HOME/.cache/colorizer/thumbs" + mkdir -p ${THUMBDIR} + THUMB="${THUMBDIR}/${NAME}.png" + if [[ ! -f "$THUMB" ]]; then + magick ${1} -resize 270x150^ -gravity center -extent 270x150 ${THUMB} + fi +} +pin () { +#get wallpaper path and filename without ext + +# mkdir for colorscheme +mkdir -p ~/.config/colorizer/pinned/$WALLNAME +# if dir exist then action is update so remove old content +rm -rf ~/.config/colorizer/pinned/$WALLNAME + +# get menu themename jgmenu_theme= ( it is always MBcolors ????) +. ~/.config/mabox/mabox.conf + +} +resetall(){ +nitrogen default +conkyctl resetcolorsall +obtctl resetMBcolors +jgctl resetMBcolors + +} + + +case "$1" in + ob) obtheme "$2";; + menu) menu_theme "$2" "$3";; + conky) conky_colors "$2";; + conkyone) conky_colorsone "$2" "$3";; + pyradio) pyradio_theme "$2";; + cava) cava "$2";; + accent) accent "$2";; + gradient) gradient "$2" "$3";; + colorize) colorize;; + reverse) reverse;; + resetall) resetall;; + genthumb)genthumb "$2";; + pin) pin;; + *) ;; +esac diff --git a/bin/ycolorizer b/bin/ycolorizer new file mode 100755 index 0000000..4f63d1a --- /dev/null +++ b/bin/ycolorizer @@ -0,0 +1,10 @@ +#!/bin/bash +# ycolorizer - launch Colorizer main window and Help + + +LNG=${LANG:0:2} +if [[ -f "/usr/share/mabox-colorizer/help/$LNG.html" ]];then +yhtml /usr/share/mabox-colorizer/help/$LNG.html 'Mabox Colorizer' +else +yhtml /usr/share/mabox-colorizer/help/en.html 'Mabox Colorizer' +fi diff --git a/removecolorizer b/removecolorizer new file mode 100644 index 0000000..9013e1c --- /dev/null +++ b/removecolorizer @@ -0,0 +1,9 @@ +#!/bin/bash + +rm ~/.config/conky/*mbcolor* +rm ~/.config/conky/images/mabox_3d.png +rm -rf ~/.config/conky/scripts + +rm -rf ~/.themes/MBcolors + +rm ~/.config/mabox/jgobthemes/MBcolo* diff --git a/share/applications/colorizer-menu.desktop b/share/applications/colorizer-menu.desktop new file mode 100644 index 0000000..31f2d60 --- /dev/null +++ b/share/applications/colorizer-menu.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=Colorizer Menu +Comment=Mabox Colorizer +Keywords= +StartupNotify=false +Icon=colorizer +TryExec=colorizer -s +Exec=colorizer -s +Categories=Settings; +#NoDisplay=true diff --git a/share/applications/colorizer.desktop b/share/applications/colorizer.desktop new file mode 100644 index 0000000..0a69d23 --- /dev/null +++ b/share/applications/colorizer.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=Colorizer GUI +Comment=Mabox Colorizer +Keywords= +StartupNotify=false +Icon=colorizer +TryExec=ycolorizer +Exec=ycolorizer +Categories=Settings; +#NoDisplay=true diff --git a/share/applications/pcmanwp.desktop b/share/applications/pcmanwp.desktop new file mode 100644 index 0000000..6071728 --- /dev/null +++ b/share/applications/pcmanwp.desktop @@ -0,0 +1,12 @@ +[Desktop Entry] +Version=1.0 +Type=Application +Name=Choose wallpaper +Name[pl]=Wybierz tapetę +Comment= +Keywords= +StartupNotify=false +Icon=preferences-desktop-wallpaper +Exec=pcmanwp +Categories=Settings; +#NoDisplay=true diff --git a/share/icons/hicolor/128x128/apps/colorizer.png b/share/icons/hicolor/128x128/apps/colorizer.png new file mode 100644 index 0000000000000000000000000000000000000000..d6053802d86d1d88c6ff4828911f5f3772564650 GIT binary patch literal 373 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H3?#oinD`S&aTa()7BevL?+0PV`5TOu0|g~Z zTq8|Idc`_grte z3L=}YhJZyv{CYv`-rnB-XF`DDO;=*+9g_@j!$4#u-QV{SQ1D;`&2b z^Tl-k(C3#;f@E!j_n58!?Z4+E-;KJDL2>%&d-Q?2u>yzGhDXb%s=PEk`ufwakA3EM v7=PQ}n{xfLU_L8W^+3TDJOO{UOgdG{_?5BBio4JB9!R05tDnm{r-UW|od%C@ literal 0 HcmV?d00001 diff --git a/share/icons/hicolor/16x16/apps/colorizer.png b/share/icons/hicolor/16x16/apps/colorizer.png new file mode 100644 index 0000000000000000000000000000000000000000..43aa8326cef48aef603458b48ac4da6b19838186 GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJXMsm#F#`kRcMxWj+okyjC@5Lt z8c`CQpH@mmtT}V`<;yxP?1xBPl#)1-{Zc=p_3*}`hN~g zUJUY`c(vhbsNaMe%{QRp{{1)Fu7>va_y0c~>eq9vLlmjGUahy1jh}5R{eu1p>X|n^S-)EIeHtLnJOICp=&tm}ro&yqBSE>zO|Z2TmPiX5-gTe~DWM4fqIGBU literal 0 HcmV?d00001 diff --git a/share/icons/hicolor/22x22/apps/colorizer.png b/share/icons/hicolor/22x22/apps/colorizer.png new file mode 100644 index 0000000000000000000000000000000000000000..1050c1c252b475824bb0f87aff8025c2677772a9 GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^Vj#@H3?x5i&EW)6oCO|{#S9EgTR@nxzUQS4P*AeO zHKHUqKdq!Zu_%?Hyu4g5GcUV1Ik6yBFTW^#_B$IXpd!}*pAc6d{r^7@{ZE^DX6Bi+ zfd2Ch=L33rdj6k@^qh3N?RMy-Nt6Dc3k{ffv-M_(U+?wiYr%beegDsZ*;hkA?6V;g z^yFHA28ovh`2{mDGP1G?2#AP?0)eyh@#EjV{RM)BPI9$CCAOX}jv*44lM@o2w=t=S z>1iYYnF1oMOnG*K8UhlB4q4QkJjl%2b7oG!0WJ|Sp=KtzxI~Qy@`nyZ)N(THe=o;t TvGI==&>#j+S3j3^P6V>3XPt@Aamu zp?!UQ|IdZ^^a>%@d+oS-6j!Zak2XU~z(h;d@4Isqy=l-9Q}-p00i_>zopr E0EFX8qW}N^ literal 0 HcmV?d00001 diff --git a/share/icons/hicolor/32x32/apps/colorizer.png b/share/icons/hicolor/32x32/apps/colorizer.png new file mode 100644 index 0000000000000000000000000000000000000000..7a9101853b94aee309de0a6735f8b93bdb34c819 GIT binary patch literal 304 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE3?yBabR7dyoCO|{#S9G0??IUHx&0RrprB-l zYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&Kt-+rJ|V6^+PCLs+ofP2*>W{> z!h{L`&xQ5%_5D8!CeMWW^;~PZ8sgV`z4>ZLZ*TAaGa-I`Kz1-h1gtV-^1f-;fd+|} z1o;IsXlU5j1P2!u*453Oy9x;2y!i_Rx1KK94OHUk>Eak-ar*5=YoP`Ok)szHx*qX| zl>GNzy7#X3oQ03BykuIY*(v!gxI$r{(!tmxH=3t4TE5;t;V9E>MVSqCN{7F8EM(VZ cE}piK$yUa~QY zTq8>HC5uA&=-ct)d>xaJ7w6o+*R8)v#exbFgM?6mdKI;Vst03KFMB>(^b literal 0 HcmV?d00001 diff --git a/share/icons/hicolor/64x64/apps/colorizer.png b/share/icons/hicolor/64x64/apps/colorizer.png new file mode 100644 index 0000000000000000000000000000000000000000..9643093548d17964ea48ee27cb1dd1cc12802edb GIT binary patch literal 313 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I3?%1nZ+ru!I14-?iy0W$?}ISoc~{R?prB-l zYeY$Kep*R+Vo@qXd3m{BW?pu2a$-TMUVc&f>~}U&Kt=WeJ|V6^deWpx|1SplO}No~ zBh;_&4v?HMVZ#4&VgCI$+OCH7_xJxl9qQkGt@TQnZ{PLiYr%fK*PE|~^!4@qKO4f< zKVt*X2+@)tzhDL#8Fh6JkKo`CASf@tb?Yw>bY)%i0xF2|ba4!cIQ;hNcEJV%29|?| zr8!$(?++7NDxYa0@JDpR%Y*W>npQDNgon;=j22_)^WG|LkZ_=Zk=eB2(N@bDi&wEq vh=opXbQfd1wDJ~@1W2w?%HiX!eQ#MW=3bciME_Ab&=v+yS3j3^P6zv5+EJ82K*Z(Z%?pmK+Jakx99cz|h$MXb|6tGV{g=c~6;1k7GS@*tfP=*;=YZ_1 ivPqW;dZFBkdyFdcF8*F`KRW_w9)qW=pUXO@geCwac3eOJ literal 0 HcmV?d00001 diff --git a/share/icons/hicolor/scalable/apps/colorizer.svg b/share/icons/hicolor/scalable/apps/colorizer.svg new file mode 100644 index 0000000..922385c --- /dev/null +++ b/share/icons/hicolor/scalable/apps/colorizer.svg @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + diff --git a/share/mabox-colorizer/colors.list b/share/mabox-colorizer/colors.list new file mode 100644 index 0000000..056b1c6 --- /dev/null +++ b/share/mabox-colorizer/colors.list @@ -0,0 +1,24 @@ +#FFFFFF +#F5F6E8 +#EEEEEE +#D0AD9A +#D0E2EE +#FFF79C +#FED883 +#FEBE40 +#EC7523 +#556B2F +#F8C09D +#DD94C1 +#EA676C +#432355 +#311A12 +#1D5C87 +#3A4D5C +#143441 +#0F2437 +#3b3b3b +#252525 +#181818 +#111111 +#000000 diff --git a/share/mabox-colorizer/colorschemes/conky.csv b/share/mabox-colorizer/colorschemes/conky.csv new file mode 100644 index 0000000..a476f90 --- /dev/null +++ b/share/mabox-colorizer/colorschemes/conky.csv @@ -0,0 +1,12 @@ +WINCLR | CLR | CLR0 | CLR1 | CLR2 | CLR3 |WINTRANS|OUTLINE|SHADES | BORD |BWIDTH| STIP |scheme_name +#142c2c|#F8F8FF|#accdc7|#309552|#E8CB2D|#61c4bc|false|false|false|true|2|0|Istredd default +#282936|#626483|#e9e9f4|#ea51b2|#ebff87|#00f769|false|false|false|true|8|0|Dracula +#282828|#665C54|#ebdbb2|#98971a|#FB4934|#d79921|false|false|false|true|8|0|Gruvbox Dark +#2D2A2E|#272822|#AB9DF2|#FCFCFA|#A6E22E|#78DCE8|false|false|false|true|8|0|Monokai Pro +#2E3440|#4C566A|#B48EAD|#D8DEE9|#EBCB8B|#88C0D0|false|false|false|true|8|0|Nord +#f8f8f8|#F8F8FF|#181415|#282828|#e95620|#0e8420|true|false|true|false|2|0|transparent DarkTxt +#1b1b1b|#F8F8FF|#bbc8c8|#f2f2f2|#ebc13d|#84c747|true|false|false|false|2|0|transparent WhiteTxt +#184956|#2D5B69|#adbcbc|#ff665c|#ebc13d|#84c747|false|false|false|true|6|0|Selenized Dark +#ECE3CC|#D5CDB6|#3A4D53|#AD8900|#489100|#CC1729|false|false|false|true|8|0|Selenized Light +#151718|#41535B|#D6D6D6|#CD3F45|#E6CD69|#9FCA56|false|false|false|true|6|0|Seti +#1d1f21|#F0C674|#b294bb|#c5c8c6|#b5bd68|#81a2be|false|false|false|true|6|0|Tomorrow Night diff --git a/share/mabox-colorizer/colorschemes/menus.csv b/share/mabox-colorizer/colorschemes/menus.csv new file mode 100644 index 0000000..471bea5 --- /dev/null +++ b/share/mabox-colorizer/colorschemes/menus.csv @@ -0,0 +1,10 @@ + MBG |op| MBGT |op|MBORDER|op| TBG |op| TFG |op|TBORDER|op|NORMBG |op| NFG |op| SBG |op| SFG |op|SBORDER|op| SEPFG |op|B|R|P|SS|IB|IR|A|AL|SEPHAL|GRADIENT|scheme_name +#383838|90|#222222|90|#eeeeee|90|#325a52|100|#d3d4bf|90|#579c8e|40|#383838|0|#dadada|90|#579c8e|90|#ffffff|100|#061307|60|#4f4f4f|30|0|2|8|4|0|3|||center|none|Istredd +#383838|90|#222222|90|#eeeeee|90|#325a52|100|#d3d4bf|90|#579c8e|40|#383838|100|#dadada|90|#e8cc2d|70|#0d0d0d|100|#061307|60|#4f4f4f|30|0|2|8|4|0|3|||center|right|Istredd v2 +#1E1E1E|90|#262626|90|#333333|90|#383838|90|#BBBBBB|90|#222222|90|#1e1e1e|90|#9b9b9b|90|#000000|90|#FFCC66|90|#FFCC66|90|#363636|20|0|2|8|8|0|2|||center|right|Jaskier +#d3d4bf|90|#d2cda1|90|#cdc76d|90|#cdc76d|90|#0c1d23|90|#c6b76b|90|#d3d4bf|90|#0c1d23|90|#e8e8dd|100|#060b0a|90|#c6b76b|90|#a29d62|20|0|2|8|8|0|2|||center|top_right|Jaskier Light +#38373c|90|#424247|90|#2a2a2c|90|#2a2a2d|90|#d0d0ce|90|#151517|90|#38373c|90|#c8c8c4|90|#59595a|90|#f8f8f8|90|#373739|90|#2a2a2c|20|0|2|8|8|0|2|||center|bottom_left|GreyBird Dark +#ececea|90|#e0e0de|90|#d0d0ce|90|#d0d0ce|90|#1e1e20|90|#c0c0be|90|#e0e0de|90|#1e1e20|90|#b0b0af|90|#151517|90|#c0c0be|90|#b0b0af|20|0|2|8|8|0|2|||center|bottom_left|GreyBird Light +#2f343f|100|#2f343f|100|#4C566A|100|#3B4252|100|#ffffff|100|#2f343f|100|#2f343f|0|#a8adb5|100|#3B4252|100|#A3BE8C|100|#A3BE8C|20|#4C566A|20|12|8|24|8|0|2|||center|top_right|Nordic +#103C48|100|#184956|90|#eeeeee|90|#2D5B69|100|#CAD8D9|90|#103C48|100|#383838|0|#ADBCBC|90|#DBB32D|100|#103C48|100|#061307|60|#4f4f4f|30|0|2|8|4|0|3|||center|none|Selenized-Dark +#252525|100|#181818|90|#184956|90|#181818|100|#b2b2b2|90|#252525|100|#181818|0|#c0c0c0|90|#70B433|70|#ffffff|100|#70B433|90|#1d3036|30|0|2|8|4|1|3|||center|none|Selenized-Black diff --git a/share/mabox-colorizer/colorschemes/ob.csv b/share/mabox-colorizer/colorschemes/ob.csv new file mode 100644 index 0000000..2a852cd --- /dev/null +++ b/share/mabox-colorizer/colorschemes/ob.csv @@ -0,0 +1,11 @@ + ABG | ABGTO | AFG | ALINE | NBG | NBGTO | NFG | NLINE | GRAD |TXTJUST|PHEIGHT|PWIDTH|HANDLE|BORD|BEVEL|BUTTONS|FSIZE|FNAME|NDSLIMC|WEIGHT|SLANT|scheme_name +#579c8e|#41756a|#ffffff|#579c8e|#383838|#2a2a2a|#898989|#292929|vertical|center|4|4|4|1|raised|tiny|11|Noto Sans|NDSLIMC|Normal|Normal|Mabox Istredd +#d2cda1|#c6b76b|#222222|#d2cda1|#0c1d23|#000000|#898989|#0c1d23|vertical|center|4|4|2|0|raised|big-12|12|Noto Sans|NLIMC|Normal|Normal|Mabox Jaskier Light +#283433|#1a231a|#E5E5E5|#283433|#0c100f|#080b08|#898989|#0c100f|horizontal|center|4|4|2|0|raised|tiny|11|Noto Sans|NLIMC|Normal|Normal|Mabox Jaskier Dark +#D9D9D9|#B6B6B6|#0F0F0F|#BDBBB9|#D9D9D9|#B4B4B4|#656565|#BFBCBB|vertical|left|2|2|1|0|raised|bold|11|Ubuntu Bold|NLIMC|Bold|Normal|Light Grey +#CE5C00|#9b4600|#E5E5E5|#CE5C00|#D3D7CF|#B4B4B4|#656565|#BFBCBB|mirrorhorizontal|center|2|2|1|0|raised|dots|11|Noto Sans|NLIMC|Normal|Normal|Orange +#F7941E|#004E8F|#E5E5E5|#F7941E|#4a2c09|#00172b|#656565|#4a2c09|mirrorhorizontal|center|4|4|1|0|raised|big-14|13|Ubuntu|NLIMC|Normal|Normal|Sky and Sea +#bda9a9|#D3C6C6|#222222|#EBDCDD|#D2C6C5|#D2C6C5|#837B7C|#D2C6C5|mirrorhorizontal|center|4|4|0|6|sunken|bold|11|Ubuntu|LIMC|Bold|Normal|BL Boron Light +#765BAB|#5e478c|#FFFFFF|#242424|#373737|#1e1e1e|#9A9A9A|#373737|solid|center|2|2|4|1|flat|tiny|10|Cantarell|NDSLIMC|Normal|Normal|Lean +#0395E2|#02669c|#E5E5E5|#0395E2|#201d29|#09080b|#898989|#201d29|splitvertical|center|4|4|3|1|flat|bold|11|Ubuntu|NLIMC|Bold|Normal|Split Blue +#393c47|#75443b|#E5E5E5|#393c47|#201d29|#09080b|#898989|#201d29|mirrorhorizontal|center|2|2|4|4|flat|tiny|8|Ubuntu|NLIMC|Bold|Normal|MirrHor Brown diff --git a/share/mabox-colorizer/fonts.list b/share/mabox-colorizer/fonts.list new file mode 100644 index 0000000..c4549e0 --- /dev/null +++ b/share/mabox-colorizer/fonts.list @@ -0,0 +1,11 @@ +# Put your favorite fonts families here, one per line +Autour One +Cantarell +DejaVu Serif +Droid Sans +JetBrains Mono +Noto Sans +Roboto +Ubuntu +Noto Sans Light +Source Code Pro diff --git a/share/mabox-colorizer/gradients_all.inc b/share/mabox-colorizer/gradients_all.inc new file mode 100644 index 0000000..4925af0 --- /dev/null +++ b/share/mabox-colorizer/gradients_all.inc @@ -0,0 +1,362 @@ +#9400D3 #4B0082 Farhan +#c84e89 #F15F79 Purple +#00F5A0 #00D9F5 Ibtesam +#F7941E #004E8F The Sky And The Sea +#72C6EF #004E8F From Ice To Fire +#FD8112 #0085CA Blue And Orange +#bf5ae0 #a811da Purple Dream +#00416A #E4E5E6 Blu +#fbed96 #abecd6 Summer Breeze +#FFE000 #799F0C Ver +#F7F8F8 #ACBB78 Ver Black +#334d50 #cbcaa5 Anwar +#799F0C #ACBB78 Reaqua +#ffe259 #ffa751 Mango +#00416A #E4E5E6 Bupe +#FFE000 #799F0C Rea +#acb6e5 #86fde8 Windy +#536976 #292E49 Royal Blue +#B79891 #94716B Copper +#9796f0 #fbc7d4 Anamnisar +#BBD2C5 #536976 Petrol +#076585 #ffffff Sky +#00467F #A5CC82 Sel +#000C40 #607D8B Afternoon +#1488CC #2B32B2 Skyline +#ec008c #fc6767 DIMIGO +#cc2b5e #753a88 Purple Love +#2193b0 #6dd5ed Sexy Blue +#e65c00 #F9D423 Blooker20 +#2b5876 #4e4376 Sea Blue +#314755 #26a0da Nimvelo +#ff6e7f #bfe9ff Noon to Dusk +#e52d27 #b31217 YouTube +#603813 #b29f94 Cool Brown +#16A085 #F4D03F Harmonic Energy +#D31027 #EA384D Playing with Reds +#EDE574 #E1F5C4 Sunny Days +#02AAB0 #00CDAC Green Beach +#DA22FF #9733EE Intuitive Purple +#348F50 #56B4D3 Emerald Water +#3CA55C #B5AC49 Lemon Twist +#003973 #E5E5BE Horizon +#E55D87 #5FC3E4 Rose Water +#403B4A #E7E9BB Frozen +#F09819 #EDDE5D Mango Pulp +#FF512F #DD2476 Bloody Mary +#AA076B #61045F Aubergine +#1A2980 #26D0CE Aqua Marine +#FF512F #F09819 Sunrise +#1D2B64 #F8CDDA Purple Paradise +#4CB8C4 #3CD3AD Sea Weed +#DD5E89 #F7BB97 Pinky +#EB3349 #F45C43 Cherry +#1D976C #93F9B9 Mojito +#FF8008 #FFC837 Juicy Orange +#16222A #3A6073 Mirage +#1F1C2C #928DAB Steel Gray +#614385 #516395 Kashmir +#4776E6 #8E54E9 Electric Violet +#085078 #85D8CE Venice Blue +#2BC0E4 #EAECC6 Bora Bora +#134E5E #71B280 Moss +#5C258D #4389A2 Shroom Haze +#757F9A #D7DDE8 Mystic +#232526 #414345 Midnight City +#1CD8D2 #93EDC7 Sea Blizz +#3D7EAA #FFE47A Opa +#283048 #859398 Titanium +#24C6DC #514A9D Mantle +#DC2424 #4A569D Dracula +#ED4264 #FFEDBC Peach +#DAE2F8 #D6A4A4 Moonrise +#ECE9E6 #FFFFFF Clouds +#7474BF #348AC7 Stellar +#EC6F66 #F3A183 Bourbon +#5f2c82 #49a09d Calm Darya +#C04848 #480048 Influenza +#e43a15 #e65245 Shrimpy +#414d0b #727a17 Army +#FC354C #0ABFBC Miaka +#4b6cb7 #182848 Pinot Noir +#f857a6 #ff5858 Day Tripper +#a73737 #7a2828 Namn +#d53369 #cbad6d Blurry Beach +#e9d362 #333333 Vasily +#DE6262 #FFB88C A Lost Memory +#666600 #999966 Petrichor +#FFEEEE #DDEFBB Jonquil +#EFEFBB #D4D3DD Sirius Tamed +#c21500 #ffc500 Kyoto +#215f00 #e4e4d9 Misty Meadow +#50C9C3 #96DEDA Aqualicious +#616161 #9bc5c3 Moor +#ddd6f3 #faaca8 Almost +#5D4157 #A8CABA Forever Lost +#E6DADA #274046 Winter +#f2709c #ff9472 Nelson +#DAD299 #B0DAB9 Autumn +#D3959B #BFE6BA Candy +#00d2ff #3a7bd5 Reef +#870000 #190A05 The Strain +#B993D6 #8CA6DB Dirty Fog +#649173 #DBD5A4 Earthly +#C9FFBF #FFAFBD Virgin +#606c88 #3f4c6b Ash +#FBD3E9 #BB377D Cherryblossoms +#ADD100 #7B920A Parklife +#FF4E50 #F9D423 Dance To Forget +#F0C27B #4B1248 Starfall +#000000 #e74c3c Red Mist +#AAFFA9 #11FFBD Teal Love +#B3FFAB #12FFF7 Neon Life +#780206 #061161 Man of Steel +#9D50BB #6E48AA Amethyst +#556270 #FF6B6B Cheer Up Emo Kid +#70e1f5 #ffd194 Shore +#00c6ff #0072ff Facebook Messenger +#fe8c00 #f83600 SoundCloud +#52c234 #061700 Behongo +#485563 #29323c ServQuick +#83a4d4 #b6fbff Friday +#FDFC47 #24FE41 Martini +#abbaab #ffffff Metallic Toad +#73C8A9 #373B44 Between The Clouds +#D38312 #A83279 Crazy Orange I +#1e130c #9a8478 Hersheys +#948E99 #2E1437 Talking To Mice Elf +#360033 #0b8793 Purple Bliss +#FFA17F #00223E Predawn +#43cea2 #185a9d Endless River +#ffb347 #ffcc33 Pastel Orange at the Sun +#6441A5 #2a0845 Twitch +#ff0084 #33001b Flickr +#00bf8f #001510 Vine +#136a8a #267871 Turquoise flow +#8e9eab #eef2f3 Portrait +#7b4397 #dc2430 Virgin America +#D1913C #FFD194 Koko Caramel +#F1F2B5 #135058 Fresh Turboscent +#6A9113 #141517 Green to dark +#004FF9 #FFF94C Ukraine +#525252 #3d72b4 Curiosity Blue +#BA8B02 #181818 Dark Knight +#ee9ca7 #ffdde1 Piglet +#304352 #d7d2cc Lizard +#CCCCB2 #757519 Sage Persuasion +#2c3e50 #3498db Between Night and Day +#fc00ff #00dbde Timber +#e53935 #e35d5b Passion +#005C97 #363795 Clear Sky +#f46b45 #eea849 Master Card +#00C9FF #92FE9D Back To Earth +#673AB7 #512DA8 Deep Purple +#76b852 #8DC26F Little Leaf +#8E0E00 #1F1C18 Netflix +#FFB75E #ED8F03 Light Orange +#c2e59c #64b3f4 Green and Blue +#403A3E #BE5869 Poncho +#C02425 #F0CB35 Back to the Future +#B24592 #F15F79 Blush +#457fca #5691c8 Inbox +#6a3093 #a044ff Purplin +#eacda3 #d6ae7b Pale Wood +#fd746c #ff9068 Haikus +#114357 #F29492 Pizelex +#1e3c72 #2a5298 Joomla +#2F7336 #AA3A38 Christmas +#5614B0 #DBD65C Minnesota Vikings +#4DA0B0 #D39D38 Miami Dolphins +#5A3F37 #2C7744 Forest +#2980b9 #2c3e50 Nighthawk +#0099F7 #F11712 Superman +#834d9b #d04ed6 Suzy +#4B79A1 #283E51 Dark Skies +#000000 #434343 Deep Space +#4CA1AF #C4E0E5 Decent +#E0EAFC #CFDEF3 Colors Of Sky +#BA5370 #F4E2D8 Purple White +#ff4b1f #1fddff Ali +#f7ff00 #db36a4 Alihossein +#a80077 #66ff00 Shahabi +#1D4350 #A43931 Red Ocean +#EECDA3 #EF629F Tranquil +#16BFFD #CB3066 Transfile +#ff4b1f #ff9068 Sylvia +#FF5F6D #FFC371 Sweet Morning +#2196f3 #f44336 Politics +#00d2ff #928DAB Bright Vault +#3a7bd5 #3a6073 Solid Vault +#0B486B #F56217 Sunset +#e96443 #904e95 Grapefruit Sunset +#2C3E50 #4CA1AF Deep Sea Space +#2C3E50 #FD746C Dusk +#F00000 #DC281E Minimal Red +#141E30 #243B55 Royal +#42275a #734b6d Mauve +#000428 #004e92 Frost +#56ab2f #a8e063 Lush +#cb2d3e #ef473a Firewatch +#f79d00 #64f38c Sherbert +#f85032 #e73827 Blood Red +#fceabb #f8b500 Sun on the Horizon +#808080 #3fada8 IIIT Delhi +#ffd89b #19547b Jupiter +#bdc3c7 #2c3e50 50 Shades of Grey +#BE93C5 #7BC6CC Dania +#A1FFCE #FAFFD1 Limeade +#4ECDC4 #556270 Disco +#3a6186 #89253e Love Couple +#ef32d9 #89fffd Azure Pop +#de6161 #2657eb Nepal +#ff00cc #333399 Cosmic Fusion +#fffc00 #ffffff Snapchat +#ff7e5f #feb47b Ed's Sunset Gradient +#00c3ff #ffff1c Brady Brady Fun Fun +#f4c4f3 #fc67fa Black Rosé +#41295a #2F0743 80's Purple +#ee0979 #ff6a00 Ibiza Sunset +#F3904F #3B4371 Dawn +#67B26F #4ca2cd Mild +#3494E6 #EC6EAD Vice City +#DBE6F6 #C5796D Jaipur +#c0c0aa #1cefff Cocoaa Ice +#DCE35B #45B649 EasyMed +#E8CBC0 #636FA4 Rose Colored Lenses +#F0F2F0 #000C40 What lies Beyond +#FFAFBD #ffc3a0 Roseanna +#43C6AC #F8FFAE Honey Dew +#093028 #237A57 Under the Lake +#43C6AC #191654 The Blue Lagoon +#4568DC #B06AB3 Can You Feel The Love Tonight +#0575E6 #021B79 Very Blue +#200122 #6f0000 Love and Liberty +#44A08D #093637 Orca +#6190E8 #A7BFE8 Venice +#34e89e #0f3443 Pacific Dream +#F7971E #FFD200 Learning and Leading +#C33764 #1D2671 Celestial +#20002c #cbb4d4 Purplepine +#D66D75 #E29587 Sha la la +#30E8BF #FF8235 Mini +#B2FEFA #0ED2F7 Maldives +#4AC29A #BDFFF3 Cinnamint +#E44D26 #F16529 Html +#EB5757 #000000 Coal +#F2994A #F2C94C Sunkist +#56CCF2 #2F80ED Blue Skies +#007991 #78ffd6 Chitty Chitty Bang Bang +#000046 #1CB5E0 Visions of Grandeur +#159957 #155799 Crystal Clear +#c0392b #8e44ad Mello +#EF3B36 #FFFFFF Compare Now +#283c86 #45a247 Meridian +#CB356B #BD3F32 Alive +#36D1DC #5B86E5 Scooter +#000000 #0f9b0f Terminal +#1c92d2 #f2fcfe Telegram +#642B73 #C6426E Crimson Tide +#06beb6 #48b1bf Socialive +#d9a7c7 #fffcdc Broken Hearts +#396afc #2948ff Kimoby Is The New Blue +#C9D6FF #E2E2E2 Dull +#7F00FF #E100FF Purpink +#ff9966 #ff5e62 Orange Coral +#22c1c3 #fdbb2d Summer +#e1eec3 #f05053 Velvet Sun +#6D6027 #D3CBB8 Lithium +#74ebd5 #ACB6E5 Digital Water +#fc4a1a #f7b733 Orange Fun +#00F260 #0575E6 Rainbow Blue +#800080 #ffc0cb Pink Flavour +#CAC531 #F3F9A7 Sulphur +#3C3B3F #605C3C Selenium +#D3CCE3 #E9E4F0 Delicate +#00b09b #96c93d Ohhappiness +#fffbd5 #b20a2c Relaxing Red +#23074d #cc5333 Taran Tado +#c94b4b #4b134f Bighead +#FC466B #3F5EFB Sublime Vivid +#FC5C7D #6A82FB Sublime Light +#108dc7 #ef8e38 Pun Yeta +#11998e #38ef7d Quepal +#3E5151 #DECBA4 Sand to Blue +#bc4e9c #f80759 Shifter +#4e54c8 #8f94fb Moon Purple +#333333 #dd1818 Pure Lust +#a8c0ff #3f2b96 Slight Ocean View +#ad5389 #3c1053 eXpresso +#636363 #a2ab58 Shifty +#DA4453 #89216B Vanusa +#005AA7 #FFFDE4 Evening Night +#FFEFBA #FFFFFF Margo +#00B4DB #0083B0 Blue Raspberry +#FDC830 #F37335 Citrus Peel +#ED213A #93291E Sin City Red +#a8ff78 #78ffd6 Summer Dog +#FF416C #FF4B2B Burning Orange +#654ea3 #eaafc8 Ultra Voilet +#009FFF #ec2F4B By Design +#544a7d #ffd452 Kyoo Tah +#8360c3 #2ebf91 Kye Meh +#dd3e54 #6be585 Kyoo Pal +#659999 #f4791f Metapolis +#f12711 #f5af19 Flare +#c31432 #240b36 Witching Hour +#f953c6 #b91d73 Neuromancer +#1f4037 #99f2c8 Harvey +#8E2DE2 #4A00E0 Amin +#FF0099 #493240 Yoda +#373B44 #4286f4 Dark Ocean +#b92b27 #1565C0 Evening Sunshine +#2193b0 #6dd5ed Cool Blues +#ee9ca7 #ffdde1 Piggy Pink +#bdc3c7 #2c3e50 Grade Grey +#2A2D3E #FECB6E Zenta +#6025F5 #FF5555 Lensod +#004680 #4484BA Dark Blu Two +#7ec6bc #ebe717 Lemon Lime +#de8a41 #2ada53 Mango Papaya +#ff0000 #fdcf58 Flame +#36B1C7 #960B33 Blue Red +#1DA1F2 #009ffc Twitter +#B5B9FF #2B2C49 Blue Slate +#9FA0A8 #5C7852 Space Light Green +#DCFFBD #CC86D1 Flower +#E6AE8C #A8CECF Peach Sea +#00fff0 #0083fe Abbas +#05386b #5cdb95 Emerald Sea +#4284DB #29EAC4 Bleem +#554023 #c99846 Coffee Gold +#516b8b #056b3b Compass +#D70652 #FF025E Andreuzza's +#152331 #000000 Moonwalker +#59CDE9 #0A2A88 Hyper Blue +#81ff8a #64965e Neon Green +#d4fc79 #96e6a1 Dusty Grass +#003d4d #00c996 Visual Blue +#2E3192 #1BFFFF Ocean Blue +#D4145A #FBB03B Sanguine +#009245 #FCEE21 Luscious Lime +#662D8C #ED1E79 Purple Lake +#EE9CA7 #FFDDE1 Piglet +#614385 #516395 Kashmir +#02AABD #00CDAC Green Beach +#FF512F #DD2476 Bloody Mary +#FF5F6D #FFC371 Sweet Morning +#11998E #38EF7D Quepal +#C6EA8D #FE90AF Cactus +#EA8D8D #A890FE Yosemite +#D8B5FF #1EAE98 Antarctica +#FF61D2 #FE9090 Exotic +#BFF098 #6FD6FF Toxic +#4E65FF #92EFFD Orbit +#A9F1DF #FFBBBB No Mans +#C33764 #1D2671 Celestial +#93A5CF #E4EfE9 Clean Mirror +#868F96 #596164 Mountain Rock +#09203F #537895 Eternal Constance +#FFECD2 #FCB69F Juicy Peach +#A1C4FD #C2E9FB Winter Neva +#764BA2 #667EEA Plum Plate +#FDFCFB #E2D1C3 Everlasting Sky diff --git a/share/mabox-colorizer/help/css/w3.css b/share/mabox-colorizer/help/css/w3.css new file mode 100644 index 0000000..f50bc47 --- /dev/null +++ b/share/mabox-colorizer/help/css/w3.css @@ -0,0 +1,235 @@ +/* W3.CSS 4.15 December 2020 by Jan Egil and Borge Refsnes */ +html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit} +/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */ +html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0} +article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item} +audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline} +audio:not([controls]){display:none;height:0}[hidden],template{display:none} +a{background-color:transparent}a:active,a:hover{outline-width:0} +abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted} +b,strong{font-weight:bolder}dfn{font-style:italic}mark{background:#ff0;color:#000} +small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline} +sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none} +code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible} +button,input,select,textarea,optgroup{font:inherit;margin:0}optgroup{font-weight:bold} +button,input{overflow:visible}button,select{text-transform:none} +button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button} +button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0} +button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText} +fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em} +legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto} +[type=checkbox],[type=radio]{padding:0} +[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto} +[type=search]{-webkit-appearance:textfield;outline-offset:-2px} +[type=search]::-webkit-search-decoration{-webkit-appearance:none} +::-webkit-file-upload-button{-webkit-appearance:button;font:inherit} +/* End extract */ +html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden} +h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px} +.serif{font-family:serif}.sans-serif{font-family:sans-serif}.cursive{font-family:cursive}.monospace{font-family:monospace} +h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin:10px 0}.wide{letter-spacing:4px} +hr{border:0;border-top:1px solid #eee;margin:20px 0} +.image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit} +.table,.table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.table-all{border:1px solid #ccc} +.bordered tr,.table-all tr{border-bottom:1px solid #ddd}.striped tbody tr:nth-child(even){background-color:#f1f1f1} +.table-all tr:nth-child(odd){background-color:#fff}.table-all tr:nth-child(even){background-color:#f1f1f1} +.hoverable tbody tr:hover,.ul.hoverable li:hover{background-color:#ccc}.centered tr th,.centered tr td{text-align:center} +.table td,.table th,.table-all td,.table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top} +.table th:first-child,.table td:first-child,.table-all th:first-child,.table-all td:first-child{padding-left:16px} +.btn,.button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap} +.btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)} +.btn,.button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none} +.disabled,.btn:disabled,.button:disabled{cursor:not-allowed;opacity:0.3}.disabled *,:disabled *{pointer-events:none} +.btn.disabled:hover,.btn:disabled:hover{box-shadow:none} +.badge,.tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.badge{border-radius:50%} +.ul{list-style-type:none;padding:0;margin:0}.ul li{padding:8px 16px;border-bottom:1px solid #ddd}.ul li:last-child{border-bottom:none} +.tooltip,.display-container{position:relative}.tooltip .text{display:none}.tooltip:hover .text{display:inline-block} +.ripple:active{opacity:0.5}.ripple{transition:opacity 0s} +.input{padding:8px;display:block;border:none;border-bottom:1px solid #ccc;width:100%} +.select{padding:9px 0;width:100%;border:none;border-bottom:1px solid #ccc} +.dropdown-click,.dropdown-hover{position:relative;display:inline-block;cursor:pointer} +.dropdown-hover:hover .dropdown-content{display:block} +.dropdown-hover:first-child,.dropdown-click:hover{background-color:#ccc;color:#000} +.dropdown-hover:hover > .button:first-child,.dropdown-click:hover > .button:first-child{background-color:#ccc;color:#000} +.dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1} +.check,.radio{width:24px;height:24px;position:relative;top:6px} +.sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto} +.bar-block .dropdown-hover,.bar-block .dropdown-click{width:100%} +.bar-block .dropdown-hover .dropdown-content,.bar-block .dropdown-click .dropdown-content{min-width:100%} +.bar-block .dropdown-hover .button,.bar-block .dropdown-click .button{width:100%;text-align:left;padding:8px 16px} +.main,#main{transition:margin-left .4s} +.modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)} +.modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px} +.bar{width:100%;overflow:hidden}.center .bar{display:inline-block;width:auto} +.bar .bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0} +.bar .dropdown-hover,.bar .dropdown-click{position:static;float:left} +.bar .button{white-space:normal} +.bar-block .bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0} +.bar-block.center .bar-item{text-align:center}.block{display:block;width:100%} +.responsive{display:block;overflow-x:auto} +.container:after,.container:before,.panel:after,.panel:before,.row:after,.row:before,.row-padding:after,.row-padding:before, +.cell-row:before,.cell-row:after,.clear:after,.clear:before,.bar:before,.bar:after{content:"";display:table;clear:both} +.col,.half,.third,.twothird,.threequarter,.quarter{float:left;width:100%} +.col.s1{width:8.33333%}.col.s2{width:16.66666%}.col.s3{width:24.99999%}.col.s4{width:33.33333%} +.col.s5{width:41.66666%}.col.s6{width:49.99999%}.col.s7{width:58.33333%}.col.s8{width:66.66666%} +.col.s9{width:74.99999%}.col.s10{width:83.33333%}.col.s11{width:91.66666%}.col.s12{width:99.99999%} +@media (min-width:601px){.col.m1{width:8.33333%}.col.m2{width:16.66666%}.col.m3,.quarter{width:24.99999%}.col.m4,.third{width:33.33333%} +.col.m5{width:41.66666%}.col.m6,.half{width:49.99999%}.col.m7{width:58.33333%}.col.m8,.twothird{width:66.66666%} +.col.m9,.threequarter{width:74.99999%}.col.m10{width:83.33333%}.col.m11{width:91.66666%}.col.m12{width:99.99999%}} +@media (min-width:993px){.col.l1{width:8.33333%}.col.l2{width:16.66666%}.col.l3{width:24.99999%}.col.l4{width:33.33333%} +.col.l5{width:41.66666%}.col.l6{width:49.99999%}.col.l7{width:58.33333%}.col.l8{width:66.66666%} +.col.l9{width:74.99999%}.col.l10{width:83.33333%}.col.l11{width:91.66666%}.col.l12{width:99.99999%}} +.rest{overflow:hidden}.stretch{margin-left:-16px;margin-right:-16px} +.content,.auto{margin-left:auto;margin-right:auto}.content{max-width:980px}.auto{max-width:1140px} +.cell-row{display:table;width:100%}.cell{display:table-cell} +.cell-top{vertical-align:top}.cell-middle{vertical-align:middle}.cell-bottom{vertical-align:bottom} +.hide{display:none!important}.show-block,.show{display:block!important}.show-inline-block{display:inline-block!important} +@media (max-width:1205px){.auto{max-width:95%}} +@media (max-width:600px){.modal-content{margin:0 10px;width:auto!important}.modal{padding-top:30px} +.dropdown-hover.mobile .dropdown-content,.dropdown-click.mobile .dropdown-content{position:relative} +.hide-small{display:none!important}.mobile{display:block;width:100%!important}.bar-item.mobile,.dropdown-hover.mobile,.dropdown-click.mobile{text-align:center} +.dropdown-hover.mobile,.dropdown-hover.mobile .btn,.dropdown-hover.mobile .button,.dropdown-click.mobile,.dropdown-click.mobile .btn,.dropdown-click.mobile .button{width:100%}} +@media (max-width:768px){.modal-content{width:500px}.modal{padding-top:50px}} +@media (min-width:993px){.modal-content{width:900px}.hide-large{display:none!important}.sidebar.collapse{display:block!important}} +@media (max-width:992px) and (min-width:601px){.hide-medium{display:none!important}} +@media (max-width:992px){.sidebar.collapse{display:none}.main{margin-left:0!important;margin-right:0!important}.auto{max-width:100%}} +.top,.bottom{position:fixed;width:100%;z-index:1}.top{top:0}.bottom{bottom:0} +.overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2} +.display-topleft{position:absolute;left:0;top:0}.display-topright{position:absolute;right:0;top:0} +.display-bottomleft{position:absolute;left:0;bottom:0}.display-bottomright{position:absolute;right:0;bottom:0} +.display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)} +.display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)} +.display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)} +.display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)} +.display-container:hover .display-hover{display:block}.display-container:hover span.display-hover{display:inline-block}.display-hover{display:none} +.display-position{position:absolute} +.circle{border-radius:50%} +.round-small{border-radius:2px}.round,.round-medium{border-radius:4px}.round-large{border-radius:8px}.round-xlarge{border-radius:16px}.round-xxlarge{border-radius:32px} +.row-padding,.row-padding>.half,.row-padding>.third,.row-padding>.twothird,.row-padding>.threequarter,.row-padding>.quarter,.row-padding>.col{padding:0 8px} +.container,.panel{padding:0.01em 16px}.panel{margin-top:16px;margin-bottom:16px} +.code,.codespan{font-family:Consolas,"courier new";font-size:16px} +.code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word} +.codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%} +.card,.card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16),0 2px 10px 0 rgba(0,0,0,0.12)} +.card-4,.hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)} +.spin{animation:spin 2s infinite linear}@keyframes spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}} +.animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}} +.animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}} +.animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}} +.animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}} +.animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}} +.animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}} +.animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}} +.animate-input{transition:width 0.4s ease-in-out}.animate-input:focus{width:100%!important} +.opacity,.hover-opacity:hover{opacity:0.60}.opacity-off,.hover-opacity-off:hover{opacity:1} +.opacity-max{opacity:0.25}.opacity-min{opacity:0.75} +.greyscale-max,.grayscale-max,.hover-greyscale:hover,.hover-grayscale:hover{filter:grayscale(100%)} +.greyscale,.grayscale{filter:grayscale(75%)}.greyscale-min,.grayscale-min{filter:grayscale(50%)} +.sepia{filter:sepia(75%)}.sepia-max,.hover-sepia:hover{filter:sepia(100%)}.sepia-min{filter:sepia(50%)} +.tiny{font-size:10px!important}.small{font-size:12px!important}.medium{font-size:15px!important}.large{font-size:18px!important} +.xlarge{font-size:24px!important}.xxlarge{font-size:36px!important}.xxxlarge{font-size:48px!important}.jumbo{font-size:64px!important} +.left-align{text-align:left!important}.right-align{text-align:right!important}.justify{text-align:justify!important}.center{text-align:center!important} +.border-0{border:0!important}.border{border:1px solid #ccc!important} +.border-top{border-top:1px solid #ccc!important}.border-bottom{border-bottom:1px solid #ccc!important} +.border-left{border-left:1px solid #ccc!important}.border-right{border-right:1px solid #ccc!important} +.topbar{border-top:6px solid #ccc!important}.bottombar{border-bottom:6px solid #ccc!important} +.leftbar{border-left:6px solid #ccc!important}.rightbar{border-right:6px solid #ccc!important} +.section,.code{margin-top:16px!important;margin-bottom:16px!important} +.margin{margin:16px!important}.margin-top{margin-top:16px!important}.margin-bottom{margin-bottom:16px!important} +.margin-left{margin-left:16px!important}.margin-right{margin-right:16px!important} +.padding-small{padding:4px 8px!important}.padding{padding:8px 16px!important}.padding-large{padding:12px 24px!important} +.padding-16{padding-top:16px!important;padding-bottom:16px!important}.padding-24{padding-top:24px!important;padding-bottom:24px!important} +.padding-32{padding-top:32px!important;padding-bottom:32px!important}.padding-48{padding-top:48px!important;padding-bottom:48px!important} +.padding-64{padding-top:64px!important;padding-bottom:64px!important} +.padding-top-64{padding-top:64px!important}.padding-top-48{padding-top:48px!important} +.padding-top-32{padding-top:32px!important}.padding-top-24{padding-top:24px!important} +.left{float:left!important}.right{float:right!important} +.button:hover{color:#000!important;background-color:#ccc!important} +.transparent,.hover-none:hover{background-color:transparent!important} +.hover-none:hover{box-shadow:none!important} +/* Colors */ +.amber,.hover-amber:hover{color:#000!important;background-color:#ffc107!important} +.aqua,.hover-aqua:hover{color:#000!important;background-color:#00ffff!important} +.blue,.hover-blue:hover{color:#fff!important;background-color:#2196F3!important} +.light-blue,.hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important} +.brown,.hover-brown:hover{color:#fff!important;background-color:#795548!important} +.cyan,.hover-cyan:hover{color:#000!important;background-color:#00bcd4!important} +.blue-grey,.hover-blue-grey:hover,.blue-gray,.hover-blue-gray:hover{color:#fff!important;background-color:#607d8b!important} +.green,.hover-green:hover{color:#fff!important;background-color:#4CAF50!important} +.light-green,.hover-light-green:hover{color:#000!important;background-color:#8bc34a!important} +.indigo,.hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important} +.khaki,.hover-khaki:hover{color:#000!important;background-color:#f0e68c!important} +.lime,.hover-lime:hover{color:#000!important;background-color:#cddc39!important} +.orange,.hover-orange:hover{color:#000!important;background-color:#ff9800!important} +.deep-orange,.hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important} +.pink,.hover-pink:hover{color:#fff!important;background-color:#e91e63!important} +.purple,.hover-purple:hover{color:#fff!important;background-color:#9c27b0!important} +.deep-purple,.hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important} +.red,.hover-red:hover{color:#fff!important;background-color:#f44336!important} +.sand,.hover-sand:hover{color:#000!important;background-color:#fdf5e6!important} +.teal,.hover-teal:hover{color:#fff!important;background-color:#009688!important} +.yellow,.hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important} +.white,.hover-white:hover{color:#000!important;background-color:#fff!important} +.black,.hover-black:hover{color:#fff!important;background-color:#000!important} +.grey,.hover-grey:hover,.gray,.hover-gray:hover{color:#000!important;background-color:#9e9e9e!important} +.light-grey,.hover-light-grey:hover,.light-gray,.hover-light-gray:hover{color:#000!important;background-color:#f1f1f1!important} +.dark-grey,.hover-dark-grey:hover,.dark-gray,.hover-dark-gray:hover{color:#fff!important;background-color:#616161!important} +.pale-red,.hover-pale-red:hover{color:#000!important;background-color:#ffdddd!important} +.pale-green,.hover-pale-green:hover{color:#000!important;background-color:#ddffdd!important} +.pale-yellow,.hover-pale-yellow:hover{color:#000!important;background-color:#ffffcc!important} +.pale-blue,.hover-pale-blue:hover{color:#000!important;background-color:#ddffff!important} +.text-amber,.hover-text-amber:hover{color:#ffc107!important} +.text-aqua,.hover-text-aqua:hover{color:#00ffff!important} +.text-blue,.hover-text-blue:hover{color:#2196F3!important} +.text-light-blue,.hover-text-light-blue:hover{color:#87CEEB!important} +.text-brown,.hover-text-brown:hover{color:#795548!important} +.text-cyan,.hover-text-cyan:hover{color:#00bcd4!important} +.text-blue-grey,.hover-text-blue-grey:hover,.text-blue-gray,.hover-text-blue-gray:hover{color:#607d8b!important} +.text-green,.hover-text-green:hover{color:#4CAF50!important} +.text-light-green,.hover-text-light-green:hover{color:#8bc34a!important} +.text-indigo,.hover-text-indigo:hover{color:#3f51b5!important} +.text-khaki,.hover-text-khaki:hover{color:#b4aa50!important} +.text-lime,.hover-text-lime:hover{color:#cddc39!important} +.text-orange,.hover-text-orange:hover{color:#ff9800!important} +.text-deep-orange,.hover-text-deep-orange:hover{color:#ff5722!important} +.text-pink,.hover-text-pink:hover{color:#e91e63!important} +.text-purple,.hover-text-purple:hover{color:#9c27b0!important} +.text-deep-purple,.hover-text-deep-purple:hover{color:#673ab7!important} +.text-red,.hover-text-red:hover{color:#f44336!important} +.text-sand,.hover-text-sand:hover{color:#fdf5e6!important} +.text-teal,.hover-text-teal:hover{color:#009688!important} +.text-yellow,.hover-text-yellow:hover{color:#d2be0e!important} +.text-white,.hover-text-white:hover{color:#fff!important} +.text-black,.hover-text-black:hover{color:#000!important} +.text-grey,.hover-text-grey:hover,.text-gray,.hover-text-gray:hover{color:#757575!important} +.text-light-grey,.hover-text-light-grey:hover,.text-light-gray,.hover-text-light-gray:hover{color:#f1f1f1!important} +.text-dark-grey,.hover-text-dark-grey:hover,.text-dark-gray,.hover-text-dark-gray:hover{color:#3a3a3a!important} +.border-amber,.hover-border-amber:hover{border-color:#ffc107!important} +.border-aqua,.hover-border-aqua:hover{border-color:#00ffff!important} +.border-blue,.hover-border-blue:hover{border-color:#2196F3!important} +.border-light-blue,.hover-border-light-blue:hover{border-color:#87CEEB!important} +.border-brown,.hover-border-brown:hover{border-color:#795548!important} +.border-cyan,.hover-border-cyan:hover{border-color:#00bcd4!important} +.border-blue-grey,.hover-border-blue-grey:hover,.border-blue-gray,.hover-border-blue-gray:hover{border-color:#607d8b!important} +.border-green,.hover-border-green:hover{border-color:#4CAF50!important} +.border-light-green,.hover-border-light-green:hover{border-color:#8bc34a!important} +.border-indigo,.hover-border-indigo:hover{border-color:#3f51b5!important} +.border-khaki,.hover-border-khaki:hover{border-color:#f0e68c!important} +.border-lime,.hover-border-lime:hover{border-color:#cddc39!important} +.border-orange,.hover-border-orange:hover{border-color:#ff9800!important} +.border-deep-orange,.hover-border-deep-orange:hover{border-color:#ff5722!important} +.border-pink,.hover-border-pink:hover{border-color:#e91e63!important} +.border-purple,.hover-border-purple:hover{border-color:#9c27b0!important} +.border-deep-purple,.hover-border-deep-purple:hover{border-color:#673ab7!important} +.border-red,.hover-border-red:hover{border-color:#f44336!important} +.border-sand,.hover-border-sand:hover{border-color:#fdf5e6!important} +.border-teal,.hover-border-teal:hover{border-color:#009688!important} +.border-yellow,.hover-border-yellow:hover{border-color:#ffeb3b!important} +.border-white,.hover-border-white:hover{border-color:#fff!important} +.border-black,.hover-border-black:hover{border-color:#000!important} +.border-grey,.hover-border-grey:hover,.border-gray,.hover-border-gray:hover{border-color:#9e9e9e!important} +.border-light-grey,.hover-border-light-grey:hover,.border-light-gray,.hover-border-light-gray:hover{border-color:#f1f1f1!important} +.border-dark-grey,.hover-border-dark-grey:hover,.border-dark-gray,.hover-border-dark-gray:hover{border-color:#616161!important} +.border-pale-red,.hover-border-pale-red:hover{border-color:#ffe7e7!important}.border-pale-green,.hover-border-pale-green:hover{border-color:#e7ffe7!important} +.border-pale-yellow,.hover-border-pale-yellow:hover{border-color:#ffffcc!important}.border-pale-blue,.hover-border-pale-blue:hover{border-color:#e7ffff!important} diff --git a/share/mabox-colorizer/help/en.html b/share/mabox-colorizer/help/en.html new file mode 100644 index 0000000..5c55762 --- /dev/null +++ b/share/mabox-colorizer/help/en.html @@ -0,0 +1,1001 @@ + + +Mabox Colorizer + + + + + + + +
+ +
+ +
+ +

Mabox Colorizer pre-release

+

a set of tools to easily customize
your Mabox Linux Desktop

+ +

Easily change look and feel of: +

    +
  • Openbox theme (window decorations)
  • +
  • Menu/Sidepanels and other jgmenu-based Mabox tools
  • +
  • Conkies
  • +
  • Generate themes for all above from Wallpaper colors
  • + +

+

 Try Randomizer to change themes quickly. You can securely reset to defaults at any time.

+
+
+

Quickly randomize
colorschemes for...

+ +
+
+
+

Reset to defaults...
(restore fresh install settings)

+ +
+
+
+
+

Colorizer offers two modes of operation: basic and advanced. +

    +
  • basic - you use this window - easy and fast
  • +
  • advanced - using dynamically generated menus - more customization possibilities, unlimited choice of colors. Tuning.
  • +
+

+ + + +
+
+ + + + + + + + + + + + + + + + +
+ + + + + + diff --git a/share/mabox-colorizer/help/img/bold.png b/share/mabox-colorizer/help/img/bold.png new file mode 100644 index 0000000000000000000000000000000000000000..95baf5c62bdfe08728a57d2a88c0d9c1ad96184f GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^HbBhB!2~4#=)7nKQq09po*^6@9Je3(KLB#;JzX3_ zJdVE&b>w1Dv*JZ+e*5W9{<_=L x#J|Ni3I^Xl5#t<6opd*d&D&MMKi?OamY^Bm|D22WQ%mvv4FO#ow_P#^#R literal 0 HcmV?d00001 diff --git a/share/mabox-colorizer/help/img/colorizer.png b/share/mabox-colorizer/help/img/colorizer.png new file mode 100644 index 0000000000000000000000000000000000000000..9643093548d17964ea48ee27cb1dd1cc12802edb GIT binary patch literal 313 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 literal 0 HcmV?d00001 diff --git a/share/mabox-colorizer/help/img/dots.png b/share/mabox-colorizer/help/img/dots.png new file mode 100644 index 0000000000000000000000000000000000000000..35d60d7db26d329fc0680a28f7eec26cb6082091 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^HbBhB!2~4#=)7nKQq09po*^6@9Je3(KLBz)JY5_^ zJdP*NG0&Gf9Kh_u<1El)RrSKk$`AwuC)-|fo>jPEs@#MbGwtjD6>w*YCDr)!yw|+W o!FWVN&iC@-r(aeqW@ltzkXS7(d|hVqQlOa(p00i_>zopr0NoNSTL1t6 literal 0 HcmV?d00001 diff --git a/share/mabox-colorizer/help/img/flat.png b/share/mabox-colorizer/help/img/flat.png new file mode 100644 index 0000000000000000000000000000000000000000..a0d66f0d825c1b4ba1d7a77eb256f298dd3ea1a9 GIT binary patch literal 3544 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 literal 0 HcmV?d00001 diff --git a/share/mabox-colorizer/help/img/horizontal.png b/share/mabox-colorizer/help/img/horizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..b825f45da29b489f74837b221b0bc4cbd441c4b0 GIT binary patch literal 2822 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 literal 0 HcmV?d00001 diff --git a/share/mabox-colorizer/help/img/mirrorhorizontal.png b/share/mabox-colorizer/help/img/mirrorhorizontal.png new file mode 100644 index 0000000000000000000000000000000000000000..cd42d5b587c4e6529172244dfd15b1fba4a31264 GIT binary patch literal 3664 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 N22WQ%mvv4FO#l%#Hjw}T literal 0 HcmV?d00001 diff --git a/share/mabox-colorizer/help/img/pyramid.png b/share/mabox-colorizer/help/img/pyramid.png new file mode 100644 index 0000000000000000000000000000000000000000..62d998b8d87d3687bd3d301c884b05659b03a91c GIT binary patch literal 7900 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 literal 0 HcmV?d00001 diff --git a/share/mabox-colorizer/help/img/splitvertical.png b/share/mabox-colorizer/help/img/splitvertical.png new file mode 100644 index 0000000000000000000000000000000000000000..0c99790dabeb7cf97002675f0a9b934631dfd8fb GIT binary patch literal 2641 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 literal 0 HcmV?d00001 diff --git a/share/mabox-colorizer/help/img/theme.sh.webp b/share/mabox-colorizer/help/img/theme.sh.webp new file mode 100644 index 0000000000000000000000000000000000000000..0f7335857f00fc118f04be186a08b9ff8f8fd023 GIT binary patch literal 8898 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 jkE#EzqBS2Iu3cq_Jz_QSQ(0b2qTSF3a9W zzq?l!J4t3B;qE{8++l`cIrn^=-~G;<^L^)h7u;sEVQ>KfAiy&LG19-TvViANKs^u; zE`f>z?{pPkVm*zasD`3a;gSH$fdHQb7=}jbSx=)Vil*5g-~s|bVA=`LG=p@qo<;{K zh5}EUcEX?#2m}cP!`Qv-k%5>7vjPb4Lx5q%V;V&TXqw_@6wnF;gie54ngz2*60%33 z&jzrcM*@&N@(34H1A%b@OlU`h3Q#och``JM0{jrTFMFg&2G(i(PzJ3)01MUAP~{r- z9$`WN0iFnO&K0a&laM{~1R2x<0aQ*4RjwhX!F&J${1FK4JyL-HO+h`4Khj~>OqieF zvVK;@pAIyQPHJqzym9;1=(2r(Y$7Km4?$ItGn?_l}x@`Ar+G{1VvL1Hq z-(BrulMMF4jf-|3O=;YI^kUnjo8)AM)C|0_{H~u>!1Pp@++UJ6ke|zZm5= zjPLpBn?_M_{EE5K@;472G1@LIQ!*bqnFo}tdcv?| zuCb*g?|cbqU78@rCo`lxEhGE!rYmP|NHtot_V(UxY#5DsP!~x|s-qRP3n4E@Uua1I z$<1VVPe~?NLW5rZDKVQ)VWoB9V`EodxG?1TiKBkQ>Yqu=Pf->bj)@FuOQTxeFKCvT z7s*u#&tzqEcu1Jhcs&IYlX{+ z)~a`YSF7B#YlpsM&+i*ZOr5yysjR0Gjap)~_h#{)zg_dqdGf`~v_!2+A@V!xi}s)W ztRuK)N8W~Z$)EvtI-hY+7ai(*WT2il?R0|*@fr5bPp`?0k$&CoICt&p)o$EA-|DWc zYCztCt22I-+*N+C7K@1$IWB&c^^44?V^yRyQesO@(>A_)x>ciDZpvD>ae4QjpZ)pC zo8FW?`A1%|eEF*uQY5AsT%Vnpe6nEQlJnKw-J{C%fG+CQ1*fudPI*LPk=&MpG8UiX zVw)@HNxxA>&L&=q}bz9WQ0g8QxH-Gp-fsBXOUrqlnYTJed;pfoey#k|J$1wn{E&h zVDD#zha)av#;%8P9CEmd*oq0Omt(xNl+f}B9;DISN`eh!7P?x zZ`E)2p6I{b?e&XQR=W|yOlj%yO(#D7O08KeM;Y62bIs+f=hwy^JN&?-iYMduuyxo~N71uH#VJ7mP`v{4bcVpetgA zCeV4SO&PUFFBPK?B@(3~K6T}@k0zNEI8BSR(c)G)J?14jd74ch`C%bot%xeJK6pM2 zdinXA2ayIXix`s|tR{nXe4N;o^CBva6!t_Jtdd|Dp>AGq_+Eb^wJy>=QnmZj(V5Xv z1nC(Z7^^${_%HwA72VqwK^~=wi$jrz^(|bgkg`z-DMem`o+k1%^c%GPX1}q?AnoyZ z#72FjTr6S}LnJ7fll_Oa#*bgg+g9Q9Q863eE6nt={>8~dOygrBaO8v8BNc$YM?MgL zmri+N#!~F^j`M@+#3X_adH_Z>)zO`I~0mI zM0Zw~_OIIFJ#@TQ6p^ZC;|$&T_xyvt#W`=kV$&;dzo(<(%v+9IW6}t2*W&)ILhsem zGmF>mzkFPL=hB-y%fC}>sCJ!#}&{*qcA>qU0pvD zZ&_fLhRSIE0r$;21FjL&#)HdL5eYVZj2vTz`mTLJ&dD%DPZXNz!S=3(4xb;BS>~E8 zbVz{lxm+!+gKjTH6O!lzQ?hELvBf>eh$MtaV^GuW!YW(h7leCbj%thD8ao)=;asQ;|Ghw zMgT2??|B-$-5_kxVITn#;P#uiU4A%oEx-u?CWnc@#F=Xb>S@8u5@br?o?1nxVZ z2K6-IJ$|q_Yy>9WBZ5xNjP$v~HZTkX1O!Nc?RylU*h($ M07*qoM6N<$g3U+{T>t<8 literal 0 HcmV?d00001 diff --git a/share/mabox-colorizer/help/pl.html b/share/mabox-colorizer/help/pl.html new file mode 100644 index 0000000..926f266 --- /dev/null +++ b/share/mabox-colorizer/help/pl.html @@ -0,0 +1,1028 @@ + + +Mabox Colorizer + + + + + +

+ +
+ +
+ +
+ +

Mabox Colorizer pre-release

+

narzędzie do dostrajania motywów
pulpitu Mabox Linux

+

Z łatwością zmienisz wygląd: +

    +
  • Motywu Openbox (dekoracje okien)
  • +
  • Menu oraz Paneli bocznych oraz innych bazujących na jgmenu narzędzi Mabox
  • +
  • Conky
  • +
  • Generowanie motywów na podstawie kolorystyki tapety
  • +

+

 Wypróbuj Randomizer - szybko zmieniaj motywy. Bezpiecznie zresetuj gdy chcesz.

+
+
+

Ustaw losowy
motyw kolorystyczny dla...

+ +
+
+
+

Resetuj do ustawień domyślnych...
(jak zaraz po instalacji)

+ +
+
+
+
+

Colorizer oferuje dwa tryby pracy: podstawowy i zaawansowany. +

    +
  • podstawowy - korzystasz z tego okna - łatwo i szybko
  • +
  • zaawansowany - za pomocą dynamicznie generowanych menu - większe możliwości dostosowania, nieograniczony wybór kolorów. Dopieszczanie.
  • +
+

+
+ +
+ + + + + + + + + + + + + + + + + +
+ + + + + + diff --git a/share/mabox-colorizer/img/colorizer-ob.png b/share/mabox-colorizer/img/colorizer-ob.png new file mode 100644 index 0000000000000000000000000000000000000000..e687f731c4b4d1e39982b75e8b4b964feacc5d7d GIT binary patch literal 4698 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 literal 0 HcmV?d00001 diff --git a/share/mabox-colorizer/readable_colors.csv b/share/mabox-colorizer/readable_colors.csv new file mode 100644 index 0000000..50c540d --- /dev/null +++ b/share/mabox-colorizer/readable_colors.csv @@ -0,0 +1,13 @@ +Background color,Foreground color,name +#000000,#FFFFFF,Black,White +#000000,#CCCCCC,Black,Silver +#000000,#FFFF00,Black,Yellow +#000000,#FFCC66,Black,Goldenrod +#000000,#FF9900,Black,Orange +#000000,#00FF00,Black,Green +#000000,#00FFFF,Black,Cyan +#000000,#FF00FF,Black,Magenta +#696969,#DDDDDD,, +#4c26bc,#b7dc46,, +#eaef42,#1e14c0,, +#591513,#a3e7e9,, diff --git a/share/mabox-colorizer/themes/MBcolors/openbox-3/bullet.xbm b/share/mabox-colorizer/themes/MBcolors/openbox-3/bullet.xbm new file mode 100644 index 0000000..a0ee0a3 --- /dev/null +++ b/share/mabox-colorizer/themes/MBcolors/openbox-3/bullet.xbm @@ -0,0 +1,4 @@ +#define bullet_width 8 +#define bullet_height 8 +static unsigned char bullet_bits[] = { + 0x00, 0x08, 0x10, 0x20, 0x20, 0x10, 0x08, 0x00 }; diff --git a/share/mabox-colorizer/themes/MBcolors/openbox-3/close.xbm b/share/mabox-colorizer/themes/MBcolors/openbox-3/close.xbm new file mode 100644 index 0000000..8b0e033 --- /dev/null +++ b/share/mabox-colorizer/themes/MBcolors/openbox-3/close.xbm @@ -0,0 +1,4 @@ +#define close_width 8 +#define close_height 8 +static unsigned char close_bits[] = { + 0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81 }; diff --git a/share/mabox-colorizer/themes/MBcolors/openbox-3/desk.xbm b/share/mabox-colorizer/themes/MBcolors/openbox-3/desk.xbm new file mode 100644 index 0000000..daec424 --- /dev/null +++ b/share/mabox-colorizer/themes/MBcolors/openbox-3/desk.xbm @@ -0,0 +1,4 @@ +#define desk_width 8 +#define desk_height 8 +static unsigned char desk_bits[] = { + 0x18, 0x24, 0x42, 0x81, 0x81, 0x42, 0x24, 0x18 }; diff --git a/share/mabox-colorizer/themes/MBcolors/openbox-3/desk_toggled.xbm b/share/mabox-colorizer/themes/MBcolors/openbox-3/desk_toggled.xbm new file mode 100644 index 0000000..6b42c6a --- /dev/null +++ b/share/mabox-colorizer/themes/MBcolors/openbox-3/desk_toggled.xbm @@ -0,0 +1,4 @@ +#define desk_toggled_width 8 +#define desk_toggled_height 8 +static unsigned char desk_toggled_bits[] = { + 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x7e, 0x3c, 0x18 }; diff --git a/share/mabox-colorizer/themes/MBcolors/openbox-3/iconify.xbm b/share/mabox-colorizer/themes/MBcolors/openbox-3/iconify.xbm new file mode 100644 index 0000000..5bcf187 --- /dev/null +++ b/share/mabox-colorizer/themes/MBcolors/openbox-3/iconify.xbm @@ -0,0 +1,4 @@ +#define iconify_width 8 +#define iconify_height 8 +static unsigned char iconify_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff }; diff --git a/share/mabox-colorizer/themes/MBcolors/openbox-3/max.xbm b/share/mabox-colorizer/themes/MBcolors/openbox-3/max.xbm new file mode 100644 index 0000000..c6030c2 --- /dev/null +++ b/share/mabox-colorizer/themes/MBcolors/openbox-3/max.xbm @@ -0,0 +1,4 @@ +#define max_width 8 +#define max_height 8 +static unsigned char max_bits[] = { + 0xff, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xff }; diff --git a/share/mabox-colorizer/themes/MBcolors/openbox-3/max_toggled.xbm b/share/mabox-colorizer/themes/MBcolors/openbox-3/max_toggled.xbm new file mode 100644 index 0000000..1484a66 --- /dev/null +++ b/share/mabox-colorizer/themes/MBcolors/openbox-3/max_toggled.xbm @@ -0,0 +1,4 @@ +#define max_toggled_width 8 +#define max_toggled_height 8 +static unsigned char max_toggled_bits[] = { + 0xfc, 0x80, 0xbf, 0xa1, 0xa1, 0xa1, 0x21, 0x3f }; diff --git a/share/mabox-colorizer/themes/MBcolors/openbox-3/shade.xbm b/share/mabox-colorizer/themes/MBcolors/openbox-3/shade.xbm new file mode 100644 index 0000000..34ea452 --- /dev/null +++ b/share/mabox-colorizer/themes/MBcolors/openbox-3/shade.xbm @@ -0,0 +1,4 @@ +#define shade_width 8 +#define shade_height 8 +static unsigned char shade_bits[] = { + 0x18, 0x24, 0x42, 0x81, 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/MBcolors/openbox-3/shade_toggled.xbm b/share/mabox-colorizer/themes/MBcolors/openbox-3/shade_toggled.xbm new file mode 100644 index 0000000..f62073b --- /dev/null +++ b/share/mabox-colorizer/themes/MBcolors/openbox-3/shade_toggled.xbm @@ -0,0 +1,4 @@ +#define shade_toggled_width 8 +#define shade_toggled_height 8 +static unsigned char shade_toggled_bits[] = { + 0x81, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/MBcolors/openbox-3/themerc b/share/mabox-colorizer/themes/MBcolors/openbox-3/themerc new file mode 100644 index 0000000..6c4cf59 --- /dev/null +++ b/share/mabox-colorizer/themes/MBcolors/openbox-3/themerc @@ -0,0 +1,77 @@ +border.width: 1 +padding.width: 4 +padding.height: 4 +window.client.padding.width: 0 +window.client.padding.height: 0 +window.handle.width: 4 + +window.active.label.text.font: shadow=n:shadowtint=70:shadowoffset=1 +window.inactive.label.text.font: shadow=n:shadowtint=20:shadowoffset=1 + +*.active.border.color: #111111 +*.inactive.border.color: #292929 + +window.active.grip.bg: parentrelative +window.inactive.grip.bg: parentrelative +window.*.title.bg: flat vertical gradient +window.*.label.bg: parentrelative +window.*.button.*.bg: parentrelative +window.*.handle.bg: flat vertical gradient +window.*.text.justify: center + +window.active.title.bg.color.splitTo: #add2ca +window.active.title.bg.color: #579C8E +window.active.title.bg.colorTo: #3d6e64 +window.active.title.bg.colorTo.splitTo: #539588 +window.active.label.text.color: #ffffff + +window.inactive.title.bg.color.splitTo: #7e7e7e +window.inactive.title.bg.color: #383838 +window.inactive.title.bg.colorTo: #1f1f1f +window.inactive.title.bg.colorTo.splitTo: #3e3e3e +window.inactive.label.text.color: #898989 + +window.active.button.*.unpressed.image.color: #ffffff +window.active.button.*.disabled.image.color: #8fbdb3 +window.active.button.*.hover.image.color: #abcdc6 +window.active.button.*.pressed.image.color: #2b4e47 +window.active.handle.bg.color: #383838 +window.active.handle.bg.colorTo: #2a2a2a +window.active.grip.bg.color: #383838 +window.active.grip.bg.colorTo: #2a2a2a + +window.inactive.button.*.unpressed.image.color: #898989 +window.inactive.button.*.disabled.image.color: #6e6e6e +window.inactive.button.*.hover.image.color: #dadada +window.inactive.button.*.pressed.image.color: #1c1c1c +window.inactive.handle.bg.color: #383838 +window.inactive.handle.bg.colorTo: #252525 + +menu.title.bg: flat vertical gradient +menu.title.bg.color: #579c8e +menu.title.bg.colorTo: #41756a +menu.title.text.color: #ffffff +menu.items.bg: flat diagonal gradient +menu.items.bg.color: #383838 +menu.items.bg.colorTo: #2a2a2a +menu.items.text.color: #dadada +menu.items.disabled.text.color: #6e6e6e +menu.items.active.bg: flat vertical gradient +menu.items.active.bg.color: #579c8e +menu.items.active.bg.colorTo: #41756a +menu.items.active.text.color: #ffffff +menu.items.active.disabled.text.color: #8fbdb3 +menu.separator.color: #292929 +menu.separator.padding.width: 0 +menu.separator.width: 1 + +osd.bg: flat diagonal gradient +osd.bg.color: #383838 +osd.bg.colorTo: #2a2a2a +osd.unhilight.bg: flat diagonal gradient +osd.unhilight.bg.color: #383838 +osd.unhilight.bg.colorTo: #2a2a2a +osd.hilight.bg: flat diagonal gradient +osd.hilight.bg.color: #579c8e +osd.hilight.bg.colorTo: #41756a + diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/close.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/close.xbm new file mode 100644 index 0000000..e1d9d67 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/close.xbm @@ -0,0 +1,5 @@ +#define close_width 12 +#define close_height 12 +static unsigned char close_bits[] = { + 0x00, 0x00, 0x06, 0x06, 0x0e, 0x07, 0x9c, 0x03, 0xb8, 0x01, 0x70, 0x00, + 0xe0, 0x00, 0xd8, 0x01, 0x9c, 0x03, 0x0e, 0x07, 0x06, 0x06, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/close_hover.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/close_hover.xbm new file mode 100644 index 0000000..de852f9 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/close_hover.xbm @@ -0,0 +1,5 @@ +#define close_hover_width 12 +#define close_hover_height 12 +static unsigned char close_hover_bits[] = { + 0x00, 0x00, 0x06, 0x06, 0x0e, 0x07, 0x9c, 0x03, 0x98, 0x01, 0x00, 0x00, + 0x00, 0x00, 0x98, 0x01, 0x9c, 0x03, 0x0e, 0x07, 0x06, 0x06, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/close_pressed.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/close_pressed.xbm new file mode 100644 index 0000000..371a6b4 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/close_pressed.xbm @@ -0,0 +1,5 @@ +#define close_pressed_width 12 +#define close_pressed_height 12 +static unsigned char close_pressed_bits[] = { + 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/desk.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/desk.xbm new file mode 100644 index 0000000..f2b2ff7 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/desk.xbm @@ -0,0 +1,5 @@ +#define desk_width 12 +#define desk_height 12 +static unsigned char desk_bits[] = { + 0x00, 0x00, 0x9e, 0x07, 0x9e, 0x04, 0x9e, 0x04, 0x9e, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x9e, 0x07, 0x92, 0x04, 0x92, 0x04, 0x9e, 0x07, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/desk_hover.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/desk_hover.xbm new file mode 100644 index 0000000..b6059d4 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/desk_hover.xbm @@ -0,0 +1,5 @@ +#define desk_hover_width 12 +#define desk_hover_height 12 +static unsigned char desk_hover_bits[] = { + 0x00, 0x00, 0x9e, 0x07, 0x9e, 0x07, 0x9e, 0x07, 0x9e, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x9e, 0x07, 0x9e, 0x07, 0x9e, 0x07, 0x9e, 0x07, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/desk_pressed.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/desk_pressed.xbm new file mode 100644 index 0000000..f057b9a --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/desk_pressed.xbm @@ -0,0 +1,5 @@ +#define desk_pressed_width 12 +#define desk_pressed_height 12 +static unsigned char desk_pressed_bits[] = { + 0x00, 0x00, 0x02, 0x04, 0x0c, 0x03, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x0c, 0x03, 0x02, 0x04, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/desk_toggled.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/desk_toggled.xbm new file mode 100644 index 0000000..a36dcd4 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/desk_toggled.xbm @@ -0,0 +1,5 @@ +#define desk_toggled_width 12 +#define desk_toggled_height 12 +static unsigned char desk_toggled_bits[] = { + 0x00, 0x00, 0x9e, 0x07, 0x9e, 0x07, 0x9e, 0x07, 0x9e, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x9e, 0x07, 0x9e, 0x07, 0x9e, 0x07, 0x9e, 0x07, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/desk_toggled_hover.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/desk_toggled_hover.xbm new file mode 100644 index 0000000..0dc2f60 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/desk_toggled_hover.xbm @@ -0,0 +1,5 @@ +#define desk_toggled_hover_width 12 +#define desk_toggled_hover_height 12 +static unsigned char desk_toggled_hover_bits[] = { + 0x00, 0x00, 0x9e, 0x07, 0x9e, 0x04, 0x9e, 0x04, 0x9e, 0x07, 0x00, 0x00, + 0x00, 0x00, 0x9e, 0x07, 0x92, 0x04, 0x92, 0x04, 0x9e, 0x07, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/desk_toggled_pressed.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/desk_toggled_pressed.xbm new file mode 100644 index 0000000..876649c --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/desk_toggled_pressed.xbm @@ -0,0 +1,5 @@ +#define desk_toggled_pressed_width 12 +#define desk_toggled_pressed_height 12 +static unsigned char desk_toggled_pressed_bits[] = { + 0x00, 0x00, 0x02, 0x04, 0x0c, 0x03, 0x0c, 0x03, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x03, 0x0c, 0x03, 0x02, 0x04, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/iconify.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/iconify.xbm new file mode 100644 index 0000000..891087b --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/iconify.xbm @@ -0,0 +1,5 @@ +#define iconify_width 12 +#define iconify_height 12 +static unsigned char iconify_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x07, 0xfe, 0x07, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/iconify_hover.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/iconify_hover.xbm new file mode 100644 index 0000000..53b1ba6 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/iconify_hover.xbm @@ -0,0 +1,5 @@ +#define iconify_hover_width 12 +#define iconify_hover_height 12 +static unsigned char iconify_hover_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x03, 0xfc, 0x03, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/iconify_pressed.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/iconify_pressed.xbm new file mode 100644 index 0000000..21267b6 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/iconify_pressed.xbm @@ -0,0 +1,5 @@ +#define iconify_pressed_width 12 +#define iconify_pressed_height 12 +static unsigned char iconify_pressed_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x01, 0xf8, 0x01, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/max.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/max.xbm new file mode 100644 index 0000000..f397ac5 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/max.xbm @@ -0,0 +1,5 @@ +#define max_width 12 +#define max_height 12 +static unsigned char max_bits[] = { + 0x00, 0x00, 0xfe, 0x07, 0xfe, 0x07, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, + 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, 0xfe, 0x07, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/max_hover.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/max_hover.xbm new file mode 100644 index 0000000..6ef5391 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/max_hover.xbm @@ -0,0 +1,5 @@ +#define max_hover_width 12 +#define max_hover_height 12 +static unsigned char max_hover_bits[] = { + 0xff, 0x0f, 0xff, 0x0f, 0xff, 0x0f, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, + 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0x01, 0x08, 0xff, 0x0f }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/max_toggled.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/max_toggled.xbm new file mode 100644 index 0000000..81f1831 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/max_toggled.xbm @@ -0,0 +1,5 @@ +#define max_toggled_width 12 +#define max_toggled_height 12 +static unsigned char max_toggled_bits[] = { + 0xf0, 0x0f, 0xf0, 0x0f, 0x10, 0x08, 0x10, 0x08, 0xff, 0x08, 0xff, 0x08, + 0x81, 0x08, 0x81, 0x0f, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0xff, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/max_toggled_hover.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/max_toggled_hover.xbm new file mode 100644 index 0000000..e2c8cfa --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/max_toggled_hover.xbm @@ -0,0 +1,5 @@ +#define max_toggled_hover_width 12 +#define max_toggled_hover_height 12 +static unsigned char max_toggled_hover_bits[] = { + 0x00, 0x09, 0x00, 0x05, 0x00, 0x03, 0x00, 0x0f, 0xff, 0x00, 0xff, 0x00, + 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0x81, 0x00, 0xff, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/shade.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/shade.xbm new file mode 100644 index 0000000..875fbbd --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/shade.xbm @@ -0,0 +1,5 @@ +#define shade_width 12 +#define shade_height 12 +static unsigned char shade_bits[] = { + 0x00, 0x00, 0x60, 0x00, 0xf0, 0x00, 0xf8, 0x01, 0xfc, 0x03, 0xfe, 0x07, + 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/shade_hover.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/shade_hover.xbm new file mode 100644 index 0000000..eac4e87 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/shade_hover.xbm @@ -0,0 +1,5 @@ +#define shade_hover_width 12 +#define shade_hover_height 12 +static unsigned char shade_hover_bits[] = { + 0x00, 0x00, 0xfe, 0x07, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/shade_pressed.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/shade_pressed.xbm new file mode 100644 index 0000000..4a39d82 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/shade_pressed.xbm @@ -0,0 +1,5 @@ +#define shade_pressed_width 12 +#define shade_pressed_height 12 +static unsigned char shade_pressed_bits[] = { + 0x00, 0x00, 0xf8, 0x01, 0xf8, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/shade_toggled.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/shade_toggled.xbm new file mode 100644 index 0000000..af8fcb8 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/shade_toggled.xbm @@ -0,0 +1,5 @@ +#define shade_toggled_width 12 +#define shade_toggled_height 12 +static unsigned char shade_toggled_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, 0x60, 0x00, + 0xfe, 0x07, 0xfc, 0x03, 0xf8, 0x01, 0xf0, 0x00, 0x60, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-12/shade_toggled_hover.xbm b/share/mabox-colorizer/themes/obbuttons/big-12/shade_toggled_hover.xbm new file mode 100644 index 0000000..686fb9c --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-12/shade_toggled_hover.xbm @@ -0,0 +1,5 @@ +#define shade_toggled_hover_width 12 +#define shade_toggled_hover_height 12 +static unsigned char shade_toggled_hover_bits[] = { + 0x00, 0x00, 0xfe, 0x07, 0xfe, 0x07, 0x02, 0x04, 0x02, 0x04, 0x02, 0x04, + 0x02, 0x04, 0x02, 0x04, 0xfe, 0x07, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/close.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/close.xbm new file mode 100644 index 0000000..2ee9538 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/close.xbm @@ -0,0 +1,6 @@ +#define close_width 14 +#define close_height 14 +static unsigned char close_bits[] = { + 0x00, 0x00, 0x0e, 0x1c, 0x1e, 0x1e, 0x3e, 0x1f, 0x7c, 0x0f, 0xf8, 0x06, + 0xf0, 0x01, 0xe0, 0x03, 0xd8, 0x07, 0xbc, 0x0f, 0x3e, 0x1f, 0x1e, 0x1e, + 0x0e, 0x1c, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/close_hover.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/close_hover.xbm new file mode 100644 index 0000000..5205dfb --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/close_hover.xbm @@ -0,0 +1,6 @@ +#define close_hover_width 14 +#define close_hover_height 14 +static unsigned char close_hover_bits[] = { + 0x00, 0x00, 0x0e, 0x1c, 0x1e, 0x1e, 0x3e, 0x1f, 0x3c, 0x0f, 0x38, 0x07, + 0x00, 0x00, 0x00, 0x00, 0x38, 0x07, 0x3c, 0x0f, 0x3e, 0x1f, 0x1e, 0x1e, + 0x0e, 0x1c, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/close_pressed.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/close_pressed.xbm new file mode 100644 index 0000000..beb3279 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/close_pressed.xbm @@ -0,0 +1,6 @@ +#define close_pressed_width 14 +#define close_pressed_height 14 +static unsigned char close_pressed_bits[] = { + 0x00, 0x00, 0x0e, 0x1c, 0x0e, 0x1c, 0x0e, 0x1c, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x1c, 0x0e, 0x1c, + 0x0e, 0x1c, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/desk.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/desk.xbm new file mode 100644 index 0000000..c26973b --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/desk.xbm @@ -0,0 +1,6 @@ +#define desk_width 14 +#define desk_height 14 +static unsigned char desk_bits[] = { + 0x00, 0x00, 0x3e, 0x1f, 0x3e, 0x11, 0x3e, 0x11, 0x3e, 0x11, 0x3e, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x1f, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, + 0x3e, 0x1f, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/desk_hover.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/desk_hover.xbm new file mode 100644 index 0000000..c096ce7 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/desk_hover.xbm @@ -0,0 +1,6 @@ +#define desk_hover_width 14 +#define desk_hover_height 14 +static unsigned char desk_hover_bits[] = { + 0x00, 0x00, 0x3e, 0x1f, 0x3e, 0x1f, 0x3e, 0x1f, 0x3e, 0x1f, 0x3e, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x1f, 0x3e, 0x1f, 0x3e, 0x1f, 0x3e, 0x1f, + 0x3e, 0x1f, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/desk_pressed.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/desk_pressed.xbm new file mode 100644 index 0000000..c7f4e8a --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/desk_pressed.xbm @@ -0,0 +1,6 @@ +#define desk_pressed_width 14 +#define desk_pressed_height 14 +static unsigned char desk_pressed_bits[] = { + 0x00, 0x00, 0x06, 0x18, 0x1e, 0x1e, 0x1c, 0x0e, 0x1c, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0e, 0x1c, 0x0e, 0x1e, 0x1e, + 0x06, 0x18, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/desk_toggled.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/desk_toggled.xbm new file mode 100644 index 0000000..34b548a --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/desk_toggled.xbm @@ -0,0 +1,6 @@ +#define desk_toggled_width 14 +#define desk_toggled_height 14 +static unsigned char desk_toggled_bits[] = { + 0x00, 0x00, 0x3e, 0x1f, 0x3e, 0x1f, 0x3e, 0x1f, 0x3e, 0x1f, 0x3e, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x1f, 0x3e, 0x1f, 0x3e, 0x1f, 0x3e, 0x1f, + 0x3e, 0x1f, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/desk_toggled_hover.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/desk_toggled_hover.xbm new file mode 100644 index 0000000..49a7c97 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/desk_toggled_hover.xbm @@ -0,0 +1,6 @@ +#define desk_toggled_hover_width 14 +#define desk_toggled_hover_height 14 +static unsigned char desk_toggled_hover_bits[] = { + 0x00, 0x00, 0x3e, 0x1f, 0x3e, 0x11, 0x3e, 0x11, 0x3e, 0x11, 0x3e, 0x1f, + 0x00, 0x00, 0x00, 0x00, 0x3e, 0x1f, 0x22, 0x11, 0x22, 0x11, 0x22, 0x11, + 0x3e, 0x1f, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/desk_toggled_pressed.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/desk_toggled_pressed.xbm new file mode 100644 index 0000000..da44179 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/desk_toggled_pressed.xbm @@ -0,0 +1,6 @@ +#define desk_toggled_pressed_width 14 +#define desk_toggled_pressed_height 14 +static unsigned char desk_toggled_pressed_bits[] = { + 0x00, 0x00, 0x06, 0x18, 0x1e, 0x1e, 0x1c, 0x0e, 0x1c, 0x0e, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x0e, 0x1c, 0x0e, 0x1e, 0x1e, + 0x06, 0x18, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/iconify.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/iconify.xbm new file mode 100644 index 0000000..6d4dd4a --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/iconify.xbm @@ -0,0 +1,6 @@ +#define iconify_width 14 +#define iconify_height 14 +static unsigned char iconify_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0x1f, 0xfe, 0x1f, + 0xfe, 0x1f, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/iconify_hover.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/iconify_hover.xbm new file mode 100644 index 0000000..5d50c23 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/iconify_hover.xbm @@ -0,0 +1,6 @@ +#define iconify_hover_width 14 +#define iconify_hover_height 14 +static unsigned char iconify_hover_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0x07, + 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/iconify_pressed.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/iconify_pressed.xbm new file mode 100644 index 0000000..ed5e2ca --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/iconify_pressed.xbm @@ -0,0 +1,6 @@ +#define iconify_pressed_width 14 +#define iconify_pressed_height 14 +static unsigned char iconify_pressed_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x3f, + 0xff, 0x3f, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/max.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/max.xbm new file mode 100644 index 0000000..23da464 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/max.xbm @@ -0,0 +1,6 @@ +#define max_width 14 +#define max_height 14 +static unsigned char max_bits[] = { + 0x00, 0x00, 0xfe, 0x1f, 0xfe, 0x1f, 0xfe, 0x1f, 0x02, 0x10, 0x02, 0x10, + 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, + 0xfe, 0x1f, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/max_hover.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/max_hover.xbm new file mode 100644 index 0000000..0542438 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/max_hover.xbm @@ -0,0 +1,6 @@ +#define max_hover_width 14 +#define max_hover_height 14 +static unsigned char max_hover_bits[] = { + 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3f, 0xff, 0x3f, 0x03, 0x30, 0x03, 0x30, + 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, 0x03, 0x30, + 0xff, 0x3f, 0xff, 0x3f }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/max_toggled.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/max_toggled.xbm new file mode 100644 index 0000000..9c70245 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/max_toggled.xbm @@ -0,0 +1,6 @@ +#define max_toggled_width 14 +#define max_toggled_height 14 +static unsigned char max_toggled_bits[] = { + 0xe0, 0x3f, 0xe0, 0x3f, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0xff, 0x21, + 0xff, 0x21, 0x01, 0x21, 0x01, 0x3f, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0xff, 0x01 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/max_toggled_hover.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/max_toggled_hover.xbm new file mode 100644 index 0000000..55243cd --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/max_toggled_hover.xbm @@ -0,0 +1,6 @@ +#define max_toggled_hover_width 14 +#define max_toggled_hover_height 14 +static unsigned char max_toggled_hover_bits[] = { + 0x00, 0x22, 0x00, 0x12, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x3e, 0xff, 0x01, + 0xff, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, + 0x01, 0x01, 0xff, 0x01 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/shade.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/shade.xbm new file mode 100644 index 0000000..a49869f --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/shade.xbm @@ -0,0 +1,6 @@ +#define shade_width 14 +#define shade_height 14 +static unsigned char shade_bits[] = { + 0xc0, 0x00, 0xe0, 0x01, 0xf0, 0x03, 0xf8, 0x07, 0xfc, 0x0f, 0xfe, 0x1f, + 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, + 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/shade_hover.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/shade_hover.xbm new file mode 100644 index 0000000..83ed609 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/shade_hover.xbm @@ -0,0 +1,6 @@ +#define shade_hover_width 14 +#define shade_hover_height 14 +static unsigned char shade_hover_bits[] = { + 0x00, 0x00, 0xfe, 0x1f, 0xfe, 0x1f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/shade_pressed.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/shade_pressed.xbm new file mode 100644 index 0000000..39e6989 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/shade_pressed.xbm @@ -0,0 +1,6 @@ +#define shade_pressed_width 14 +#define shade_pressed_height 14 +static unsigned char shade_pressed_bits[] = { + 0x00, 0x00, 0xff, 0x3f, 0xff, 0x3f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/shade_toggled.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/shade_toggled.xbm new file mode 100644 index 0000000..cd638f0 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/shade_toggled.xbm @@ -0,0 +1,6 @@ +#define shade_toggled_width 14 +#define shade_toggled_height 14 +static unsigned char shade_toggled_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0xc0, 0x00, + 0xc0, 0x00, 0xc0, 0x00, 0xfe, 0x1f, 0xfc, 0x0f, 0xf8, 0x07, 0xf0, 0x03, + 0xe0, 0x01, 0xc0, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/big-14/shade_toggled_hover.xbm b/share/mabox-colorizer/themes/obbuttons/big-14/shade_toggled_hover.xbm new file mode 100644 index 0000000..59fd4a5 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/big-14/shade_toggled_hover.xbm @@ -0,0 +1,6 @@ +#define shade_toggled_hover_width 14 +#define shade_toggled_hover_height 14 +static unsigned char shade_toggled_hover_bits[] = { + 0x00, 0x00, 0xfe, 0x1f, 0xfe, 0x1f, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, + 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0x02, 0x10, 0xfe, 0x1f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/bold/close.xbm b/share/mabox-colorizer/themes/obbuttons/bold/close.xbm new file mode 100644 index 0000000..ab7ff80 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/bold/close.xbm @@ -0,0 +1,4 @@ +#define close_width 8 +#define close_height 8 +static unsigned char close_bits[] = { + 0xc3, 0xe7, 0x7e, 0x3c, 0x3c, 0x7e, 0xe7, 0xc3 }; diff --git a/share/mabox-colorizer/themes/obbuttons/bold/desk.xbm b/share/mabox-colorizer/themes/obbuttons/bold/desk.xbm new file mode 100644 index 0000000..abca780 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/bold/desk.xbm @@ -0,0 +1,4 @@ +#define desk_toggled_width 8 +#define desk_toggled_height 8 +static unsigned char desk_toggled_bits[] = { + 0xe7, 0xe7, 0xe7, 0x00, 0x00, 0xe7, 0xe7, 0xe7 }; diff --git a/share/mabox-colorizer/themes/obbuttons/bold/desk_toggled.xbm b/share/mabox-colorizer/themes/obbuttons/bold/desk_toggled.xbm new file mode 100644 index 0000000..b4b5330 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/bold/desk_toggled.xbm @@ -0,0 +1,4 @@ +#define desk_width 8 +#define desk_height 8 +static unsigned char desk_bits[] = { + 0x04, 0x0e, 0x3f, 0x1e, 0x1c, 0x24, 0x40, 0x80 }; diff --git a/share/mabox-colorizer/themes/obbuttons/bold/iconify.xbm b/share/mabox-colorizer/themes/obbuttons/bold/iconify.xbm new file mode 100644 index 0000000..9a9743f --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/bold/iconify.xbm @@ -0,0 +1,4 @@ +#define iconify_width 8 +#define iconify_height 8 +static unsigned char iconify_bits[] = { + 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/bold/max.xbm b/share/mabox-colorizer/themes/obbuttons/bold/max.xbm new file mode 100644 index 0000000..505e112 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/bold/max.xbm @@ -0,0 +1,4 @@ +#define titlebutton_max_2_width 8 +#define titlebutton_max_2_height 8 +static unsigned char titlebutton_max_2_bits[] = { + 0xf8, 0xf0, 0xe0, 0xc1, 0x83, 0x07, 0x0f, 0x1f }; diff --git a/share/mabox-colorizer/themes/obbuttons/bold/max_toggled.xbm b/share/mabox-colorizer/themes/obbuttons/bold/max_toggled.xbm new file mode 100644 index 0000000..505e112 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/bold/max_toggled.xbm @@ -0,0 +1,4 @@ +#define titlebutton_max_2_width 8 +#define titlebutton_max_2_height 8 +static unsigned char titlebutton_max_2_bits[] = { + 0xf8, 0xf0, 0xe0, 0xc1, 0x83, 0x07, 0x0f, 0x1f }; diff --git a/share/mabox-colorizer/themes/obbuttons/bold/shade.xbm b/share/mabox-colorizer/themes/obbuttons/bold/shade.xbm new file mode 100644 index 0000000..fcacf42 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/bold/shade.xbm @@ -0,0 +1,4 @@ +#define shade_width 8 +#define shade_height 8 +static unsigned char shade_bits[] = { + 0x18, 0x3c, 0x7e, 0xff, 0xdb, 0x18, 0x18, 0x18 }; diff --git a/share/mabox-colorizer/themes/obbuttons/bold/shade_toggled.xbm b/share/mabox-colorizer/themes/obbuttons/bold/shade_toggled.xbm new file mode 100644 index 0000000..594201e --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/bold/shade_toggled.xbm @@ -0,0 +1,4 @@ +#define shade_toggled_width 8 +#define shade_toggled_height 8 +static unsigned char shade_toggled_bits[] = { + 0x18, 0x18, 0x18, 0xdb, 0xff, 0x7e, 0x3c, 0x18 }; diff --git a/share/mabox-colorizer/themes/obbuttons/dots/bullet.xbm b/share/mabox-colorizer/themes/obbuttons/dots/bullet.xbm new file mode 100755 index 0000000..b787060 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/dots/bullet.xbm @@ -0,0 +1,5 @@ +#define bullet_width 10 +#define bullet_height 10 +static unsigned char bullet_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0xc0, 0x00, 0xc0, 0x00, + 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/dots/close.xbm b/share/mabox-colorizer/themes/obbuttons/dots/close.xbm new file mode 100755 index 0000000..0a82cb0 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/dots/close.xbm @@ -0,0 +1,5 @@ +#define close_width 10 +#define close_height 10 +static unsigned char close_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/dots/desk.xbm b/share/mabox-colorizer/themes/obbuttons/dots/desk.xbm new file mode 100644 index 0000000..6b24697 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/dots/desk.xbm @@ -0,0 +1,5 @@ +#define desk_width 10 +#define desk_height 10 +static unsigned char desk_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/dots/desk_toggled.xbm b/share/mabox-colorizer/themes/obbuttons/dots/desk_toggled.xbm new file mode 100644 index 0000000..b2bf3a2 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/dots/desk_toggled.xbm @@ -0,0 +1,5 @@ +#define desk_toggled_width 10 +#define desk_toggled_height 10 +static unsigned char desk_toggled_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/dots/iconify.xbm b/share/mabox-colorizer/themes/obbuttons/dots/iconify.xbm new file mode 100755 index 0000000..6aa407e --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/dots/iconify.xbm @@ -0,0 +1,5 @@ +#define max_toggled_width 10 +#define max_toggled_height 10 +static unsigned char max_toggled_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/dots/max.xbm b/share/mabox-colorizer/themes/obbuttons/dots/max.xbm new file mode 100755 index 0000000..e715670 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/dots/max.xbm @@ -0,0 +1,5 @@ +#define max_width 10 +#define max_height 10 +static unsigned char max_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/dots/max_toggled.xbm b/share/mabox-colorizer/themes/obbuttons/dots/max_toggled.xbm new file mode 100644 index 0000000..9f1f58c --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/dots/max_toggled.xbm @@ -0,0 +1,5 @@ +#define max_toggled_width 10 +#define max_toggled_height 10 +static unsigned char max_toggled_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0xc0, 0x00, 0xc0, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/dots/shade.xbm b/share/mabox-colorizer/themes/obbuttons/dots/shade.xbm new file mode 100644 index 0000000..0b87261 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/dots/shade.xbm @@ -0,0 +1,5 @@ +#define shade_width 10 +#define shade_height 10 +static unsigned char shade_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/dots/shade_toggled.xbm b/share/mabox-colorizer/themes/obbuttons/dots/shade_toggled.xbm new file mode 100644 index 0000000..7cdce72 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/dots/shade_toggled.xbm @@ -0,0 +1,5 @@ +#define shade_toggled_width 10 +#define shade_toggled_height 10 +static unsigned char shade_toggled_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0xcc, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00, + 0xcc, 0x00, 0xcc, 0x00, 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/normal/bullet.xbm b/share/mabox-colorizer/themes/obbuttons/normal/bullet.xbm new file mode 100644 index 0000000..88481ec --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/normal/bullet.xbm @@ -0,0 +1,4 @@ +#define bullet_width 4 +#define bullet_height 7 +static unsigned char bullet_bits[] = { + 0x01, 0x03, 0x07, 0x0f, 0x07, 0x03, 0x01 }; diff --git a/share/mabox-colorizer/themes/obbuttons/normal/close.xbm b/share/mabox-colorizer/themes/obbuttons/normal/close.xbm new file mode 100644 index 0000000..4a88cff --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/normal/close.xbm @@ -0,0 +1,4 @@ +#define close_width 6 +#define close_height 6 +static unsigned char close_bits[] = { + 0x33, 0x3f, 0x1e, 0x1e, 0x3f, 0x33 }; diff --git a/share/mabox-colorizer/themes/obbuttons/normal/desk.xbm b/share/mabox-colorizer/themes/obbuttons/normal/desk.xbm new file mode 100644 index 0000000..3e327e3 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/normal/desk.xbm @@ -0,0 +1,4 @@ +#define desk_width 6 +#define desk_height 6 +static unsigned char desk_bits[] = { + 0x33, 0x33, 0x00, 0x00, 0x33, 0x33 }; diff --git a/share/mabox-colorizer/themes/obbuttons/normal/desk_toggled.xbm b/share/mabox-colorizer/themes/obbuttons/normal/desk_toggled.xbm new file mode 100644 index 0000000..d7e045e --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/normal/desk_toggled.xbm @@ -0,0 +1,4 @@ +#define desk_toggle_width 6 +#define desk_toggle_height 6 +static unsigned char desk_toggle_bits[] = { + 0x00, 0x1e, 0x1a, 0x16, 0x1e, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/normal/iconify.xbm b/share/mabox-colorizer/themes/obbuttons/normal/iconify.xbm new file mode 100644 index 0000000..2304866 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/normal/iconify.xbm @@ -0,0 +1,4 @@ +#define iconify_width 6 +#define iconify_height 6 +static unsigned char iconify_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x3f, 0x3f }; diff --git a/share/mabox-colorizer/themes/obbuttons/normal/max.xbm b/share/mabox-colorizer/themes/obbuttons/normal/max.xbm new file mode 100644 index 0000000..6d030af --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/normal/max.xbm @@ -0,0 +1,4 @@ +#define max_width 6 +#define max_height 6 +static unsigned char max_bits[] = { + 0x3f, 0x3f, 0x21, 0x21, 0x21, 0x3f }; diff --git a/share/mabox-colorizer/themes/obbuttons/normal/max_toggled.xbm b/share/mabox-colorizer/themes/obbuttons/normal/max_toggled.xbm new file mode 100644 index 0000000..44c7cef --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/normal/max_toggled.xbm @@ -0,0 +1,4 @@ +#define max_width 6 +#define max_height 6 +static unsigned char max_bits[] = { + 0x3e, 0x22, 0x2f, 0x29, 0x39, 0x0f }; diff --git a/share/mabox-colorizer/themes/obbuttons/normal/shade.xbm b/share/mabox-colorizer/themes/obbuttons/normal/shade.xbm new file mode 100644 index 0000000..edb3b17 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/normal/shade.xbm @@ -0,0 +1,4 @@ +#define iconify_width 6 +#define iconify_height 6 +static unsigned char iconify_bits[] = { + 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/normal/shade_toggled.xbm b/share/mabox-colorizer/themes/obbuttons/normal/shade_toggled.xbm new file mode 100644 index 0000000..edb3b17 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/normal/shade_toggled.xbm @@ -0,0 +1,4 @@ +#define iconify_width 6 +#define iconify_height 6 +static unsigned char iconify_bits[] = { + 0x3f, 0x3f, 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/tiny/bullet.xbm b/share/mabox-colorizer/themes/obbuttons/tiny/bullet.xbm new file mode 100644 index 0000000..a0ee0a3 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/tiny/bullet.xbm @@ -0,0 +1,4 @@ +#define bullet_width 8 +#define bullet_height 8 +static unsigned char bullet_bits[] = { + 0x00, 0x08, 0x10, 0x20, 0x20, 0x10, 0x08, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/tiny/close.xbm b/share/mabox-colorizer/themes/obbuttons/tiny/close.xbm new file mode 100644 index 0000000..8b0e033 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/tiny/close.xbm @@ -0,0 +1,4 @@ +#define close_width 8 +#define close_height 8 +static unsigned char close_bits[] = { + 0x81, 0x42, 0x24, 0x18, 0x18, 0x24, 0x42, 0x81 }; diff --git a/share/mabox-colorizer/themes/obbuttons/tiny/desk.xbm b/share/mabox-colorizer/themes/obbuttons/tiny/desk.xbm new file mode 100644 index 0000000..daec424 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/tiny/desk.xbm @@ -0,0 +1,4 @@ +#define desk_width 8 +#define desk_height 8 +static unsigned char desk_bits[] = { + 0x18, 0x24, 0x42, 0x81, 0x81, 0x42, 0x24, 0x18 }; diff --git a/share/mabox-colorizer/themes/obbuttons/tiny/desk_toggled.xbm b/share/mabox-colorizer/themes/obbuttons/tiny/desk_toggled.xbm new file mode 100644 index 0000000..6b42c6a --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/tiny/desk_toggled.xbm @@ -0,0 +1,4 @@ +#define desk_toggled_width 8 +#define desk_toggled_height 8 +static unsigned char desk_toggled_bits[] = { + 0x18, 0x3c, 0x7e, 0xff, 0xff, 0x7e, 0x3c, 0x18 }; diff --git a/share/mabox-colorizer/themes/obbuttons/tiny/iconify.xbm b/share/mabox-colorizer/themes/obbuttons/tiny/iconify.xbm new file mode 100644 index 0000000..5bcf187 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/tiny/iconify.xbm @@ -0,0 +1,4 @@ +#define iconify_width 8 +#define iconify_height 8 +static unsigned char iconify_bits[] = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff }; diff --git a/share/mabox-colorizer/themes/obbuttons/tiny/max.xbm b/share/mabox-colorizer/themes/obbuttons/tiny/max.xbm new file mode 100644 index 0000000..c6030c2 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/tiny/max.xbm @@ -0,0 +1,4 @@ +#define max_width 8 +#define max_height 8 +static unsigned char max_bits[] = { + 0xff, 0x81, 0x81, 0x81, 0x81, 0x81, 0x81, 0xff }; diff --git a/share/mabox-colorizer/themes/obbuttons/tiny/max_toggled.xbm b/share/mabox-colorizer/themes/obbuttons/tiny/max_toggled.xbm new file mode 100644 index 0000000..1484a66 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/tiny/max_toggled.xbm @@ -0,0 +1,4 @@ +#define max_toggled_width 8 +#define max_toggled_height 8 +static unsigned char max_toggled_bits[] = { + 0xfc, 0x80, 0xbf, 0xa1, 0xa1, 0xa1, 0x21, 0x3f }; diff --git a/share/mabox-colorizer/themes/obbuttons/tiny/shade.xbm b/share/mabox-colorizer/themes/obbuttons/tiny/shade.xbm new file mode 100644 index 0000000..34ea452 --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/tiny/shade.xbm @@ -0,0 +1,4 @@ +#define shade_width 8 +#define shade_height 8 +static unsigned char shade_bits[] = { + 0x18, 0x24, 0x42, 0x81, 0x00, 0x00, 0x00, 0x00 }; diff --git a/share/mabox-colorizer/themes/obbuttons/tiny/shade_toggled.xbm b/share/mabox-colorizer/themes/obbuttons/tiny/shade_toggled.xbm new file mode 100644 index 0000000..f62073b --- /dev/null +++ b/share/mabox-colorizer/themes/obbuttons/tiny/shade_toggled.xbm @@ -0,0 +1,4 @@ +#define shade_toggled_width 8 +#define shade_toggled_height 8 +static unsigned char shade_toggled_bits[] = { + 0x81, 0x42, 0x24, 0x18, 0x00, 0x00, 0x00, 0x00 };