theme: add osd colors

This commit is contained in:
Johan Malm 2021-10-13 21:29:32 +01:00
parent 2d4ca16db8
commit 960a1bb2ed
4 changed files with 32 additions and 5 deletions

View file

@ -8,6 +8,7 @@
#include "common/font.h"
#include "config/rcxml.h"
#include "labwc.h"
#include "theme.h"
#define OSD_ITEM_HEIGHT (20)
#define OSD_ITEM_WIDTH (600)
@ -73,6 +74,8 @@ void
osd_update(struct server *server)
{
struct wlr_renderer *renderer = server->renderer;
struct theme *theme = server->theme;
int w = OSD_ITEM_WIDTH + 2 * OSD_BORDER_WIDTH;
int h = get_osd_height(&server->views);
@ -81,11 +84,16 @@ osd_update(struct server *server)
cairo_t *cairo = cairo_create(surf);
/* background */
set_source(cairo, (float[4]){1.0f, 1.0f, 1.0f, 1.0f});
set_source(cairo, theme->osd_bg_color);
cairo_rectangle(cairo, 0, 0, w, h);
cairo_fill(cairo);
/* highlight current application */
/* border */
set_source(cairo, theme->osd_label_text_color);
cairo_rectangle(cairo, 0, 0, w, h);
cairo_stroke(cairo);
/* highlight current window */
int y = OSD_BORDER_WIDTH;
struct view *view;
wl_list_for_each(view, &server->views, link) {
@ -93,17 +101,17 @@ osd_update(struct server *server)
continue;
}
if (view == server->cycle_view) {
set_source(cairo, (float[4]){0.3f, 0.3f, 0.3f, 0.5f});
set_source(cairo, theme->osd_label_text_color);
cairo_rectangle(cairo, OSD_BORDER_WIDTH, y,
OSD_ITEM_WIDTH, OSD_ITEM_HEIGHT);
cairo_fill(cairo);
cairo_stroke(cairo);
break;
}
y += OSD_ITEM_HEIGHT;
}
/* text */
set_source(cairo, (float[4]){0.0f, 0.0f, 0.0f, 1.0f});
set_source(cairo, theme->osd_label_text_color);
PangoLayout *layout = pango_cairo_create_layout(cairo);
pango_layout_set_width(layout, w * PANGO_SCALE);
pango_layout_set_ellipsize(layout, PANGO_ELLIPSIZE_END);

View file

@ -102,6 +102,9 @@ theme_builtin(struct theme *theme)
parse_hexstr("#000000", theme->menu_items_text_color);
parse_hexstr("#dddad6", theme->menu_items_active_bg_color);
parse_hexstr("#000000", theme->menu_items_active_text_color);
parse_hexstr("#dddad6", theme->osd_bg_color);
parse_hexstr("#000000", theme->osd_label_text_color);
}
static bool
@ -207,6 +210,13 @@ entry(struct theme *theme, const char *key, const char *value)
if (match(key, "menu.items.active.text.color")) {
parse_hexstr(value, theme->menu_items_active_text_color);
}
if (match(key, "osd.bg.color")) {
parse_hexstr(value, theme->osd_bg_color);
}
if (match(key, "osd.label.text.color")) {
parse_hexstr(value, theme->osd_label_text_color);
}
}
static void