mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2026-06-19 14:33:16 -04:00
opt: tab_bar_decorate and jump_label_decorate config separate
This commit is contained in:
parent
46f2dd293b
commit
75e88f0faf
9 changed files with 292 additions and 166 deletions
|
|
@ -14,7 +14,6 @@ Control the sizing of window borders and gaps.
|
||||||
| `gappiv` | `5` | Vertical inner gap. |
|
| `gappiv` | `5` | Vertical inner gap. |
|
||||||
| `gappoh` | `10` | Horizontal outer gap (between windows and screen edges). |
|
| `gappoh` | `10` | Horizontal outer gap (between windows and screen edges). |
|
||||||
| `gappov` | `10` | Vertical outer gap. |
|
| `gappov` | `10` | Vertical outer gap. |
|
||||||
| `tab_bar_height` | `50` | Height of the tab bar for monocle layout. |
|
|
||||||
|
|
||||||
## Colors
|
## Colors
|
||||||
|
|
||||||
|
|
@ -56,16 +55,35 @@ You can also color-code windows based on their state:
|
||||||
### Overview Jump Mode
|
### Overview Jump Mode
|
||||||
| Setting | Default | Description |
|
| Setting | Default | Description |
|
||||||
| :--- | :--- | :--- |
|
| :--- | :--- | :--- |
|
||||||
| `text_decorate_fg_color` | `0xc4939dff` | label text color. |
|
| `jump_label_decorate_fg_color` | `0xc4939dff` | text color. |
|
||||||
| `text_decorate_bg_color` | `0x201b14ff` | label background color.|
|
| `jump_label_decorate_bg_color` | `0x201b14ff` | background color.|
|
||||||
| `text_decorate_focus_fg_color` | `0x201b14ff` | label text color for focus. |
|
| `jump_label_decorate_focus_fg_color` | `0x201b14ff` | text color for focus. |
|
||||||
| `text_decorate_focus_bg_color` | `0xc4939dff` | label background color for focus.|
|
| `jump_label_decorate_focus_bg_color` | `0xc4939dff` | background color for focus.|
|
||||||
| `text_decorate_border_color` | `0x8BAA9Bff` | label border color.|
|
| `jump_label_decorate_border_color` | `0x8BAA9Bff` | border color.|
|
||||||
| `text_decorate_border_width` | `4` | label border width.|
|
| `jump_label_decorate_border_width` | `4` | border width.|
|
||||||
| `text_decorate_corner_radius` | `5` | label corner radius.|
|
| `jump_label_decorate_corner_radius` | `5` | corner radius.|
|
||||||
| `text_decorate_padding_x` | `10` | label horizontal padding.|
|
| `jump_label_decorate_padding_x` | `10` | horizontal padding.|
|
||||||
| `text_decorate_padding_y` | `10` | label vertical padding.|
|
| `jump_label_decorate_padding_y` | `10` | vertical padding.|
|
||||||
| `text_decorate_font_desc` | `monospace Bold 16` | label font set.|
|
| `jump_label_decorate_font_desc` | `monospace Bold 16` | font set.|
|
||||||
|
|
||||||
|
### Tab Bar For Monocle Layout
|
||||||
|
| Setting | Default | Description |
|
||||||
|
| :--- | :--- | :--- |
|
||||||
|
| `tab_bar_height` | `50` | Height of the tab bar for monocle layout. |
|
||||||
|
| `tab_bar_decorate_fg_color` | `0xc4939dff` | text color.
|
||||||
|
| `tab_bar_decorate_bg_color` | `0x201b14ff` | background color.|
|
||||||
|
| `tab_bar_decorate_focus_fg_color` | `0x201b14ff` | text color for focus. |
|
||||||
|
| `tab_bar_decorate_focus_bg_color` | `0xc4939dff` | background color for focus.|
|
||||||
|
| `tab_bar_decorate_border_color` | `0x8BAA9Bff` | border color.|
|
||||||
|
| `tab_bar_decorate_border_width` | `4` | border width.|
|
||||||
|
| `tab_bar_decorate_corner_radius` | `5` | corner radius.|
|
||||||
|
| `tab_bar_decorate_padding_x` | `0` | horizontal padding.|
|
||||||
|
| `tab_bar_decorate_padding_y` | `0` | vertical padding.|
|
||||||
|
| `tab_bar_decorate_font_desc` | `monospace Bold 16` | font set.|
|
||||||
|
|
||||||
|
## Borders
|
||||||
|
|
||||||
|
Control the appearance of window borders.
|
||||||
|
|
||||||
## Cursor Theme
|
## Cursor Theme
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -97,20 +97,20 @@ void client_pending_force_kill(Client *c) {
|
||||||
kill(c->pid, SIGKILL);
|
kill(c->pid, SIGKILL);
|
||||||
}
|
}
|
||||||
|
|
||||||
void client_add_text_node(Client *c) {
|
void client_add_jump_label_node(Client *c) {
|
||||||
c->text_node = mango_text_node_create(c->scene, config.textdata);
|
c->jump_label_node = mango_jump_label_node_create(c->scene, config.jumplabeldata);
|
||||||
wlr_scene_node_lower_to_bottom(&c->text_node->scene_buffer->node);
|
wlr_scene_node_lower_to_bottom(&c->jump_label_node->scene_buffer->node);
|
||||||
wlr_scene_node_set_enabled(&c->text_node->scene_buffer->node, false);
|
wlr_scene_node_set_enabled(&c->jump_label_node->scene_buffer->node, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void client_add_titlebar_node(Client *c) {
|
void client_add_tab_bar_node(Client *c) {
|
||||||
MangoNodeData *mangonodedata = ecalloc(1, sizeof(MangoNodeData));
|
MangoNodeData *mangonodedata = ecalloc(1, sizeof(MangoNodeData));
|
||||||
mangonodedata->node_data = c;
|
mangonodedata->node_data = c;
|
||||||
mangonodedata->type = MANGO_TITLE_NODE;
|
mangonodedata->type = MANGO_TITLE_NODE;
|
||||||
|
|
||||||
c->titlebar_node = mango_titlebar_node_create(
|
c->tab_bar_node = mango_tab_bar_node_create(
|
||||||
mangonodedata, layers[LyrDecorate], config.textdata, 0, 0);
|
mangonodedata, layers[LyrDecorate], config.tabdata, 0, 0);
|
||||||
wlr_scene_node_lower_to_bottom(&c->titlebar_node->scene_buffer->node);
|
wlr_scene_node_lower_to_bottom(&c->tab_bar_node->scene_buffer->node);
|
||||||
wlr_scene_node_set_enabled(&c->titlebar_node->scene_buffer->node, false);
|
wlr_scene_node_set_enabled(&c->tab_bar_node->scene_buffer->node, false);
|
||||||
mango_titlebar_node_update(c->titlebar_node, client_get_title(c), 1.0);
|
mango_tab_bar_node_update(c->tab_bar_node, client_get_title(c), 1.0);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -291,12 +291,12 @@ void apply_shield(Client *c, struct wlr_box clip_box) {
|
||||||
|
|
||||||
void global_draw_titlebar(Client *c, int32_t x, int32_t y, int32_t width,
|
void global_draw_titlebar(Client *c, int32_t x, int32_t y, int32_t width,
|
||||||
int32_t height) {
|
int32_t height) {
|
||||||
if (!c->titlebar_node)
|
if (!c->tab_bar_node)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
wlr_scene_node_set_position(&c->titlebar_node->scene_buffer->node, x, y);
|
wlr_scene_node_set_position(&c->tab_bar_node->scene_buffer->node, x, y);
|
||||||
wlr_scene_node_set_enabled(&c->titlebar_node->scene_buffer->node, true);
|
wlr_scene_node_set_enabled(&c->tab_bar_node->scene_buffer->node, true);
|
||||||
mango_titlebar_node_set_size(c->titlebar_node, width, height);
|
mango_tab_bar_node_set_size(c->tab_bar_node, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
void apply_split_border(Client *c, bool hit_no_border) {
|
void apply_split_border(Client *c, bool hit_no_border) {
|
||||||
|
|
|
||||||
|
|
@ -388,7 +388,8 @@ typedef struct {
|
||||||
|
|
||||||
struct xkb_context *ctx;
|
struct xkb_context *ctx;
|
||||||
struct xkb_keymap *keymap;
|
struct xkb_keymap *keymap;
|
||||||
TextDrawData textdata;
|
DecorateDrawData jumplabeldata;
|
||||||
|
DecorateDrawData tabdata;
|
||||||
} Config;
|
} Config;
|
||||||
|
|
||||||
typedef int32_t (*FuncType)(const Arg *);
|
typedef int32_t (*FuncType)(const Arg *);
|
||||||
|
|
@ -1707,76 +1708,146 @@ bool parse_option(Config *config, char *key, char *value) {
|
||||||
config->cursor_size = atoi(value);
|
config->cursor_size = atoi(value);
|
||||||
} else if (strcmp(key, "cursor_theme") == 0) {
|
} else if (strcmp(key, "cursor_theme") == 0) {
|
||||||
config->cursor_theme = strdup(value);
|
config->cursor_theme = strdup(value);
|
||||||
} else if (strcmp(key, "text_decorate_font_desc") == 0) {
|
} else if (strcmp(key, "tab_bar_decorate_font_desc") == 0) {
|
||||||
config->textdata.font_desc = strdup(value);
|
config->tabdata.font_desc = strdup(value);
|
||||||
} else if (strcmp(key, "text_decorate_fg_color") == 0) {
|
} else if (strcmp(key, "tab_bar_decorate_fg_color") == 0) {
|
||||||
int64_t color = parse_color(value);
|
int64_t color = parse_color(value);
|
||||||
if (color == -1) {
|
if (color == -1) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"\033[1m\033[31m[ERROR]:\033[33m Invalid "
|
"\033[1m\033[31m[ERROR]:\033[33m Invalid "
|
||||||
"text_decorate_fg_color "
|
"tab_bar_decorate_fg_color "
|
||||||
"format: %s\n",
|
"format: %s\n",
|
||||||
value);
|
value);
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
convert_hex_to_rgba(config->textdata.fg_color, color);
|
convert_hex_to_rgba(config->tabdata.fg_color, color);
|
||||||
}
|
}
|
||||||
} else if (strcmp(key, "text_decorate_bg_color") == 0) {
|
} else if (strcmp(key, "tab_bar_decorate_bg_color") == 0) {
|
||||||
int64_t color = parse_color(value);
|
int64_t color = parse_color(value);
|
||||||
if (color == -1) {
|
if (color == -1) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"\033[1m\033[31m[ERROR]:\033[33m Invalid "
|
"\033[1m\033[31m[ERROR]:\033[33m Invalid "
|
||||||
"text_decorate_bg_color "
|
"tab_bar_decorate_bg_color "
|
||||||
"format: %s\n",
|
"format: %s\n",
|
||||||
value);
|
value);
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
convert_hex_to_rgba(config->textdata.bg_color, color);
|
convert_hex_to_rgba(config->tabdata.bg_color, color);
|
||||||
}
|
}
|
||||||
} else if (strcmp(key, "text_decorate_focus_fg_color") == 0) {
|
} else if (strcmp(key, "tab_bar_decorate_focus_fg_color") == 0) {
|
||||||
int64_t color = parse_color(value);
|
int64_t color = parse_color(value);
|
||||||
if (color == -1) {
|
if (color == -1) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"\033[1m\033[31m[ERROR]:\033[33m Invalid "
|
"\033[1m\033[31m[ERROR]:\033[33m Invalid "
|
||||||
"text_decorate_focus_fg_color "
|
"tab_bar_decorate_focus_fg_color "
|
||||||
"format: %s\n",
|
"format: %s\n",
|
||||||
value);
|
value);
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
convert_hex_to_rgba(config->textdata.focus_fg_color, color);
|
convert_hex_to_rgba(config->tabdata.focus_fg_color, color);
|
||||||
}
|
}
|
||||||
} else if (strcmp(key, "text_decorate_focus_bg_color") == 0) {
|
} else if (strcmp(key, "tab_bar_decorate_focus_bg_color") == 0) {
|
||||||
int64_t color = parse_color(value);
|
int64_t color = parse_color(value);
|
||||||
if (color == -1) {
|
if (color == -1) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"\033[1m\033[31m[ERROR]:\033[33m Invalid "
|
"\033[1m\033[31m[ERROR]:\033[33m Invalid "
|
||||||
"text_decorate_focus_bg_color "
|
"tab_bar_decorate_focus_bg_color "
|
||||||
"format: %s\n",
|
"format: %s\n",
|
||||||
value);
|
value);
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
convert_hex_to_rgba(config->textdata.focus_bg_color, color);
|
convert_hex_to_rgba(config->tabdata.focus_bg_color, color);
|
||||||
}
|
}
|
||||||
} else if (strcmp(key, "text_decorate_border_color") == 0) {
|
} else if (strcmp(key, "tab_bar_decorate_border_color") == 0) {
|
||||||
int64_t color = parse_color(value);
|
int64_t color = parse_color(value);
|
||||||
if (color == -1) {
|
if (color == -1) {
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"\033[1m\033[31m[ERROR]:\033[33m Invalid "
|
"\033[1m\033[31m[ERROR]:\033[33m Invalid "
|
||||||
"text_decorate_border_color "
|
"tab_bar_decorate_border_color "
|
||||||
"format: %s\n",
|
"format: %s\n",
|
||||||
value);
|
value);
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
convert_hex_to_rgba(config->textdata.border_color, color);
|
convert_hex_to_rgba(config->tabdata.border_color, color);
|
||||||
}
|
}
|
||||||
} else if (strcmp(key, "text_decorate_border_width") == 0) {
|
} else if (strcmp(key, "tab_bar_decorate_border_width") == 0) {
|
||||||
config->textdata.border_width = CLAMP_INT(atoi(value), 0, 100);
|
config->tabdata.border_width = CLAMP_INT(atoi(value), 0, 100);
|
||||||
} else if (strcmp(key, "text_decorate_corner_radius") == 0) {
|
} else if (strcmp(key, "tab_bar_decorate_corner_radius") == 0) {
|
||||||
config->textdata.corner_radius = CLAMP_INT(atoi(value), 0, 100);
|
config->tabdata.corner_radius = CLAMP_INT(atoi(value), 0, 100);
|
||||||
} else if (strcmp(key, "text_decorate_padding_x") == 0) {
|
} else if (strcmp(key, "tab_bar_decorate_padding_x") == 0) {
|
||||||
config->textdata.padding_x = CLAMP_INT(atoi(value), 0, 100);
|
config->tabdata.padding_x = CLAMP_INT(atoi(value), 0, 100);
|
||||||
} else if (strcmp(key, "text_decorate_padding_y") == 0) {
|
} else if (strcmp(key, "tab_bar_decorate_padding_y") == 0) {
|
||||||
config->textdata.padding_y = CLAMP_INT(atoi(value), 0, 100);
|
config->tabdata.padding_y = CLAMP_INT(atoi(value), 0, 100);
|
||||||
|
} else if (strcmp(key, "jump_label_decorate_font_desc") == 0) {
|
||||||
|
config->jumplabeldata.font_desc = strdup(value);
|
||||||
|
} else if (strcmp(key, "jump_label_decorate_fg_color") == 0) {
|
||||||
|
int64_t color = parse_color(value);
|
||||||
|
if (color == -1) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"\033[1m\033[31m[ERROR]:\033[33m Invalid "
|
||||||
|
"jump_label_decorate_fg_color "
|
||||||
|
"format: %s\n",
|
||||||
|
value);
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
convert_hex_to_rgba(config->jumplabeldata.fg_color, color);
|
||||||
|
}
|
||||||
|
} else if (strcmp(key, "jump_label_decorate_bg_color") == 0) {
|
||||||
|
int64_t color = parse_color(value);
|
||||||
|
if (color == -1) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"\033[1m\033[31m[ERROR]:\033[33m Invalid "
|
||||||
|
"jump_label_decorate_bg_color "
|
||||||
|
"format: %s\n",
|
||||||
|
value);
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
convert_hex_to_rgba(config->jumplabeldata.bg_color, color);
|
||||||
|
}
|
||||||
|
} else if (strcmp(key, "jump_label_decorate_focus_fg_color") == 0) {
|
||||||
|
int64_t color = parse_color(value);
|
||||||
|
if (color == -1) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"\033[1m\033[31m[ERROR]:\033[33m Invalid "
|
||||||
|
"jump_label_decorate_focus_fg_color "
|
||||||
|
"format: %s\n",
|
||||||
|
value);
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
convert_hex_to_rgba(config->jumplabeldata.focus_fg_color, color);
|
||||||
|
}
|
||||||
|
} else if (strcmp(key, "jump_label_decorate_focus_bg_color") == 0) {
|
||||||
|
int64_t color = parse_color(value);
|
||||||
|
if (color == -1) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"\033[1m\033[31m[ERROR]:\033[33m Invalid "
|
||||||
|
"jump_label_decorate_focus_bg_color "
|
||||||
|
"format: %s\n",
|
||||||
|
value);
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
convert_hex_to_rgba(config->jumplabeldata.focus_bg_color, color);
|
||||||
|
}
|
||||||
|
} else if (strcmp(key, "jump_label_decorate_border_color") == 0) {
|
||||||
|
int64_t color = parse_color(value);
|
||||||
|
if (color == -1) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"\033[1m\033[31m[ERROR]:\033[33m Invalid "
|
||||||
|
"jump_label_decorate_border_color "
|
||||||
|
"format: %s\n",
|
||||||
|
value);
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
convert_hex_to_rgba(config->jumplabeldata.border_color, color);
|
||||||
|
}
|
||||||
|
} else if (strcmp(key, "jump_label_decorate_border_width") == 0) {
|
||||||
|
config->jumplabeldata.border_width = CLAMP_INT(atoi(value), 0, 100);
|
||||||
|
} else if (strcmp(key, "jump_label_decorate_corner_radius") == 0) {
|
||||||
|
config->jumplabeldata.corner_radius = CLAMP_INT(atoi(value), 0, 100);
|
||||||
|
} else if (strcmp(key, "jump_label_decorate_padding_x") == 0) {
|
||||||
|
config->jumplabeldata.padding_x = CLAMP_INT(atoi(value), 0, 100);
|
||||||
|
} else if (strcmp(key, "jump_label_decorate_padding_y") == 0) {
|
||||||
|
config->jumplabeldata.padding_y = CLAMP_INT(atoi(value), 0, 100);
|
||||||
} else if (strcmp(key, "disable_while_typing") == 0) {
|
} else if (strcmp(key, "disable_while_typing") == 0) {
|
||||||
config->disable_while_typing = atoi(value);
|
config->disable_while_typing = atoi(value);
|
||||||
} else if (strcmp(key, "left_handed") == 0) {
|
} else if (strcmp(key, "left_handed") == 0) {
|
||||||
|
|
@ -3238,9 +3309,14 @@ void free_config(void) {
|
||||||
config.cursor_theme = NULL;
|
config.cursor_theme = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.textdata.font_desc) {
|
if (config.jumplabeldata.font_desc) {
|
||||||
free((void *)config.textdata.font_desc);
|
free((void *)config.jumplabeldata.font_desc);
|
||||||
config.textdata.font_desc = NULL;
|
config.jumplabeldata.font_desc = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (config.tabdata.font_desc) {
|
||||||
|
free((void *)config.tabdata.font_desc);
|
||||||
|
config.tabdata.font_desc = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.tablet_map_to_mon) {
|
if (config.tablet_map_to_mon) {
|
||||||
|
|
@ -3410,12 +3486,19 @@ void override_config(void) {
|
||||||
config.unfocused_opacity =
|
config.unfocused_opacity =
|
||||||
CLAMP_FLOAT(config.unfocused_opacity, 0.0f, 1.0f);
|
CLAMP_FLOAT(config.unfocused_opacity, 0.0f, 1.0f);
|
||||||
|
|
||||||
config.textdata.border_width =
|
config.tabdata.border_width =
|
||||||
CLAMP_INT(config.textdata.border_width, 0, 100);
|
CLAMP_INT(config.tabdata.border_width, 0, 100);
|
||||||
config.textdata.corner_radius =
|
config.tabdata.corner_radius =
|
||||||
CLAMP_INT(config.textdata.corner_radius, 0, 100);
|
CLAMP_INT(config.tabdata.corner_radius, 0, 100);
|
||||||
config.textdata.padding_x = CLAMP_INT(config.textdata.padding_x, 0, 100);
|
config.tabdata.padding_x = CLAMP_INT(config.tabdata.padding_x, 0, 100);
|
||||||
config.textdata.padding_y = CLAMP_INT(config.textdata.padding_y, 0, 100);
|
config.tabdata.padding_y = CLAMP_INT(config.tabdata.padding_y, 0, 100);
|
||||||
|
|
||||||
|
config.jumplabeldata.border_width =
|
||||||
|
CLAMP_INT(config.jumplabeldata.border_width, 0, 100);
|
||||||
|
config.jumplabeldata.corner_radius =
|
||||||
|
CLAMP_INT(config.jumplabeldata.corner_radius, 0, 100);
|
||||||
|
config.jumplabeldata.padding_x = CLAMP_INT(config.jumplabeldata.padding_x, 0, 100);
|
||||||
|
config.jumplabeldata.padding_y = CLAMP_INT(config.jumplabeldata.padding_y, 0, 100);
|
||||||
}
|
}
|
||||||
|
|
||||||
void set_value_default() {
|
void set_value_default() {
|
||||||
|
|
@ -3568,30 +3651,55 @@ void set_value_default() {
|
||||||
config.animation_curve_opafadeout[2] = 0.5;
|
config.animation_curve_opafadeout[2] = 0.5;
|
||||||
config.animation_curve_opafadeout[3] = 0.5;
|
config.animation_curve_opafadeout[3] = 0.5;
|
||||||
|
|
||||||
config.textdata.fg_color[0] = 0xc4 / 255.0f;
|
config.tabdata.fg_color[0] = 0xc4 / 255.0f;
|
||||||
config.textdata.fg_color[1] = 0x93 / 255.0f;
|
config.tabdata.fg_color[1] = 0x93 / 255.0f;
|
||||||
config.textdata.fg_color[2] = 0x9d / 255.0f;
|
config.tabdata.fg_color[2] = 0x9d / 255.0f;
|
||||||
config.textdata.fg_color[3] = 1.0f;
|
config.tabdata.fg_color[3] = 1.0f;
|
||||||
config.textdata.bg_color[0] = 0x32 / 255.0f;
|
config.tabdata.bg_color[0] = 0x32 / 255.0f;
|
||||||
config.textdata.bg_color[1] = 0x32 / 255.0f;
|
config.tabdata.bg_color[1] = 0x32 / 255.0f;
|
||||||
config.textdata.bg_color[2] = 0x32 / 255.0f;
|
config.tabdata.bg_color[2] = 0x32 / 255.0f;
|
||||||
config.textdata.bg_color[3] = 1.0f;
|
config.tabdata.bg_color[3] = 1.0f;
|
||||||
config.textdata.focus_fg_color[0] = 0xed / 255.0f;
|
config.tabdata.focus_fg_color[0] = 0xed / 255.0f;
|
||||||
config.textdata.focus_fg_color[1] = 0xa6 / 255.0f;
|
config.tabdata.focus_fg_color[1] = 0xa6 / 255.0f;
|
||||||
config.textdata.focus_fg_color[2] = 0xb4 / 255.0f;
|
config.tabdata.focus_fg_color[2] = 0xb4 / 255.0f;
|
||||||
config.textdata.focus_fg_color[3] = 1.0f;
|
config.tabdata.focus_fg_color[3] = 1.0f;
|
||||||
config.textdata.focus_bg_color[0] = 0x4e / 255.0f;
|
config.tabdata.focus_bg_color[0] = 0x4e / 255.0f;
|
||||||
config.textdata.focus_bg_color[1] = 0x45 / 255.0f;
|
config.tabdata.focus_bg_color[1] = 0x45 / 255.0f;
|
||||||
config.textdata.focus_bg_color[2] = 0x3c / 255.0f;
|
config.tabdata.focus_bg_color[2] = 0x3c / 255.0f;
|
||||||
config.textdata.focus_bg_color[3] = 1.0f;
|
config.tabdata.focus_bg_color[3] = 1.0f;
|
||||||
config.textdata.border_color[0] = 0x8b / 255.0f;
|
config.tabdata.border_color[0] = 0x8b / 255.0f;
|
||||||
config.textdata.border_color[1] = 0xaa / 255.0f;
|
config.tabdata.border_color[1] = 0xaa / 255.0f;
|
||||||
config.textdata.border_color[2] = 0x9b / 255.0f;
|
config.tabdata.border_color[2] = 0x9b / 255.0f;
|
||||||
config.textdata.border_color[3] = 1.0f;
|
config.tabdata.border_color[3] = 1.0f;
|
||||||
config.textdata.border_width = 4;
|
config.tabdata.border_width = 4;
|
||||||
config.textdata.corner_radius = 5;
|
config.tabdata.corner_radius = 5;
|
||||||
config.textdata.padding_x = 10;
|
config.tabdata.padding_x = 0;
|
||||||
config.textdata.padding_y = 10;
|
config.tabdata.padding_y = 0;
|
||||||
|
|
||||||
|
config.jumplabeldata.fg_color[0] = 0xc4 / 255.0f;
|
||||||
|
config.jumplabeldata.fg_color[1] = 0x93 / 255.0f;
|
||||||
|
config.jumplabeldata.fg_color[2] = 0x9d / 255.0f;
|
||||||
|
config.jumplabeldata.fg_color[3] = 1.0f;
|
||||||
|
config.jumplabeldata.bg_color[0] = 0x32 / 255.0f;
|
||||||
|
config.jumplabeldata.bg_color[1] = 0x32 / 255.0f;
|
||||||
|
config.jumplabeldata.bg_color[2] = 0x32 / 255.0f;
|
||||||
|
config.jumplabeldata.bg_color[3] = 1.0f;
|
||||||
|
config.jumplabeldata.focus_fg_color[0] = 0xed / 255.0f;
|
||||||
|
config.jumplabeldata.focus_fg_color[1] = 0xa6 / 255.0f;
|
||||||
|
config.jumplabeldata.focus_fg_color[2] = 0xb4 / 255.0f;
|
||||||
|
config.jumplabeldata.focus_fg_color[3] = 1.0f;
|
||||||
|
config.jumplabeldata.focus_bg_color[0] = 0x4e / 255.0f;
|
||||||
|
config.jumplabeldata.focus_bg_color[1] = 0x45 / 255.0f;
|
||||||
|
config.jumplabeldata.focus_bg_color[2] = 0x3c / 255.0f;
|
||||||
|
config.jumplabeldata.focus_bg_color[3] = 1.0f;
|
||||||
|
config.jumplabeldata.border_color[0] = 0x8b / 255.0f;
|
||||||
|
config.jumplabeldata.border_color[1] = 0xaa / 255.0f;
|
||||||
|
config.jumplabeldata.border_color[2] = 0x9b / 255.0f;
|
||||||
|
config.jumplabeldata.border_color[3] = 1.0f;
|
||||||
|
config.jumplabeldata.border_width = 4;
|
||||||
|
config.jumplabeldata.corner_radius = 5;
|
||||||
|
config.jumplabeldata.padding_x = 10;
|
||||||
|
config.jumplabeldata.padding_y = 10;
|
||||||
|
|
||||||
config.rootcolor[0] = 0x32 / 255.0f;
|
config.rootcolor[0] = 0x32 / 255.0f;
|
||||||
config.rootcolor[1] = 0x32 / 255.0f;
|
config.rootcolor[1] = 0x32 / 255.0f;
|
||||||
|
|
@ -3705,7 +3813,8 @@ bool parse_config(void) {
|
||||||
config.tag_rules = NULL;
|
config.tag_rules = NULL;
|
||||||
config.tag_rules_count = 0;
|
config.tag_rules_count = 0;
|
||||||
config.cursor_theme = NULL;
|
config.cursor_theme = NULL;
|
||||||
config.textdata.font_desc = NULL;
|
config.jumplabeldata.font_desc = NULL;
|
||||||
|
config.tabdata.font_desc = NULL;
|
||||||
config.tablet_map_to_mon = NULL;
|
config.tablet_map_to_mon = NULL;
|
||||||
strcpy(config.keymode, "default");
|
strcpy(config.keymode, "default");
|
||||||
|
|
||||||
|
|
@ -3843,9 +3952,8 @@ void reapply_property(void) {
|
||||||
c->bw = config.borderpx;
|
c->bw = config.borderpx;
|
||||||
}
|
}
|
||||||
|
|
||||||
mango_text_node_apply_config(c->text_node, &config.textdata);
|
mango_jump_label_node_apply_config(c->jump_label_node, &config.jumplabeldata);
|
||||||
mango_titlebar_node_apply_config(c->titlebar_node,
|
mango_tab_bar_node_apply_config(c->tab_bar_node, &config.tabdata);
|
||||||
&config.textdata);
|
|
||||||
|
|
||||||
wlr_scene_rect_set_color(c->droparea, config.dropcolor);
|
wlr_scene_rect_set_color(c->droparea, config.dropcolor);
|
||||||
wlr_scene_rect_set_color(c->splitindicator[0], config.splitcolor);
|
wlr_scene_rect_set_color(c->splitindicator[0], config.splitcolor);
|
||||||
|
|
|
||||||
|
|
@ -59,9 +59,9 @@ static const struct wlr_buffer_impl text_buffer_impl = {
|
||||||
.end_data_ptr_access = text_buffer_end_data_ptr_access,
|
.end_data_ptr_access = text_buffer_end_data_ptr_access,
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mango_text_node *mango_text_node_create(struct wlr_scene_tree *parent,
|
struct mango_jump_label_node *mango_jump_label_node_create(struct wlr_scene_tree *parent,
|
||||||
TextDrawData data) {
|
DecorateDrawData data) {
|
||||||
struct mango_text_node *node = calloc(1, sizeof(*node));
|
struct mango_jump_label_node *node = calloc(1, sizeof(*node));
|
||||||
if (!node)
|
if (!node)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
|
@ -103,7 +103,7 @@ struct mango_text_node *mango_text_node_create(struct wlr_scene_tree *parent,
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
void mango_text_node_destroy(struct mango_text_node *node) {
|
void mango_jump_label_node_destroy(struct mango_jump_label_node *node) {
|
||||||
if (!node)
|
if (!node)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
@ -135,7 +135,7 @@ void mango_text_node_destroy(struct mango_text_node *node) {
|
||||||
free(node);
|
free(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mango_text_node_set_background(struct mango_text_node *node, float r,
|
void mango_jump_label_node_set_background(struct mango_jump_label_node *node, float r,
|
||||||
float g, float b, float a) {
|
float g, float b, float a) {
|
||||||
if (!node)
|
if (!node)
|
||||||
return;
|
return;
|
||||||
|
|
@ -145,7 +145,7 @@ void mango_text_node_set_background(struct mango_text_node *node, float r,
|
||||||
node->bg_color[3] = a;
|
node->bg_color[3] = a;
|
||||||
}
|
}
|
||||||
|
|
||||||
void mango_text_node_set_border(struct mango_text_node *node, float r, float g,
|
void mango_jump_label_node_set_border(struct mango_jump_label_node *node, float r, float g,
|
||||||
float b, float a, int32_t width,
|
float b, float a, int32_t width,
|
||||||
int32_t radius) {
|
int32_t radius) {
|
||||||
if (!node)
|
if (!node)
|
||||||
|
|
@ -158,7 +158,7 @@ void mango_text_node_set_border(struct mango_text_node *node, float r, float g,
|
||||||
node->corner_radius = radius;
|
node->corner_radius = radius;
|
||||||
}
|
}
|
||||||
|
|
||||||
void mango_text_node_set_padding(struct mango_text_node *node, int32_t pad_x,
|
void mango_jump_label_node_set_padding(struct mango_jump_label_node *node, int32_t pad_x,
|
||||||
int32_t pad_y) {
|
int32_t pad_y) {
|
||||||
if (!node)
|
if (!node)
|
||||||
return;
|
return;
|
||||||
|
|
@ -166,7 +166,7 @@ void mango_text_node_set_padding(struct mango_text_node *node, int32_t pad_x,
|
||||||
node->padding_y = pad_y >= 0 ? pad_y : 0;
|
node->padding_y = pad_y >= 0 ? pad_y : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void get_text_pixel_size(struct mango_text_node *node, const char *text,
|
static void get_text_pixel_size(struct mango_jump_label_node *node, const char *text,
|
||||||
float scale, int32_t *out_w, int32_t *out_h) {
|
float scale, int32_t *out_w, int32_t *out_h) {
|
||||||
if (node->measure_scale != scale) {
|
if (node->measure_scale != scale) {
|
||||||
pango_cairo_context_set_resolution(node->measure_context, 96.0 * scale);
|
pango_cairo_context_set_resolution(node->measure_context, 96.0 * scale);
|
||||||
|
|
@ -191,7 +191,7 @@ static void draw_rounded_rect(cairo_t *cr, double x, double y, double w,
|
||||||
cairo_close_path(cr);
|
cairo_close_path(cr);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mango_text_node_update(struct mango_text_node *node, const char *text,
|
void mango_jump_label_node_update(struct mango_jump_label_node *node, const char *text,
|
||||||
float scale) {
|
float scale) {
|
||||||
if (!node || !text)
|
if (!node || !text)
|
||||||
return;
|
return;
|
||||||
|
|
@ -405,20 +405,20 @@ void mango_text_node_update(struct mango_text_node *node, const char *text,
|
||||||
node->logical_height);
|
node->logical_height);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mango_text_node_set_focus(struct mango_text_node *node, bool focused) {
|
void mango_jump_label_node_set_focus(struct mango_jump_label_node *node, bool focused) {
|
||||||
if (!node || node->focused == focused)
|
if (!node || node->focused == focused)
|
||||||
return;
|
return;
|
||||||
node->focused = focused;
|
node->focused = focused;
|
||||||
// 使用缓存的文本和缩放触发重绘(如果无文本则不重绘)
|
// 使用缓存的文本和缩放触发重绘(如果无文本则不重绘)
|
||||||
if (node->cached_text && node->cached_scale > 0.0f) {
|
if (node->cached_text && node->cached_scale > 0.0f) {
|
||||||
mango_text_node_update(node, node->cached_text, node->cached_scale);
|
mango_jump_label_node_update(node, node->cached_text, node->cached_scale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
struct mango_titlebar_node *
|
struct mango_tab_bar_node *
|
||||||
mango_titlebar_node_create(void *mango_node_data, struct wlr_scene_tree *parent,
|
mango_tab_bar_node_create(void *mango_node_data, struct wlr_scene_tree *parent,
|
||||||
TextDrawData data, int32_t width, int32_t height) {
|
DecorateDrawData data, int32_t width, int32_t height) {
|
||||||
struct mango_titlebar_node *node = calloc(1, sizeof(*node));
|
struct mango_tab_bar_node *node = calloc(1, sizeof(*node));
|
||||||
if (!node)
|
if (!node)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
|
|
@ -462,7 +462,7 @@ mango_titlebar_node_create(void *mango_node_data, struct wlr_scene_tree *parent,
|
||||||
return node;
|
return node;
|
||||||
}
|
}
|
||||||
|
|
||||||
void mango_titlebar_node_destroy(struct mango_titlebar_node *node) {
|
void mango_tab_bar_node_destroy(struct mango_tab_bar_node *node) {
|
||||||
if (!node)
|
if (!node)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
@ -498,7 +498,7 @@ void mango_titlebar_node_destroy(struct mango_titlebar_node *node) {
|
||||||
free(node);
|
free(node);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mango_titlebar_node_set_size(struct mango_titlebar_node *node,
|
void mango_tab_bar_node_set_size(struct mango_tab_bar_node *node,
|
||||||
int32_t width, int32_t height) {
|
int32_t width, int32_t height) {
|
||||||
if (!node)
|
if (!node)
|
||||||
return;
|
return;
|
||||||
|
|
@ -517,10 +517,10 @@ void mango_titlebar_node_set_size(struct mango_titlebar_node *node,
|
||||||
const char *redraw_text = node->last_text ? node->last_text : "";
|
const char *redraw_text = node->last_text ? node->last_text : "";
|
||||||
float redraw_scale = node->last_scale > 0.0f ? node->last_scale : 1.0f;
|
float redraw_scale = node->last_scale > 0.0f ? node->last_scale : 1.0f;
|
||||||
|
|
||||||
mango_titlebar_node_update(node, redraw_text, redraw_scale);
|
mango_tab_bar_node_update(node, redraw_text, redraw_scale);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mango_titlebar_node_update(struct mango_titlebar_node *node,
|
void mango_tab_bar_node_update(struct mango_tab_bar_node *node,
|
||||||
const char *text, float scale) {
|
const char *text, float scale) {
|
||||||
if (!node || !text)
|
if (!node || !text)
|
||||||
return;
|
return;
|
||||||
|
|
@ -760,18 +760,18 @@ void mango_titlebar_node_update(struct mango_titlebar_node *node,
|
||||||
node->logical_height);
|
node->logical_height);
|
||||||
}
|
}
|
||||||
|
|
||||||
void mango_titlebar_node_set_focus(struct mango_titlebar_node *node,
|
void mango_tab_bar_node_set_focus(struct mango_tab_bar_node *node,
|
||||||
bool focused) {
|
bool focused) {
|
||||||
if (!node || node->focused == focused)
|
if (!node || node->focused == focused)
|
||||||
return;
|
return;
|
||||||
node->focused = focused;
|
node->focused = focused;
|
||||||
if (node->last_text) {
|
if (node->last_text) {
|
||||||
float scale = node->last_scale > 0.0f ? node->last_scale : 1.0f;
|
float scale = node->last_scale > 0.0f ? node->last_scale : 1.0f;
|
||||||
mango_titlebar_node_update(node, node->last_text, scale);
|
mango_tab_bar_node_update(node, node->last_text, scale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void mango_titlebar_node_set_colors(struct mango_titlebar_node *node,
|
void mango_tab_bar_node_set_colors(struct mango_tab_bar_node *node,
|
||||||
const float fg[4], const float bg[4]) {
|
const float fg[4], const float bg[4]) {
|
||||||
if (!node)
|
if (!node)
|
||||||
return;
|
return;
|
||||||
|
|
@ -781,12 +781,12 @@ void mango_titlebar_node_set_colors(struct mango_titlebar_node *node,
|
||||||
|
|
||||||
if (!node->focused && node->last_text) {
|
if (!node->focused && node->last_text) {
|
||||||
float scale = node->last_scale > 0.0f ? node->last_scale : 1.0f;
|
float scale = node->last_scale > 0.0f ? node->last_scale : 1.0f;
|
||||||
mango_titlebar_node_update(node, node->last_text, scale);
|
mango_tab_bar_node_update(node, node->last_text, scale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void mango_text_node_apply_config(struct mango_text_node *node,
|
void mango_jump_label_node_apply_config(struct mango_jump_label_node *node,
|
||||||
const TextDrawData *data) {
|
const DecorateDrawData *data) {
|
||||||
if (!node || !data)
|
if (!node || !data)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
@ -807,12 +807,12 @@ void mango_text_node_apply_config(struct mango_text_node *node,
|
||||||
g_strdup(data->font_desc ? data->font_desc : "monospace Bold 16");
|
g_strdup(data->font_desc ? data->font_desc : "monospace Bold 16");
|
||||||
|
|
||||||
if (node->cached_text && node->cached_scale > 0.0f) {
|
if (node->cached_text && node->cached_scale > 0.0f) {
|
||||||
mango_text_node_update(node, node->cached_text, node->cached_scale);
|
mango_jump_label_node_update(node, node->cached_text, node->cached_scale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void mango_titlebar_node_apply_config(struct mango_titlebar_node *node,
|
void mango_tab_bar_node_apply_config(struct mango_tab_bar_node *node,
|
||||||
const TextDrawData *data) {
|
const DecorateDrawData *data) {
|
||||||
if (!node || !data)
|
if (!node || !data)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
@ -834,6 +834,6 @@ void mango_titlebar_node_apply_config(struct mango_titlebar_node *node,
|
||||||
|
|
||||||
if (node->last_text) {
|
if (node->last_text) {
|
||||||
float scale = node->last_scale > 0.0f ? node->last_scale : 1.0f;
|
float scale = node->last_scale > 0.0f ? node->last_scale : 1.0f;
|
||||||
mango_titlebar_node_update(node, node->last_text, scale);
|
mango_tab_bar_node_update(node, node->last_text, scale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
#ifndef TEXT_NODE_H
|
#ifndef jump_label_node_H
|
||||||
#define TEXT_NODE_H
|
#define jump_label_node_H
|
||||||
|
|
||||||
#include <cairo.h>
|
#include <cairo.h>
|
||||||
#include <pango/pango.h>
|
#include <pango/pango.h>
|
||||||
|
|
@ -20,14 +20,14 @@ typedef struct {
|
||||||
int32_t padding_x;
|
int32_t padding_x;
|
||||||
int32_t padding_y;
|
int32_t padding_y;
|
||||||
const char *font_desc;
|
const char *font_desc;
|
||||||
} TextDrawData;
|
} DecorateDrawData;
|
||||||
|
|
||||||
struct mango_text_buffer {
|
struct mango_text_buffer {
|
||||||
struct wlr_buffer base;
|
struct wlr_buffer base;
|
||||||
cairo_surface_t *surface;
|
cairo_surface_t *surface;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mango_text_node {
|
struct mango_jump_label_node {
|
||||||
struct wlr_scene_buffer *scene_buffer;
|
struct wlr_scene_buffer *scene_buffer;
|
||||||
struct mango_text_buffer *buffer;
|
struct mango_text_buffer *buffer;
|
||||||
cairo_surface_t *surface;
|
cairo_surface_t *surface;
|
||||||
|
|
@ -72,7 +72,7 @@ struct mango_text_node {
|
||||||
int32_t logical_height;
|
int32_t logical_height;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct mango_titlebar_node {
|
struct mango_tab_bar_node {
|
||||||
struct wlr_scene_buffer *scene_buffer;
|
struct wlr_scene_buffer *scene_buffer;
|
||||||
struct mango_text_buffer *buffer;
|
struct mango_text_buffer *buffer;
|
||||||
cairo_surface_t *surface;
|
cairo_surface_t *surface;
|
||||||
|
|
@ -129,36 +129,36 @@ struct mango_titlebar_node {
|
||||||
};
|
};
|
||||||
|
|
||||||
void mango_text_global_finish(void);
|
void mango_text_global_finish(void);
|
||||||
struct mango_text_node *mango_text_node_create(struct wlr_scene_tree *parent,
|
struct mango_jump_label_node *mango_jump_label_node_create(struct wlr_scene_tree *parent,
|
||||||
TextDrawData data);
|
DecorateDrawData data);
|
||||||
void mango_text_node_destroy(struct mango_text_node *node);
|
void mango_jump_label_node_destroy(struct mango_jump_label_node *node);
|
||||||
void mango_text_node_set_background(struct mango_text_node *node, float r,
|
void mango_jump_label_node_set_background(struct mango_jump_label_node *node, float r,
|
||||||
float g, float b, float a);
|
float g, float b, float a);
|
||||||
void mango_text_node_set_border(struct mango_text_node *node, float r, float g,
|
void mango_jump_label_node_set_border(struct mango_jump_label_node *node, float r, float g,
|
||||||
float b, float a, int32_t width,
|
float b, float a, int32_t width,
|
||||||
int32_t radius);
|
int32_t radius);
|
||||||
void mango_text_node_set_padding(struct mango_text_node *node, int32_t pad_x,
|
void mango_jump_label_node_set_padding(struct mango_jump_label_node *node, int32_t pad_x,
|
||||||
int32_t pad_y);
|
int32_t pad_y);
|
||||||
void mango_text_node_update(struct mango_text_node *node, const char *text,
|
void mango_jump_label_node_update(struct mango_jump_label_node *node, const char *text,
|
||||||
float scale);
|
float scale);
|
||||||
|
|
||||||
struct mango_titlebar_node *
|
struct mango_tab_bar_node *
|
||||||
mango_titlebar_node_create(void *mango_node_data, struct wlr_scene_tree *parent,
|
mango_tab_bar_node_create(void *mango_node_data, struct wlr_scene_tree *parent,
|
||||||
TextDrawData data, int32_t width, int32_t height);
|
DecorateDrawData data, int32_t width, int32_t height);
|
||||||
void mango_titlebar_node_destroy(struct mango_titlebar_node *node);
|
void mango_tab_bar_node_destroy(struct mango_tab_bar_node *node);
|
||||||
void mango_titlebar_node_set_size(struct mango_titlebar_node *node,
|
void mango_tab_bar_node_set_size(struct mango_tab_bar_node *node,
|
||||||
int32_t width, int32_t height);
|
int32_t width, int32_t height);
|
||||||
void mango_titlebar_node_update(struct mango_titlebar_node *node,
|
void mango_tab_bar_node_update(struct mango_tab_bar_node *node,
|
||||||
const char *text, float scale);
|
const char *text, float scale);
|
||||||
|
|
||||||
void mango_text_node_set_focus(struct mango_text_node *node, bool focused);
|
void mango_jump_label_node_set_focus(struct mango_jump_label_node *node, bool focused);
|
||||||
void mango_titlebar_node_set_focus(struct mango_titlebar_node *node,
|
void mango_tab_bar_node_set_focus(struct mango_tab_bar_node *node,
|
||||||
bool focused);
|
bool focused);
|
||||||
|
|
||||||
void mango_titlebar_node_set_colors(struct mango_titlebar_node *node,
|
void mango_tab_bar_node_set_colors(struct mango_tab_bar_node *node,
|
||||||
const float fg[4], const float bg[4]);
|
const float fg[4], const float bg[4]);
|
||||||
void mango_text_node_apply_config(struct mango_text_node *node,
|
void mango_jump_label_node_apply_config(struct mango_jump_label_node *node,
|
||||||
const TextDrawData *data);
|
const DecorateDrawData *data);
|
||||||
void mango_titlebar_node_apply_config(struct mango_titlebar_node *node,
|
void mango_tab_bar_node_apply_config(struct mango_tab_bar_node *node,
|
||||||
const TextDrawData *data);
|
const DecorateDrawData *data);
|
||||||
#endif // TEXT_NODE_H
|
#endif // jump_label_node_H
|
||||||
|
|
@ -43,7 +43,7 @@ void monocle_set_focus(Client *c, bool focused) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
c->is_monocle_hide = !focused;
|
c->is_monocle_hide = !focused;
|
||||||
mango_titlebar_node_set_focus(c->titlebar_node, focused);
|
mango_tab_bar_node_set_focus(c->tab_bar_node, focused);
|
||||||
wlr_scene_node_set_enabled(&c->scene->node, focused);
|
wlr_scene_node_set_enabled(&c->scene->node, focused);
|
||||||
|
|
||||||
if (!focused) {
|
if (!focused) {
|
||||||
|
|
@ -1143,17 +1143,17 @@ void pre_caculate_before_arrange(Monitor *m, bool want_animation,
|
||||||
set_size_per(m, c);
|
set_size_per(m, c);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m->is_jump_mode && !c->text_node) {
|
if (m->is_jump_mode && !c->jump_label_node) {
|
||||||
client_add_text_node(c);
|
client_add_jump_label_node(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m->pertag->ltidxs[m->pertag->curtag]->id == MONOCLE &&
|
if (m->pertag->ltidxs[m->pertag->curtag]->id == MONOCLE &&
|
||||||
!c->titlebar_node) {
|
!c->tab_bar_node) {
|
||||||
client_add_titlebar_node(c);
|
client_add_tab_bar_node(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c->titlebar_node && c->mon == m) {
|
if (c->tab_bar_node && c->mon == m) {
|
||||||
wlr_scene_node_set_enabled(&c->titlebar_node->scene_buffer->node,
|
wlr_scene_node_set_enabled(&c->tab_bar_node->scene_buffer->node,
|
||||||
false);
|
false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -368,13 +368,13 @@ void create_jump_hints(Monitor *m) {
|
||||||
// 把字符变成字符串
|
// 把字符变成字符串
|
||||||
char label_text[2] = {c_char, '\0'};
|
char label_text[2] = {c_char, '\0'};
|
||||||
|
|
||||||
mango_text_node_update(c->text_node, label_text, 1.0f);
|
mango_jump_label_node_update(c->jump_label_node, label_text, 1.0f);
|
||||||
wlr_scene_node_set_enabled(&c->text_node->scene_buffer->node, true);
|
wlr_scene_node_set_enabled(&c->jump_label_node->scene_buffer->node, true);
|
||||||
wlr_scene_node_raise_to_top(&c->text_node->scene_buffer->node);
|
wlr_scene_node_raise_to_top(&c->jump_label_node->scene_buffer->node);
|
||||||
wlr_scene_node_set_position(
|
wlr_scene_node_set_position(
|
||||||
&c->text_node->scene_buffer->node,
|
&c->jump_label_node->scene_buffer->node,
|
||||||
c->geom.width / 2 - c->text_node->logical_width / 2,
|
c->geom.width / 2 - c->jump_label_node->logical_width / 2,
|
||||||
c->geom.height / 2 - c->text_node->logical_height / 2);
|
c->geom.height / 2 - c->jump_label_node->logical_height / 2);
|
||||||
label_idx++;
|
label_idx++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -391,9 +391,9 @@ void finish_jump_mode(Monitor *m) {
|
||||||
|
|
||||||
wl_list_for_each(c, &clients, link) {
|
wl_list_for_each(c, &clients, link) {
|
||||||
if (VISIBLEON(c, m)) {
|
if (VISIBLEON(c, m)) {
|
||||||
if (c->text_node->scene_buffer->node.enabled) {
|
if (c->jump_label_node->scene_buffer->node.enabled) {
|
||||||
c->jump_char = '\0';
|
c->jump_char = '\0';
|
||||||
wlr_scene_node_set_enabled(&c->text_node->scene_buffer->node,
|
wlr_scene_node_set_enabled(&c->jump_label_node->scene_buffer->node,
|
||||||
false);
|
false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
16
src/mango.c
16
src/mango.c
|
|
@ -176,7 +176,7 @@ enum {
|
||||||
NUM_LAYERS
|
NUM_LAYERS
|
||||||
}; /* scene layers */
|
}; /* scene layers */
|
||||||
|
|
||||||
enum mango_node_type { MANGO_TITLE_NODE, MANGO_TEXT_NODE };
|
enum mango_node_type { MANGO_TITLE_NODE, MANGO_jump_label_node };
|
||||||
|
|
||||||
#ifdef XWAYLAND
|
#ifdef XWAYLAND
|
||||||
enum {
|
enum {
|
||||||
|
|
@ -339,8 +339,8 @@ struct Client {
|
||||||
struct wlr_ext_image_capture_source_v1 *image_capture_source;
|
struct wlr_ext_image_capture_source_v1 *image_capture_source;
|
||||||
|
|
||||||
struct wlr_scene_tree *overview_scene_surface;
|
struct wlr_scene_tree *overview_scene_surface;
|
||||||
struct mango_text_node *text_node;
|
struct mango_jump_label_node *jump_label_node;
|
||||||
struct mango_titlebar_node *titlebar_node;
|
struct mango_tab_bar_node *tab_bar_node;
|
||||||
struct wl_list link;
|
struct wl_list link;
|
||||||
struct wl_list flink;
|
struct wl_list flink;
|
||||||
struct wl_list fadeout_link;
|
struct wl_list fadeout_link;
|
||||||
|
|
@ -1295,8 +1295,8 @@ void swallow(Client *c, Client *w) {
|
||||||
overview_backup_surface(c);
|
overview_backup_surface(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (w->titlebar_node) {
|
if (w->tab_bar_node) {
|
||||||
wlr_scene_node_set_enabled(&w->titlebar_node->scene_buffer->node,
|
wlr_scene_node_set_enabled(&w->tab_bar_node->scene_buffer->node,
|
||||||
false);
|
false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -6594,8 +6594,8 @@ void unmapnotify(struct wl_listener *listener, void *data) {
|
||||||
|
|
||||||
c->stack_proportion = 0.0f;
|
c->stack_proportion = 0.0f;
|
||||||
|
|
||||||
mango_text_node_destroy(c->text_node);
|
mango_jump_label_node_destroy(c->jump_label_node);
|
||||||
mango_titlebar_node_destroy(c->titlebar_node);
|
mango_tab_bar_node_destroy(c->tab_bar_node);
|
||||||
wlr_scene_node_destroy(&c->scene->node);
|
wlr_scene_node_destroy(&c->scene->node);
|
||||||
printstatus(IPC_WATCH_ARRANGGE);
|
printstatus(IPC_WATCH_ARRANGGE);
|
||||||
motionnotify(0, NULL, 0, 0, 0, 0);
|
motionnotify(0, NULL, 0, 0, 0, 0);
|
||||||
|
|
@ -6743,7 +6743,7 @@ void updatetitle(struct wl_listener *listener, void *data) {
|
||||||
|
|
||||||
const char *title;
|
const char *title;
|
||||||
title = client_get_title(c);
|
title = client_get_title(c);
|
||||||
mango_titlebar_node_update(c->titlebar_node, title, 1.0);
|
mango_tab_bar_node_update(c->tab_bar_node, title, 1.0);
|
||||||
if (title && c->foreign_toplevel)
|
if (title && c->foreign_toplevel)
|
||||||
wlr_foreign_toplevel_handle_v1_set_title(c->foreign_toplevel, title);
|
wlr_foreign_toplevel_handle_v1_set_title(c->foreign_toplevel, title);
|
||||||
if (title && c->ext_foreign_toplevel) {
|
if (title && c->ext_foreign_toplevel) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue