theme->osd_window_switcher_item_padding_y = 1;
theme->osd_window_switcher_item_active_border_width = 2;
+ theme->osd_workspace_switcher_boxes_width = 20;
+ theme->osd_workspace_switcher_boxes_height = 20;
+
/* inherit settings in post_processing() if not set elsewhere */
theme->osd_bg_color[0] = FLT_MIN;
theme->osd_border_width = INT_MIN;
if (match_glob(key, "osd.window-switcher.item.active.border.width")) {
theme->osd_window_switcher_item_active_border_width = atoi(value);
}
+ if (match_glob(key, "osd.workspace-switcher.boxes.width")) {
+ theme->osd_workspace_switcher_boxes_width = atoi(value);
+ }
+ if (match_glob(key, "osd.workspace-switcher.boxes.height")) {
+ theme->osd_workspace_switcher_boxes_height = atoi(value);
+ }
if (match_glob(key, "osd.label.text.color")) {
parse_hexstr(value, theme->osd_label_text_color);
}
memcpy(theme->osd_border_color, theme->osd_label_text_color,
sizeof(theme->osd_border_color));
}
+ if (theme->osd_workspace_switcher_boxes_width == 0) {
+ theme->osd_workspace_switcher_boxes_height = 0;
+ }
+ if (theme->osd_workspace_switcher_boxes_height == 0) {
+ theme->osd_workspace_switcher_boxes_width = 0;
+ }
}
void
/* Settings */
uint16_t margin = 10;
uint16_t padding = 2;
- uint16_t rect_height = 20;
- uint16_t rect_width = 20;
+ uint16_t rect_height = theme->osd_workspace_switcher_boxes_height;
+ uint16_t rect_width = theme->osd_workspace_switcher_boxes_width;
+ bool hide_boxes = theme->osd_workspace_switcher_boxes_width == 0 ||
+ theme->osd_workspace_switcher_boxes_height == 0;
/* Dimensions */
size_t workspace_count = wl_list_length(&server->workspaces);
uint16_t marker_width = workspace_count * (rect_width + padding) - padding;
uint16_t width = margin * 2 + (marker_width < 200 ? 200 : marker_width);
- uint16_t height = margin * 3 + rect_height + font_height(&rc.font_osd);
+ uint16_t height = margin * (hide_boxes ? 2 : 3) + rect_height + font_height(&rc.font_osd);
cairo_t *cairo;
cairo_surface_t *surface;
};
draw_cairo_border(cairo, fbox, theme->osd_border_width);
- uint16_t x = (width - marker_width) / 2;
- wl_list_for_each(workspace, &server->workspaces, link) {
- bool active = workspace == server->workspace_current;
- set_cairo_color(cairo, server->theme->osd_label_text_color);
- cairo_rectangle(cairo, x, margin,
- rect_width - padding, rect_height);
- cairo_stroke(cairo);
- if (active) {
+ /* Boxes */
+ uint16_t x;
+ if (!hide_boxes) {
+ x = (width - marker_width) / 2;
+ wl_list_for_each(workspace, &server->workspaces, link) {
+ bool active = workspace == server->workspace_current;
+ set_cairo_color(cairo, server->theme->osd_label_text_color);
cairo_rectangle(cairo, x, margin,
rect_width - padding, rect_height);
- cairo_fill(cairo);
+ cairo_stroke(cairo);
+ if (active) {
+ cairo_rectangle(cairo, x, margin,
+ rect_width - padding, rect_height);
+ cairo_fill(cairo);
+ }
+ x += rect_width + padding;
}
- x += rect_width + padding;
}
/* Text */
/* Center workspace indicator on the x axis */
x = font_width(&rc.font_osd, server->workspace_current->name);
x = (width - x) / 2;
- cairo_move_to(cairo, x, margin * 2 + rect_height);
+ if (!hide_boxes) {
+ cairo_move_to(cairo, x, margin * 2 + rect_height);
+ } else {
+ cairo_move_to(cairo, x, (height - font_height(&rc.font_osd)) / 2.0);
+ }
//pango_font_description_set_weight(desc, PANGO_WEIGHT_BOLD);
pango_layout_set_font_description(layout, desc);
pango_font_description_free(desc);