window.inactive.title.bg.color: #efece6
window.active.button.unpressed.image.color = #ffffff
+window.inactive.button.unpressed.image.color = #000000
struct theme {
float window_active_title_bg_color[4];
float window_active_handle_bg_color[4];
+
float window_inactive_title_bg_color[4];
+
float window_active_button_unpressed_image_color[4];
- struct wlr_texture *xbm_close;
- struct wlr_texture *xbm_maximize;
- struct wlr_texture *xbm_iconify;
+ float window_inactive_button_unpressed_image_color[4];
+
+ struct wlr_texture *xbm_close_active_unpressed;
+ struct wlr_texture *xbm_maximize_active_unpressed;
+ struct wlr_texture *xbm_iconify_active_unpressed;
+
+ struct wlr_texture *xbm_close_inactive_unpressed;
+ struct wlr_texture *xbm_maximize_inactive_unpressed;
+ struct wlr_texture *xbm_iconify_inactive_unpressed;
};
extern struct theme theme;
}
switch (deco_part) {
case LAB_DECO_BUTTON_CLOSE:
- wlr_texture_get_size(theme.xbm_close, &box.width, &box.height);
+ wlr_texture_get_size(theme.xbm_close_active_unpressed,
+ &box.width, &box.height);
margin = (rc.title_height - box.height) / 2;
box.x = view->x + view->surface->current.width + margin -
rc.title_height;
box.y = view->y - rc.title_height + margin;
break;
case LAB_DECO_BUTTON_MAXIMIZE:
- wlr_texture_get_size(theme.xbm_maximize, &box.width,
- &box.height);
+ wlr_texture_get_size(theme.xbm_maximize_active_unpressed,
+ &box.width, &box.height);
margin = (rc.title_height - box.height) / 2;
box.x = view->x + view->surface->current.width + margin -
rc.title_height * 2;
box.y = view->y - rc.title_height + margin;
break;
case LAB_DECO_BUTTON_ICONIFY:
- wlr_texture_get_size(theme.xbm_iconify, &box.width,
- &box.height);
+ wlr_texture_get_size(theme.xbm_iconify_active_unpressed,
+ &box.width, &box.height);
margin = (rc.title_height - box.height) / 2;
box.x = view->x + view->surface->current.width + margin -
rc.title_height * 3;
ddata.rgba = theme.window_inactive_title_bg_color;
draw_rect(&ddata, deco_box(view, LAB_DECO_PART_TITLE));
- render_icon(&ddata, deco_box(view, LAB_DECO_BUTTON_CLOSE),
- theme.xbm_close);
- render_icon(&ddata, deco_box(view, LAB_DECO_BUTTON_MAXIMIZE),
- theme.xbm_maximize);
- render_icon(&ddata, deco_box(view, LAB_DECO_BUTTON_ICONIFY),
- theme.xbm_iconify);
+ if (view_hasfocus(view)) {
+ render_icon(&ddata, deco_box(view, LAB_DECO_BUTTON_CLOSE),
+ theme.xbm_close_active_unpressed);
+ render_icon(&ddata, deco_box(view, LAB_DECO_BUTTON_MAXIMIZE),
+ theme.xbm_maximize_active_unpressed);
+ render_icon(&ddata, deco_box(view, LAB_DECO_BUTTON_ICONIFY),
+ theme.xbm_iconify_active_unpressed);
+ } else {
+ render_icon(&ddata, deco_box(view, LAB_DECO_BUTTON_CLOSE),
+ theme.xbm_close_inactive_unpressed);
+ render_icon(&ddata, deco_box(view, LAB_DECO_BUTTON_MAXIMIZE),
+ theme.xbm_maximize_inactive_unpressed);
+ render_icon(&ddata, deco_box(view, LAB_DECO_BUTTON_ICONIFY),
+ theme.xbm_iconify_inactive_unpressed);
+ }
}
struct render_data {
return (bool)g_pattern_match_simple(pattern, string);
}
+/* clang-format off */
static void entry(const char *key, const char *value)
{
if (!key || !value)
parse_hexstr(value, theme.window_inactive_title_bg_color);
if (match(key, "window.active.button.unpressed.image.color"))
parse_hexstr(value, theme.window_active_button_unpressed_image_color);
+ if (match(key, "window.inactive.button.unpressed.image.color"))
+ parse_hexstr(value, theme.window_inactive_button_unpressed_image_color);
}
+/* clang-format on */
static void rtrim(char **s)
{
* this was a bit hard-line. People might want to try labwc without having
* Openbox (and associated themes) installed.
*/
+/* clang-format off */
void theme_builtin(void)
{
parse_hexstr("#589bda", theme.window_active_title_bg_color);
parse_hexstr("#3c7cb7", theme.window_active_handle_bg_color);
parse_hexstr("#efece6", theme.window_inactive_title_bg_color);
parse_hexstr("#ffffff", theme.window_active_button_unpressed_image_color);
+ parse_hexstr("#000000", theme.window_inactive_button_unpressed_image_color);
}
+/* clang-format on */
void theme_read(const char *theme_name)
{
void xbm_load(struct wlr_renderer *r)
{
parse_set_color(theme.window_active_button_unpressed_image_color);
- load_button(r, "close.xbm", &theme.xbm_close, close_button_normal);
- load_button(r, "max.xbm", &theme.xbm_maximize, max_button_normal);
- load_button(r, "iconify.xbm", &theme.xbm_iconify, iconify_button_normal);
+ load_button(r, "close.xbm", &theme.xbm_close_active_unpressed, close_button_normal);
+ load_button(r, "max.xbm", &theme.xbm_maximize_active_unpressed, max_button_normal);
+ load_button(r, "iconify.xbm", &theme.xbm_iconify_active_unpressed, iconify_button_normal);
+
+ parse_set_color(theme.window_inactive_button_unpressed_image_color);
+ load_button(r, "close.xbm", &theme.xbm_close_inactive_unpressed, close_button_normal);
+ load_button(r, "max.xbm", &theme.xbm_maximize_inactive_unpressed, max_button_normal);
+ load_button(r, "iconify.xbm", &theme.xbm_iconify_inactive_unpressed, iconify_button_normal);
}
/* clang-format on */