diff --git a/docs/example.Xresources b/docs/example.Xresources index 296a175..adcb08c 100644 --- a/docs/example.Xresources +++ b/docs/example.Xresources @@ -17,6 +17,8 @@ spmenu.col_itemnormfg2: #bbbbbb spmenu.col_itemnormbg2: #222222 spmenu.col_itemselfg: #eeeeee spmenu.col_itemselbg: #35638A +spmenu.col_itemmarkedfg: #eeeeee +spmenu.col_itemmarkedbg: #35638A spmenu.col_itemnormprifg: #bbbbbb spmenu.col_itemnormpribg: #222222 spmenu.col_itemselprifg: #eeeeee @@ -67,6 +69,8 @@ spmenu.alpha_itemnormfg2: 255 spmenu.alpha_itemnormbg2: 200 spmenu.alpha_itemselfg: 255 spmenu.alpha_itemselbg: 200 +spmenu.alpha_itemmarkedfg: 255 +spmenu.alpha_itemmarkedbg: 200 spmenu.alpha_itemnormprifg: 255 spmenu.alpha_itemnormpribg: 200 spmenu.alpha_itemselprifg: 255 diff --git a/docs/spmenu.conf b/docs/spmenu.conf index 85d66a1..6793aa6 100644 --- a/docs/spmenu.conf +++ b/docs/spmenu.conf @@ -50,6 +50,8 @@ spmenu = { itemnormbg2 = "#222222"; // Normal next item background color (#RRGGBB) itemselfg = "#eeeeee"; // Selected item foreground color (#RRGGBB) itemselbg = "#35638A"; // Selected item background color (#RRGGBB) + itemmarkedfg = "#eeeeee"; // Marked item foreground color (#RRGGBB) + itemmarkedbg = "#35638A"; // Marked item background color (#RRGGBB) itemnormprifg = "#bbbbbb"; // Normal priority item foreground color (#RRGGBB) itemnormpribg = "#222222"; // Normal priority item background color (#RRGGBB) itemselprifg = "#eeeeee"; // Selected priority item foreground color (#RRGGBB) @@ -103,6 +105,8 @@ spmenu = { itemnormbg2 = 200; // Normal next item background alpha (0-255) itemselfg = 255; // Selected item foreground alpha (0-255) itemselbg = 200; // Selected item background alpha (0-255) + itemmarkedfg = 255; // Marked item foreground alpha (0-255) + itemmarkedbg = 200; // Marked item background alpha (0-255) itemnormprifg = 255; // Normal priority item foreground alpha (0-255) itemnormpribg = 200; // Normal priority item background alpha (0-255) itemselprifg = 255; // Selected priority item foreground alpha (0-255) diff --git a/libs/colors.h b/libs/colors.h index 6526a34..c6c3344 100644 --- a/libs/colors.h +++ b/libs/colors.h @@ -10,6 +10,7 @@ static unsigned int alphas[][2] = { [SchemeItemSel] = { 255, 200 }, [SchemeItemNormPri] = { 255, 200 }, [SchemeItemSelPri] = { 255, 200 }, + [SchemeItemMarked] = { 255, 200 }, [SchemeMenu] = { 255, 200 }, [SchemeInput] = { 255, 200 }, [SchemePrompt] = { 255, 200 }, @@ -32,6 +33,7 @@ static char *colors[][2] = { [SchemeItemSel] = { col_itemselfg, col_itemselbg }, [SchemeItemNormPri] = { col_itemnormprifg, col_itemnormpribg }, [SchemeItemSelPri] = { col_itemselprifg, col_itemselpribg }, + [SchemeItemMarked] = { col_itemmarkedfg, col_itemmarkedbg }, [SchemeInput] = { col_inputfg, col_inputbg, }, [SchemeMenu] = { NULL, col_menu }, [SchemeCaps] = { col_capsfg, col_capsbg }, diff --git a/libs/conf/config.c b/libs/conf/config.c index a76b0ba..15f37d7 100644 --- a/libs/conf/config.c +++ b/libs/conf/config.c @@ -179,6 +179,12 @@ void conf_init(void) { config_setting_lookup_int(conf, "itemselfg", &alpha_itemselfg); // spmenu.alpha.itemselfg config_setting_lookup_int(conf, "itemselbg", &alpha_itemselbg); // spmenu.alpha.itemselbg + if (!config_setting_lookup_int(conf, "itemmarkedfg", &alpha_itemmarkedfg)) + config_setting_lookup_int(conf, "itemselfg", &alpha_itemmarkedfg); + + if (!config_setting_lookup_int(conf, "itemmarkedbg", &alpha_itemmarkedbg)) + config_setting_lookup_int(conf, "itemselbg", &alpha_itemmarkedbg); + config_setting_lookup_int(conf, "itemnormprifg", &alpha_itemnormprifg); // spmenu.alpha.itemnormprifg config_setting_lookup_int(conf, "itemnormpribg", &alpha_itemnormpribg); // spmenu.alpha.itemnormpribg config_setting_lookup_int(conf, "itemselprifg", &alpha_itemselprifg); // spmenu.alpha.itemselprifg @@ -247,6 +253,16 @@ void conf_init(void) { if (config_setting_lookup_string(conf, "itemselbg", &dest)) strcpy(colors[SchemeItemSel][ColBg], strdup(dest)); + if (config_setting_lookup_string(conf, "itemmarkedfg", &dest)) + strcpy(colors[SchemeItemMarked][ColFg], strdup(dest)); + else if (config_setting_lookup_string(conf, "itemselfg", &dest)) + strcpy(colors[SchemeItemMarked][ColFg], strdup(dest)); + + if (config_setting_lookup_string(conf, "itemmarkedbg", &dest)) + strcpy(colors[SchemeItemMarked][ColBg], strdup(dest)); + else if (config_setting_lookup_string(conf, "itemselbg", &dest)) + strcpy(colors[SchemeItemMarked][ColBg], strdup(dest)); + // items with priority if (config_setting_lookup_string(conf, "itemnormprifg", &dest)) strcpy(colors[SchemeItemNormPri][ColFg], strdup(dest)); diff --git a/libs/draw.c b/libs/draw.c index 2d17d1f..548ef96 100644 --- a/libs/draw.c +++ b/libs/draw.c @@ -72,7 +72,7 @@ int drawitemtext(struct item *item, int x, int y, int w) { } if (is_selected(item->index)) { - memcpy(scm, scheme[SchemeItemSel], sizeof(scm)); + memcpy(scm, scheme[SchemeItemMarked], sizeof(scm)); } // apply extra padding @@ -166,7 +166,7 @@ int drawitemtext(struct item *item, int x, int y, int w) { } if (is_selected(item->index)) { - memcpy(scm, scheme[SchemeItemSel], sizeof(scm)); + memcpy(scm, scheme[SchemeItemMarked], sizeof(scm)); } // don't color diff --git a/libs/schemes.c b/libs/schemes.c index e57dd1f..a6963ce 100644 --- a/libs/schemes.c +++ b/libs/schemes.c @@ -20,6 +20,8 @@ void init_appearance(void) { alphas[SchemeItemNorm2][ColBg] = alpha_itemnormbg2; alphas[SchemeItemSel][ColFg] = alpha_itemselfg; alphas[SchemeItemSel][ColBg] = alpha_itemselbg; + alphas[SchemeItemMarked][ColFg] = alpha_itemmarkedfg; + alphas[SchemeItemMarked][ColBg] = alpha_itemmarkedbg; alphas[SchemeItemNormPri][ColFg] = alpha_itemnormprifg; alphas[SchemeItemNormPri][ColBg] = alpha_itemnormpribg; alphas[SchemeItemSelPri][ColFg] = alpha_itemselprifg; diff --git a/libs/schemes.h b/libs/schemes.h index 6b47d14..01f9c15 100644 --- a/libs/schemes.h +++ b/libs/schemes.h @@ -3,13 +3,15 @@ static void init_appearance(void); // Color schemes -enum { SchemeLArrow, +enum { + SchemeLArrow, SchemeRArrow, SchemeItemNorm1, SchemeItemNorm2, SchemeItemSel, SchemeItemNormPri, SchemeItemSelPri, + SchemeItemMarked, SchemeMenu, SchemeInput, SchemePrompt, diff --git a/libs/theme/theme.c b/libs/theme/theme.c index 744ca28..f8e03c1 100644 --- a/libs/theme/theme.c +++ b/libs/theme/theme.c @@ -159,6 +159,12 @@ void theme_load(void) { config_setting_lookup_int(conf, "itemselfg", &alpha_itemselfg); // theme.alpha.itemselfg config_setting_lookup_int(conf, "itemselbg", &alpha_itemselbg); // theme.alpha.itemselbg + if (!config_setting_lookup_int(conf, "itemmarkedfg", &alpha_itemmarkedfg)) + config_setting_lookup_int(conf, "itemselfg", &alpha_itemmarkedfg); + + if (!config_setting_lookup_int(conf, "itemmarkedbg", &alpha_itemmarkedbg)) + config_setting_lookup_int(conf, "itemselbg", &alpha_itemmarkedbg); + config_setting_lookup_int(conf, "itemnormprifg", &alpha_itemnormprifg); // theme.alpha.itemnormprifg config_setting_lookup_int(conf, "itemnormpribg", &alpha_itemnormpribg); // theme.alpha.itemnormpribg config_setting_lookup_int(conf, "itemselprifg", &alpha_itemselprifg); // theme.alpha.itemselprifg @@ -227,6 +233,16 @@ void theme_load(void) { if (config_setting_lookup_string(conf, "itemselbg", &dest)) strcpy(colors[SchemeItemSel][ColBg], strdup(dest)); + if (config_setting_lookup_string(conf, "itemmarkedfg", &dest)) + strcpy(colors[SchemeItemMarked][ColFg], strdup(dest)); + else if (config_setting_lookup_string(conf, "itemselfg", &dest)) + strcpy(colors[SchemeItemMarked][ColFg], strdup(dest)); + + if (config_setting_lookup_string(conf, "itemmarkedbg", &dest)) + strcpy(colors[SchemeItemMarked][ColBg], strdup(dest)); + else if (config_setting_lookup_string(conf, "itemselbg", &dest)) + strcpy(colors[SchemeItemMarked][ColBg], strdup(dest)); + // items with priority if (config_setting_lookup_string(conf, "itemnormprifg", &dest)) strcpy(colors[SchemeItemNormPri][ColFg], strdup(dest)); diff --git a/libs/xresources.h b/libs/xresources.h index 233e428..b13f254 100644 --- a/libs/xresources.h +++ b/libs/xresources.h @@ -16,6 +16,8 @@ ResourcePref resources[] = { { "col_itemnormbg2", STRING, &col_itemnormbg2 }, { "col_itemselfg", STRING, &col_itemselfg }, { "col_itemselbg", STRING, &col_itemselbg }, + { "col_itemmarkedfg", STRING, &col_itemmarkedfg }, + { "col_itemmarkedbg", STRING, &col_itemmarkedbg }, { "col_itemnormprifg", STRING, &col_itemnormprifg }, { "col_itemnormpribg", STRING, &col_itemnormpribg }, { "col_itemselprifg", STRING, &col_itemselprifg }, @@ -44,6 +46,8 @@ ResourcePref resources[] = { { "alpha_itemnormbg2", INTEGER, &alpha_itemnormbg2 }, { "alpha_itemselfg", INTEGER, &alpha_itemselfg }, { "alpha_itemselbg", INTEGER, &alpha_itemselbg }, + { "alpha_itemmarkedfg", INTEGER, &alpha_itemmarkedfg }, + { "alpha_itemmarkedbg", INTEGER, &alpha_itemmarkedbg }, { "alpha_itemnormprifg", INTEGER, &alpha_itemnormprifg }, { "alpha_itemnormpribg", INTEGER, &alpha_itemnormpribg }, { "alpha_itemselprifg", INTEGER, &alpha_itemselprifg }, @@ -185,6 +189,7 @@ ResourcePref cols[] = { { "color0", STRING, &col_larrowbg }, { "color0", STRING, &col_rarrowbg }, { "color0", STRING, &col_itemselfg }, + { "color0", STRING, &col_itemmarkedfg }, { "color0", STRING, &col_itemselprifg }, { "color0", STRING, &col_inputbg }, { "color12", STRING, &col_promptbg }, @@ -192,6 +197,7 @@ ResourcePref cols[] = { { "color7", STRING, &col_capsbg }, { "color0", STRING, &col_capsfg }, { "color6", STRING, &col_itemselbg }, + { "color6", STRING, &col_itemmarkedbg }, { "color6", STRING, &col_itemselpribg }, { "color6", STRING, &col_border }, { "color0", STRING, &col_numfg }, diff --git a/options.h b/options.h index 03e03ae..77ca071 100644 --- a/options.h +++ b/options.h @@ -117,6 +117,8 @@ static char col_itemnormfg2[] = "#bbbbbb"; /* Normal foreground item co static char col_itemnormbg2[] = "#222222"; /* Normal background item colors for the next item */ static char col_itemselfg[] = "#eeeeee"; /* Selected foreground item color */ static char col_itemselbg[] = "#35638A"; /* Selected background item color */ +static char col_itemmarkedfg[] = "#eeeeee"; /* Marked foreground item color */ +static char col_itemmarkedbg[] = "#35638A"; /* Marked background item color */ static char col_itemnormprifg[] = "#bbbbbb"; /* Normal foreground item (high priority) color */ static char col_itemnormpribg[] = "#222222"; /* Normal background item (high priority) color */ static char col_itemselprifg[] = "#eeeeee"; /* Selected foreground item (high priority) color */ @@ -191,6 +193,8 @@ static int alpha_itemnormfg2 = 255; /* Alpha for next normal item fore static int alpha_itemnormbg2 = 200; /* Alpha for next normal item background (0-255) */ static int alpha_itemselfg = 255; /* Alpha for selected item foreground (0-255) */ static int alpha_itemselbg = 200; /* Alpha for selected item background (0-255) */ +static int alpha_itemmarkedfg = 255; /* Alpha for marked item foreground (0-255) */ +static int alpha_itemmarkedbg = 200; /* Alpha for marked item background (0-255) */ static int alpha_itemnormprifg = 255; /* alpha for normal priority item foreground (0-255) */ static int alpha_itemnormpribg = 200; /* Alpha for normal priority item background (0-255) */ static int alpha_itemselprifg = 255; /* Alpha for selected priority item foreground (0-255) */ diff --git a/themes/Arc-Dark.conf b/themes/Arc-Dark.conf index 9c9cc26..612d59c 100644 --- a/themes/Arc-Dark.conf +++ b/themes/Arc-Dark.conf @@ -10,6 +10,8 @@ theme = { itemnormbg2 = "#383c4a"; itemselfg = "#000000"; itemselbg = "#73c5e2"; + itemmarkedfg = "#000000"; + itemmarkedbg = "#73c5e2"; itemnormprifg = "#d3dae3"; itemnormpribg = "#383c4a"; itemselprifg = "#d3dae3"; diff --git a/themes/Catppuccin.conf b/themes/Catppuccin.conf index 96b0f98..f5f028d 100644 --- a/themes/Catppuccin.conf +++ b/themes/Catppuccin.conf @@ -10,6 +10,8 @@ theme = { itemnormbg2 = "#24273a"; itemselfg = "#181926"; itemselbg = "#91d7e3"; + itemmarkedfg = "#181926"; + itemmarkedbg = "#91d7e3"; itemnormprifg = "#cad3f5"; itemnormpribg = "#24273a"; itemselprifg = "#181926"; diff --git a/themes/Cyberpunk-Neon.conf b/themes/Cyberpunk-Neon.conf index 5f5e35b..46d885e 100644 --- a/themes/Cyberpunk-Neon.conf +++ b/themes/Cyberpunk-Neon.conf @@ -10,6 +10,8 @@ theme = { itemnormbg2 = "#000b1e"; itemselfg = "#000b1e"; itemselbg = "#0abdc6"; + itemmarkedfg = "#000b1e"; + itemmarkedbg = "#0abdc6"; itemnormprifg = "#0abdc6"; itemnormpribg = "#000b1e"; itemselprifg = "#000b1e"; diff --git a/themes/Doom-One.conf b/themes/Doom-One.conf index feef417..351a304 100644 --- a/themes/Doom-One.conf +++ b/themes/Doom-One.conf @@ -10,6 +10,8 @@ theme = { itemnormbg2 = "#282c34"; itemselfg = "#282c34"; itemselbg = "#ff6c6b"; + itemmarkedfg = "#282c34"; + itemmarkedbg = "#ff6c6b"; itemnormprifg = "#d7d7d7"; itemnormpribg = "#5b6268"; itemselprifg = "#d7d7d7"; diff --git a/themes/Dracula.conf b/themes/Dracula.conf index 020c2b6..1a050a5 100644 --- a/themes/Dracula.conf +++ b/themes/Dracula.conf @@ -10,6 +10,8 @@ theme = { itemnormbg2 = "#282a36"; itemselfg = "#000000"; itemselbg = "#bd93f9"; + itemmarkedfg = "#000000"; + itemmarkedbg = "#bd93f9"; itemnormprifg = "#f8f8f2"; itemnormpribg = "#282a36"; itemselprifg = "#000000"; diff --git a/themes/Gruvbox-Dark.conf b/themes/Gruvbox-Dark.conf index c651c7a..2810bff 100644 --- a/themes/Gruvbox-Dark.conf +++ b/themes/Gruvbox-Dark.conf @@ -10,6 +10,8 @@ theme = { itemnormbg2 = "#282828"; itemselfg = "#504945"; itemselbg = "#98971a"; + itemmarkedfg = "#504945"; + itemmarkedbg = "#98971a"; itemnormprifg = "#fcf1c7"; itemnormpribg = "#504945"; itemselprifg = "#fbf1c7"; diff --git a/themes/Gruvbox-Light.conf b/themes/Gruvbox-Light.conf index edfbed9..7bf5c71 100644 --- a/themes/Gruvbox-Light.conf +++ b/themes/Gruvbox-Light.conf @@ -10,6 +10,8 @@ theme = { itemnormbg2 = "#fdf6e3"; itemselfg = "#657b83"; itemselbg = "#dc322f"; + itemmarkedfg = "#657b83"; + itemmarkedbg = "#dc322f"; itemnormprifg = "#657b83"; itemnormpribg = "#fdf6e3"; itemselprifg = "#657b83"; diff --git a/themes/Nord.conf b/themes/Nord.conf index 21d6bb7..668d8a2 100644 --- a/themes/Nord.conf +++ b/themes/Nord.conf @@ -10,6 +10,8 @@ theme = { itemnormbg2 = "#2e3440"; itemselfg = "#eceff4"; itemselbg = "#bf616a"; + itemmarkedfg = "#eceff4"; + itemmarkedbg = "#bf616a"; itemnormprifg = "#eceff4"; itemnormpribg = "#3b4252"; itemselprifg = "#eceff4"; diff --git a/themes/Solarized-Dark.conf b/themes/Solarized-Dark.conf index 5140a0d..0996730 100644 --- a/themes/Solarized-Dark.conf +++ b/themes/Solarized-Dark.conf @@ -10,6 +10,8 @@ theme = { itemnormbg2 = "#002b36"; itemselfg = "#eee8d5"; itemselbg = "#dc322f"; + itemmarkedfg = "#eee8d5"; + itemmarkedbg = "#dc322f"; itemnormprifg = "#eee8d5"; itemnormpribg = "#002b36"; itemselprifg = "#eee8d5"; diff --git a/themes/Tokyo-Night.conf b/themes/Tokyo-Night.conf index 9d12fa3..abc6915 100644 --- a/themes/Tokyo-Night.conf +++ b/themes/Tokyo-Night.conf @@ -10,6 +10,8 @@ theme = { itemnormbg2 = "#1a1b26"; itemselfg = "#32344a"; itemselbg = "#e0af68"; + itemmarkedfg = "#32344a"; + itemmarkedbg = "#e0af68"; itemnormprifg = "#a9b1d6"; itemnormpribg = "#444B6A"; itemselprifg = "#a9b1d6"; diff --git a/themes/dmenu.conf b/themes/dmenu.conf index 694345d..94b890f 100644 --- a/themes/dmenu.conf +++ b/themes/dmenu.conf @@ -29,6 +29,8 @@ theme = { itemnormbg2 = "#222222"; itemselfg = "#eeeeee"; itemselbg = "#005577"; + itemmarkedfg = "#eeeeee"; + itemmarkedbg = "#005577"; itemnormprifg = "#bbbbbb"; itemnormpribg = "#222222"; itemselprifg = "#eeeeee"; @@ -80,6 +82,8 @@ theme = { itemnormbg2 = 255; itemselfg = 255; itemselbg = 255; + itemmarkedfg = 255; + itemmarkedbg = 255; itemnormprifg = 255; itemnormpribg = 255; itemselprifg = 255;