]> git.mdlowis.com Git - proto/labwc.git/commitdiff
theme: add osd colors
authorJohan Malm <jgm323@gmail.com>
Wed, 13 Oct 2021 20:29:32 +0000 (21:29 +0100)
committerJohan Malm <jgm323@gmail.com>
Wed, 13 Oct 2021 20:29:32 +0000 (21:29 +0100)
docs/labwc-theme.5.scd
include/theme.h
src/osd.c
src/theme.c

index 8e71d8e974df73a1c30251d36bf905a797621347..31c9b35a05781e2d58e04d2f40a64806c725f15e 100644 (file)
@@ -70,6 +70,12 @@ elements are not listed here, but are supported.
 *menu.items.active.text.color*
        Text color of active menu item
 
+*osd.bg.color*
+       Background color of on-screen-display
+
+*osd.label.text.color*
+       Text color of on-screen-display
+
 *border.color*
        Set all border colors. This is obsolete, but supported for backward
        compatibility as some themes still contain it.
index 95954a3a6e97863dc70825e0b65b7d71896d3507..8041f94ebc94e6e3a017f2f00b350130d32e6982 100644 (file)
@@ -34,6 +34,9 @@ struct theme {
        float menu_items_active_bg_color[4];
        float menu_items_active_text_color[4];
 
+       float osd_bg_color[4];
+       float osd_label_text_color[4];
+
        struct wlr_texture *xbm_close_active_unpressed;
        struct wlr_texture *xbm_maximize_active_unpressed;
        struct wlr_texture *xbm_iconify_active_unpressed;
index 6af99473ff1cdc4639619d6339b3395ac229c0a9..70d4963997ecdbad9efef6b9100525c4d30dfea3 100644 (file)
--- a/src/osd.c
+++ b/src/osd.c
@@ -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);
index 784fdfee107edd44e0da08d655c1287533e65da1..8525a79d349b2204917b2c1301fdfd5630f57e20 100644 (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