diff --git a/client/common/common.c b/client/common/common.c index 53880a5..1100456 100644 --- a/client/common/common.c +++ b/client/common/common.c @@ -285,6 +285,8 @@ do_getopt(struct client *client, int *argc, char **argv[]) { "tf", required_argument, 0, 0x103 }, { "fb", required_argument, 0, 0x104 }, { "ff", required_argument, 0, 0x105 }, + { "cb", required_argument, 0, 0x126 }, + { "cf", required_argument, 0, 0x127 }, { "nb", required_argument, 0, 0x106 }, { "nf", required_argument, 0, 0x107 }, { "hb", required_argument, 0, 0x108 }, @@ -416,6 +418,12 @@ do_getopt(struct client *client, int *argc, char **argv[]) case 0x105: client->colors[BM_COLOR_FILTER_FG] = optarg; break; + case 0x126: + client->colors[BM_COLOR_CURSOR_BG] = optarg; + break; + case 0x127: + client->colors[BM_COLOR_CURSOR_FG] = optarg; + break; case 0x106: client->colors[BM_COLOR_ITEM_BG] = optarg; break; diff --git a/lib/bemenu.h b/lib/bemenu.h index 3ea2023..892584b 100644 --- a/lib/bemenu.h +++ b/lib/bemenu.h @@ -335,6 +335,8 @@ enum bm_color { BM_COLOR_TITLE_FG, BM_COLOR_FILTER_BG, BM_COLOR_FILTER_FG, + BM_COLOR_CURSOR_BG, + BM_COLOR_CURSOR_FG, BM_COLOR_ITEM_BG, BM_COLOR_ITEM_FG, BM_COLOR_HIGHLIGHTED_BG, diff --git a/lib/menu.c b/lib/menu.c index 381fbfc..f74cf28 100644 --- a/lib/menu.c +++ b/lib/menu.c @@ -19,6 +19,8 @@ static const char *default_colors[BM_COLOR_LAST] = { "#D81860FF", // BM_COLOR_TITLE_FG "#121212FF", // BM_COLOR_FILTER_BG "#CACACAFF", // BM_COLOR_FILTER_FG + "#121212FF", // BM_COLOR_CURSOR_BG + "#CACACAFF", // BM_COLOR_CURSOR_FG "#121212FF", // BM_COLOR_ITEM_BG "#CACACAFF", // BM_COLOR_ITEM_FG "#121212FF", // BM_COLOR_HIGHLIGHTED_BG diff --git a/lib/renderers/cairo_renderer.h b/lib/renderers/cairo_renderer.h index e0ee47c..1c00d9d 100644 --- a/lib/renderers/cairo_renderer.h +++ b/lib/renderers/cairo_renderer.h @@ -27,6 +27,8 @@ struct cairo_paint { uint32_t cursor; uint32_t cursor_height; uint32_t cursor_width; + struct cairo_color cursor_fg; + struct cairo_color cursor_bg; uint32_t hpadding; bool draw_cursor; @@ -161,7 +163,7 @@ bm_cairo_draw_line_str(struct cairo *cairo, struct cairo_paint *paint, struct ca cursor_width = paint->cursor_width; } uint32_t cursor_height = fmin(paint->cursor_height == 0 ? line_height : paint->cursor_height, line_height); - cairo_set_source_rgba(cairo->cr, paint->fg.r, paint->fg.b, paint->fg.g, paint->fg.a); + cairo_set_source_rgba(cairo->cr, paint->cursor_fg.r, paint->cursor_fg.b, paint->cursor_fg.g, paint->cursor_fg.a); cairo_rectangle(cairo->cr, paint->pos.x + paint->box.lx + rect.x / PANGO_SCALE, paint->pos.y - paint->box.ty + ((line_height - cursor_height) / 2), cursor_width, cursor_height); @@ -172,7 +174,7 @@ bm_cairo_draw_line_str(struct cairo *cairo, struct cairo_paint *paint, struct ca cursor_width, line_height); cairo_clip(cairo->cr); - cairo_set_source_rgba(cairo->cr, paint->bg.r, paint->bg.b, paint->bg.g, paint->bg.a); + cairo_set_source_rgba(cairo->cr, paint->cursor_bg.r, paint->cursor_bg.b, paint->cursor_bg.g, paint->cursor_bg.a); cairo_move_to(cairo->cr, paint->box.lx + paint->pos.x, paint->pos.y - base + paint->baseline); pango_cairo_show_layout(cairo->cr, layout); cairo_reset_clip(cairo->cr); @@ -301,6 +303,8 @@ bm_cairo_paint(struct cairo *cairo, uint32_t width, uint32_t max_height, const s bm_cairo_color_from_menu_color(menu, BM_COLOR_FILTER_FG, &paint.fg); bm_cairo_color_from_menu_color(menu, BM_COLOR_FILTER_BG, &paint.bg); + bm_cairo_color_from_menu_color(menu, BM_COLOR_CURSOR_FG, &paint.cursor_fg); + bm_cairo_color_from_menu_color(menu, BM_COLOR_CURSOR_BG, &paint.cursor_bg); paint.draw_cursor = true; paint.cursor = menu->cursor; paint.cursor_height = menu->cursor_height; diff --git a/man/bemenu.1.scd.in b/man/bemenu.1.scd.in index 5c3e2f5..6ce6268 100644 --- a/man/bemenu.1.scd.in +++ b/man/bemenu.1.scd.in @@ -136,6 +136,10 @@ control the red, green, blue and alpha-transparency channels. *--ff* <_color_> Filter foreground +*--cb* <_color_> Cursor background. + +*--cf* <_color_> Cursor foreground + *--nb* <_color_> Normal background. *--nf* <_color_> Normal foreground.