Border width of the selection box in the window switcher in pixels.
Default is 2.
+*osd.window-switcher.item.icon.size*
+ Size of the icon in window switcher, in pixels.
+ If not set, the font size derived from <theme><font place="OnScreenDisplay">
+ is used.
+
*osd.window-switcher.preview.border.width*
Border width of the outlines shown as the preview of the window selected
by window switcher. Inherits *osd.border.width* if not set.
osd.window-switcher.item.padding.x: 10
osd.window-switcher.item.padding.y: 1
osd.window-switcher.item.active.border.width: 2
+# The icon size the same as the font size by default
+# osd.window-switcher.item.icon.size: 50
osd.window-switcher.preview.border.width: 1
osd.window-switcher.preview.border.color: #dddda6,#000000,#dddda6
int osd_window_switcher_item_padding_x;
int osd_window_switcher_item_padding_y;
int osd_window_switcher_item_active_border_width;
+ int osd_window_switcher_item_icon_size;
bool osd_window_switcher_width_is_percent;
int osd_window_switcher_preview_border_width;
float osd_window_switcher_preview_border_color[3][4];
#include "common/array.h"
#include "common/buf.h"
#include "common/font.h"
+#include "common/macros.h"
#include "common/scaled-font-buffer.h"
#include "common/scaled-icon-buffer.h"
#include "common/scaled-rect-buffer.h"
* theme->osd_window_switcher_item_padding_x)
* field->width / 100.0;
struct wlr_scene_node *node = NULL;
+ int height = -1;
if (field->content == LAB_FIELD_ICON) {
- int icon_size = font_height(&rc.font_osd);
+ int icon_size = MIN(field_width,
+ theme->osd_window_switcher_item_icon_size);
struct scaled_icon_buffer *icon_buffer =
scaled_icon_buffer_create(item_root,
server, icon_size, icon_size);
scaled_icon_buffer_set_app_id(icon_buffer,
view_get_string_prop(*view, "app_id"));
node = &icon_buffer->scene_buffer->node;
+ height = icon_size;
} else {
buf_clear(&buf);
osd_field_get_content(field, &buf, *view);
scaled_font_buffer_update(font_buffer, buf.data, field_width,
&rc.font_osd, text_color, bg_color);
node = &font_buffer->scene_buffer->node;
+ height = font_height(&rc.font_osd);
}
wlr_scene_node_set_position(node, x,
- y + theme->osd_window_switcher_item_padding_y
- + theme->osd_window_switcher_item_active_border_width);
+ y + (theme->osd_window_switcher_item_height - height) / 2);
x += field_width + theme->osd_window_switcher_item_padding_x;
}
theme->osd_window_switcher_item_padding_x = 10;
theme->osd_window_switcher_item_padding_y = 1;
theme->osd_window_switcher_item_active_border_width = 2;
+ theme->osd_window_switcher_item_icon_size = -1;
/* inherit settings in post_processing() if not set elsewhere */
theme->osd_window_switcher_preview_border_width = INT_MIN;
get_int_if_positive(
value, "osd.window-switcher.item.active.border.width");
}
+ if (match_glob(key, "osd.window-switcher.item.icon.size")) {
+ theme->osd_window_switcher_item_icon_size =
+ get_int_if_positive(
+ value, "osd.window-switcher.item.icon.size");
+ }
if (match_glob(key, "osd.window-switcher.preview.border.width")) {
theme->osd_window_switcher_preview_border_width =
get_int_if_positive(
theme->menu_header_height = font_height(&rc.font_menuheader)
+ 2 * theme->menu_items_padding_y;
- theme->osd_window_switcher_item_height = font_height(&rc.font_osd)
+ int osd_font_height = font_height(&rc.font_osd);
+ if (theme->osd_window_switcher_item_icon_size <= 0) {
+ theme->osd_window_switcher_item_icon_size = osd_font_height;
+ }
+ int osd_field_height =
+ MAX(osd_font_height, theme->osd_window_switcher_item_icon_size);
+ theme->osd_window_switcher_item_height = osd_field_height
+ 2 * theme->osd_window_switcher_item_padding_y
+ 2 * theme->osd_window_switcher_item_active_border_width;