diff --git a/bin/mbxcolors b/bin/mbxcolors
index 28c71cf..0d1faed 100755
--- a/bin/mbxcolors
+++ b/bin/mbxcolors
@@ -3,10 +3,9 @@
# Dependencies: jgmenu, xdotool, xcolor, gcolor3, xdg-utils, xclip, notify-send
# TODO Imagick colors - separate menu big around 700 named colors
# TODO export to .gpl (GIMP,Inkscape)
-# TODO Current Wallpaper palette
# TODO PL translation
-VERSION="0.2.6"
+VERSION="0.3.0"
TEMP_DIR=/tmp/colormenu
ME=${0##*/}
@@ -26,9 +25,9 @@ action=copy
#What thing to expose on top of main menu: recently picked colors, last used colors or last used palette
expose=picked
#Show HTML colors? yes|no
-htmlcolors=no
+htmlcolors=yes
#Show built in palettes? (slow)
-builtin_palettes=no
+builtin_palettes=yes
#Position on screen: topleft, top, topright, left, center, right, bottomleft, bottom, bottomright
position=left
EOF
@@ -125,46 +124,52 @@ newpalette() {
}
palettes() {
[ -n "$1" ] && pdir="$CNF_DIR/palettes/my/" || pdir="$DATA_DIR/palettes/"
- for file in "$pdir"*.clr;do
+ if [[ -n "$1" ]]; then
+ out2+=("^tag(mypalettes)")
+ out2+=("^sep(My palettes)")
+ else
+ out2+=("^tag(builtpalettes)")
+ out2+=("^sep(Built-in palettes)")
+ fi
+ for file in "$pdir"*.clr ;do
filename=${file##*/}
palette=${filename%.*}
pal=${palette//_/ }
tagname=${palette// /_}
- out1+=("${pal^},^checkout($tagname)")
- out2+=("^tag($tagname)")
- out2+=("^sep(${pal^})")
+ out2+=("${pal^},^checkout($tagname)")
+ out3+=("^tag($tagname)")
+ out3+=("^sep(${pal^})")
+ out3+=("EXPOSE_ON_ROOTMENU,$ME setvar expose=$filename;$ME")
+ out3+=("^sep()")
while read -r color name;
do
- #name=$(printf "%22s %s\n" "$name")
- #fg=$(fgcolor $color)
- #out2+=(" $color$name ,$ME getcolorcode '$color' '$file',,,#${palette}")
- out2+=("$color ,$ME getcolorcode '$color' '$file';$ME setvar expose=palette,,,#${palette}")
+ out3+=("$color ,$ME getcolorcode '$color' '$file',,,#${palette}")
done < "$file"
if [[ -n "$1" ]] ; then
- out2+=("^sep()")
- out2+=("Add color... from screen,$ME pickcolor '$file'")
+ out3+=("^sep()")
+ out3+=("Add color... from screen,$ME pickcolor '$file'")
if hash gcolor3 2>/dev/null; then
- out2+=("^sep()")
- out2+=("Add color from selector...,$ME addcolor '$file'")
+ out3+=("^sep()")
+ out3+=("Add color from selector...,$ME addcolor '$file'")
fi
- out2+=("^sep()")
- out2+=("Edit palette file,xdg-open '$file'")
- out2+=("^sep(Danger zone...)")
- out2+=("Delete palette: ${palette^},^checkout($tagname-del)")
- out3+=("^tag($tagname-del)")
- out3+=("^sep(Are you sure?)")
- out3+=("Yes,rm '$file';$ME")
+ out3+=("^sep()")
+ out3+=("Edit palette file,xdg-open '$file'")
+ out3+=("^sep(Danger zone...)")
+ out3+=("Delete palette: ${palette^},^checkout($tagname-del)")
+ out4+=("^tag($tagname-del)")
+ out4+=("^sep(Are you sure?)")
+ out4+=("Yes,rm '$file';$ME")
fi
done
#if [[ $# = 0 ]] ; then
if [[ -n "$1" ]] ; then
- out1+=("^sep()")
- out1+=("Add new palette...,$ME newpalette;$ME")
- out1+=("Open palette directory,xdg-open $CNF_DIR/palettes/my/")
+ out2+=("^sep()")
+ out2+=("Add new palette...,$ME newpalette;$ME")
+ out2+=("Open palette directory,xdg-open $CNF_DIR/palettes/my/")
fi
}
-if [ $htmlcolors = "yes" ] && [ $expose != "html" ]; then
+if [ $htmlcolors = "yes" ]; then
htmlroot="^sep()
HTML colors,^checkout(html)
"
@@ -189,76 +194,7 @@ position() {
center|*) POSITION_MODE="center";;
esac
}
-mkconfigfile() {
-if [[ -f /usr/share/mbxtools/configure.inc ]];then
-. /usr/share/mbxtools/configure.inc
-elif [[ -f /usr/share/mb-jgtools/pipemenu-standalone.cfg ]];then
-. /usr/share/mb-jgtools/pipemenu-standalone.cfg
-. $HOME/.config/mabox/mabox.conf
-else
-MENU_ITEMS=$(mktemp)
-CONFIG_FILE=$(mktemp)
-cat < ${CONFIG_FILE}
-position_mode = ${POSITION_MODE:-center}
-menu_halign = ${MENU_HALIGN:-center}
-menu_valign = ${MENU_VALIGN:-center}
-csv_cmd = apps
-stay_alive = 0
-hide_back_items = ${HIDE_BACK_ITEMS:-0}
-terminal_exec = terminator
-terminal_args = -e
-tabs = ${TABS:-220}
-menu_border = ${jgtools_border:-0}
-
-# MENU MARGIN
-menu_margin_x = ${menu_margin_x:-0}
-menu_margin_y = ${panels_topmargin:-0}
-sub_spacing = ${submenu_spacing:-2}
-
-menu_width = $JGWIDTH
-menu_height_min = ${MENU_HEIGHT_MIN:-0}
-menu_height_max = ${MENU_HEIGHT_MAX:-0}
-menu_padding_top = ${MENU_PADDING_TOP:-70}
-menu_padding_right = ${jgtools_padding:-0}
-menu_padding_bottom = ${jgtools_padding:-0}
-menu_padding_left = ${jgtools_padding:-0}
-menu_radius = ${MENU_RADIUS:-0}
-
-#item_height = ${jgmenu_item_height:-30}
-#item_halign = ${ITEM_HALIGN:-left}
-#item_padding_x = 4
-
-#item_margin_x = ${item_margin_x:-0}
-item_margin_y = ${item_margin_y:-0}
-#item_radius = ${item_radius:-2}
-#item_border = ${item_border:-0}
-
-columns = ${COLUMNS:-1}
-menu_gradient_pos = ${menu_gradient_pos:- none}
-#color_menu_bg = ${color_menu_bg:-#222222 80}
-#color_menu_bg_to = ${color_menu_bg_to:- #000000 100}
-#color_menu_border = ${color_menu_border:-#2f9b85 100}
-#color_norm_bg = ${color_norm_bg:-#000000 0}
-#color_norm_fg = ${color_norm_fg:-#CCCCCC 100}
-#color_sel_bg = ${color_sel_bg:-#169f6f 60}
-#color_sel_fg = ${color_sel_fg:-#f8f8f8 100}
-#color_sel_border = ${color_sel_border:-#504e65 100}
-#color_sep_fg = ${color_sep_fg:-#4D4D4D 100}
-#color_sep_bg = ${color_sep_bg:-#262626 100}
-#color_title_fg = ${color_title_fg:-#4D4D4D 100}
-#color_title_border = ${color_title_border:-#169f6f 100}
-#color_title_bg = ${color_title_bg:-#262626 100}
-#color_scroll_ind = ${COLOR_SCROLL_IND:-#504e65 100}
-
-sep_markup = weight="bold"
-sep_height = ${sep_height:-5}
-#font = ${jgmenu_font:-Noto Sans Medium 9}
-icon_size = ${jgmenu_icon_size:-16}
-icon_theme = ${jgmenu_icon_theme:-Numix-Square}
-EOF
-fi
-}
main () {
# Mabox Linux
if [[ -f /usr/share/mb-jgtools/pipemenu-standalone.cfg ]];then
@@ -290,21 +226,12 @@ out+=("Add color from selector...,$ME addcolor")
fi
# exposed thing
case "$expose" in
-
- html)
- htmlroot=". ${CNF_DIR}/htmlsub.csv"
- htmlsub=". ${CNF_DIR}/htmlclrs.csv"
- htmlclrs=""
- ;;
palette)
pal=$(cat "$CNF_DIR/.palette")
filename=${pal##*/}
palette=${filename%.*}
out+=("^sep(Last used palette ${palette^})")
while read -r color name;do
- #name=$(printf "%22s %s\n" "$name")
- #fg=$(fgcolor $color)
- #out+=(" $color$name,$ME getcolorcode '$color'")
out+=("$color ,$ME getcolorcode '$color'")
done < "${pal}"
;;
@@ -313,17 +240,13 @@ case "$expose" in
if (( ${#MAPFILE[@]} > 1 )); then
out+=("^sep(Recently used colors:)")
while read -r color name;do
- #name=$(printf "%22s %s\n" "$name")
- #fg=$(fgcolor $color)
- #out+=(" $color$name,$ME getcolorcode '$color'")
out+=("$color ,$ME getcolorcode '$color'")
- #out2+=("$color ,sed -i '/${color:1:6}/d' $USED;$ME")
done < <(grep ^# $USED)
out+=("^sep()")
out+=("Clear recently used colors,echo > $USED;$ME")
fi
;;
- picked|*)
+ picked)
mapfile -t < $RECENT
if (( ${#MAPFILE[@]} > 1 )); then
out+=("^sep(Recently picked colors:)")
@@ -333,30 +256,76 @@ case "$expose" in
out2+=("Clear all,echo > $RECENT;$ME")
out2+=("^sep(Just remove one color...)")
while read -r color name;do
- # name=$(printf "%22s %s\n" "$name")
- # fg=$(fgcolor $color)
- # out+=(" $color$name,$ME getcolorcode '$color'")
+
out+=("$color ,$ME getcolorcode '$color'")
out2+=("$color ,sed -i '/${color:1:6}/d' $RECENT;$ME")
- #echo "$color ,sed '/${color:1:6}/d' $RECENT;$ME"
done < <(grep ^# $RECENT)
-
+
out+=("^sep()")
out+=("New palette from recently picked,$ME recent2palette;$ME")
- #out+=("Clear recently picked,echo > $RECENT;$ME")
out+=("Clear recently picked,^checkout(pickeddel)")
fi
;;
+ wallpaper)
+ read WALLPAPER<<< $(grep file "$HOME/.config/nitrogen/bg-saved.cfg | cut -d'=' -f2")
+ WALLPALDIR="$HOME/.config/mbxcolors/palettes/wallp"
+ mkdir -p "$WALLPALDIR"
+ read WALLPATH<<< $(grep file "$HOME/.config/nitrogen/bg-saved.cfg" | cut -d'=' -f2)
+ WALLPAPER=${WALLPATH##*/}
+ if [ ! -f "$WALLPALDIR/$WALLPAPER.clr" ]; then
+ convert ${WALLPATH} -resize 25% -colors 16 -unique-colors txt:- |grep -v '^#'| awk '{print $3}' > "$WALLPALDIR/$WALLPAPER.clr"
+ fi
+ #mapfile -t wallcolors < "$WALLPALDIR/$WALLPAPER.clr"
+ out+=("^sep(Wallpaper colors)")
+ while read -r color name;do
+ out+=("$color ,$ME getcolorcode '$color'")
+ done < "$WALLPALDIR/$WALLPAPER.clr"
+ ;;
+ *)
+ if [ -f "$DATA_DIR/palettes/$expose" ];then
+ palfile="$DATA_DIR/palettes/$expose"
+ elif [ -f "$CNF_DIR/palettes/my/$expose" ];then
+ palfile="$CNF_DIR/palettes/my/$expose"
+ fi
+ if [ $palfile ];then
+ palette=${expose%.*}
+ pal=${palette//_/ }
+ out+=("^sep(Palette: ${pal^})")
+ while read -r color name;
+ do
+ out+=("$color ,$ME getcolorcode '$color' '$file';$ME setvar expose=palette,,,#${palette}")
+ done < "$palfile"
+ fi
+ ;;
+
esac
#if [[ "$CNF_DIR"/palettes/my/*.clr ]]; then
+out+=("^sep(Color palettes)")
if [ "$(find "$CNF_DIR"/palettes/my/*.clr -maxdepth 1 -type f -iname \*.clr)" ]; then
-out1+=("^sep(My palletes)")
+out+=("My palettes,^checkout(mypalettes)")
palettes my
fi
if [[ $builtin_palettes == "yes" ]];then
-out1+=("^sep(Built-in palettes)")
+out+=("Built-in palettes,^checkout(builtpalettes)")
palettes
fi
+# WALLPAPER COLORS
+out+=("Current Wallpaper colors,^checkout(wallcolors)")
+read WALLPAPER<<< $(grep file "$HOME/.config/nitrogen/bg-saved.cfg | cut -d'=' -f2")
+WALLPALDIR="$HOME/.config/mbxcolors/palettes/wallp"
+mkdir -p "$WALLPALDIR"
+read WALLPATH<<< $(grep file "$HOME/.config/nitrogen/bg-saved.cfg" | cut -d'=' -f2)
+WALLPAPER=${WALLPATH##*/}
+if [ ! -f "$WALLPALDIR/$WALLPAPER.clr" ]; then
+ convert ${WALLPATH} -resize 25% -colors 16 -unique-colors txt:- |grep -v '^#'| awk '{print $3}' > "$WALLPALDIR/$WALLPAPER.clr"
+fi
+ #mapfile -t wallcolors < "$WALLPALDIR/$WALLPAPER.clr"
+out2+=("^tag(wallcolors)")
+out2+=("^sep(Current wallpaper colors)")
+out2+=("EXPOSE_IN_ROOTMENU ,$ME setvar expose=wallpaper;$ME")
+while read -r color name;do
+ out2+=("$color ,$ME getcolorcode '$color'")
+done < "$WALLPALDIR/$WALLPAPER.clr"
out1+=("^sep(Settings)")
out1+=("Preferences,^pipe($ME preferences)")
@@ -373,6 +342,7 @@ $(printf '%s\n' "${out2[@]}")
${htmlclrs}
$(printf '%s\n' "${out3[@]}")
+$(printf '%s\n' "${out4[@]}")
EOF
jgmenu --config-file=${CONFIG_FILE} --csv-file=${MENU_ITEMS} 2>/dev/null
#printf '%s\n' "${out3[@]}"
@@ -415,7 +385,7 @@ out2+=("^sep(Show on top of rootmenu)")
out2+=("picked recently picked colors,$ME setvar expose=picked;$ME")
out2+=("used recently used colors,$ME setvar expose=used;$ME")
out2+=("palette recently used palette,$ME setvar expose=palette;$ME")
-out2+=("html HTML Colors,$ME setvar expose=html;$ME")
+out2+=("wallpaper colors ,$ME setvar expose=wallpaper;$ME")
out2+=("^tag(showhtml)")
out2+=("^sep(Show HTML colors?)")