This commit is contained in:
bonsaiiV 2026-02-03 19:33:46 +01:00 committed by GitHub
commit 20166108bb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 35 additions and 0 deletions

View file

@ -245,6 +245,7 @@ sway_cmd bar_colors_cmd_focused_separator;
sway_cmd bar_colors_cmd_statusline; sway_cmd bar_colors_cmd_statusline;
sway_cmd bar_colors_cmd_focused_statusline; sway_cmd bar_colors_cmd_focused_statusline;
sway_cmd bar_colors_cmd_urgent_workspace; sway_cmd bar_colors_cmd_urgent_workspace;
sway_cmd bar_colors_cmd_tray_background;
sway_cmd input_cmd_seat; sway_cmd input_cmd_seat;
sway_cmd input_cmd_accel_profile; sway_cmd input_cmd_accel_profile;

View file

@ -404,6 +404,9 @@ struct bar_config {
char *binding_mode_border; char *binding_mode_border;
char *binding_mode_bg; char *binding_mode_bg;
char *binding_mode_text; char *binding_mode_text;
#if HAVE_TRAY
char *tray_background;
#endif
} colors; } colors;
#if HAVE_TRAY #if HAVE_TRAY

View file

@ -71,6 +71,8 @@ struct swaybar_config {
struct box_colors inactive_workspace; struct box_colors inactive_workspace;
struct box_colors urgent_workspace; struct box_colors urgent_workspace;
struct box_colors binding_mode; struct box_colors binding_mode;
uint32_t tray_background;
} colors; } colors;
#if HAVE_TRAY #if HAVE_TRAY

View file

@ -16,6 +16,9 @@ static const struct cmd_handler bar_colors_handlers[] = {
{ "separator", bar_colors_cmd_separator }, { "separator", bar_colors_cmd_separator },
{ "statusline", bar_colors_cmd_statusline }, { "statusline", bar_colors_cmd_statusline },
{ "urgent_workspace", bar_colors_cmd_urgent_workspace }, { "urgent_workspace", bar_colors_cmd_urgent_workspace },
#if HAVE_TRAY
{ "tray_background", bar_colors_cmd_tray_background },
#endif
}; };
static char *hex_to_rgba_hex(const char *hex) { static char *hex_to_rgba_hex(const char *hex) {
@ -154,3 +157,10 @@ struct cmd_results *bar_colors_cmd_urgent_workspace(int argc, char **argv) {
}; };
return parse_three_colors(colors, "urgent_workspace", argc, argv); return parse_three_colors(colors, "urgent_workspace", argc, argv);
} }
#if HAVE_TRAY
struct cmd_results *bar_colors_cmd_tray_background(int argc, char **argv) {
return parse_single_color(&(config->current_bar->colors.tray_background),
"tray_background", argc, argv);
}
#endif

View file

@ -171,6 +171,7 @@ struct bar_config *default_bar_config(void) {
bar->colors.binding_mode_text = NULL; bar->colors.binding_mode_text = NULL;
#if HAVE_TRAY #if HAVE_TRAY
bar->colors.tray_background = NULL;
bar->tray_padding = 2; bar->tray_padding = 2;
wl_list_init(&bar->tray_bindings); wl_list_init(&bar->tray_bindings);
#endif #endif

View file

@ -1404,6 +1404,16 @@ json_object *ipc_json_describe_bar_config(struct bar_config *bar) {
json_object_new_string(bar->colors.urgent_workspace_text)); json_object_new_string(bar->colors.urgent_workspace_text));
} }
#if HAVE_TRAY
if (bar->colors.tray_background) {
json_object_object_add(colors, "tray_background",
json_object_new_string(bar->colors.tray_background));
} else {
json_object_object_add(colors, "tray_background",
json_object_new_string(bar->colors.background));
}
#endif
json_object_object_add(json, "colors", colors); json_object_object_add(json, "colors", colors);
if (bar->bindings->length > 0) { if (bar->bindings->length > 0) {

View file

@ -232,6 +232,9 @@ must be defined in hex: _#RRGGBB_ or _#RRGGBBAA_.
Border, background and text color for the binding mode indicator. If not used, Border, background and text color for the binding mode indicator. If not used,
the colors will be taken from _urgent_workspace_. the colors will be taken from _urgent_workspace_.
*tray_background* <color>
Background color of the system tray.
# SEE ALSO # SEE ALSO
*sway*(5) *swaybar-protocol*(7) *sway*(5) *swaybar-protocol*(7)

View file

@ -77,6 +77,7 @@ struct swaybar_config *init_config(void) {
config->colors.binding_mode.text = 0xFFFFFFFF; config->colors.binding_mode.text = 0xFFFFFFFF;
#if HAVE_TRAY #if HAVE_TRAY
config->colors.tray_background = 0x000000FF;
config->tray_padding = 2; config->tray_padding = 2;
wl_list_init(&config->tray_bindings); wl_list_init(&config->tray_bindings);
#endif #endif

View file

@ -80,6 +80,7 @@ static void ipc_parse_colors(
{ "binding_mode_border", &config->colors.binding_mode.border }, { "binding_mode_border", &config->colors.binding_mode.border },
{ "binding_mode_bg", &config->colors.binding_mode.background }, { "binding_mode_bg", &config->colors.binding_mode.background },
{ "binding_mode_text", &config->colors.binding_mode.text }, { "binding_mode_text", &config->colors.binding_mode.text },
{ "tray_background", &config->colors.tray_background },
}; };
for (size_t i = 0; i < sizeof(properties) / sizeof(properties[i]); i++) { for (size_t i = 0; i < sizeof(properties) / sizeof(properties[i]); i++) {

View file

@ -514,6 +514,9 @@ uint32_t render_sni(cairo_t *cairo, struct swaybar_output *output, double *x,
cairo_set_operator(cairo, CAIRO_OPERATOR_OVER); cairo_set_operator(cairo, CAIRO_OPERATOR_OVER);
cairo_matrix_t scale_matrix; cairo_matrix_t scale_matrix;
cairo_set_source_u32(cairo, output->bar->config->colors.tray_background);
cairo_rectangle(cairo, *x, icon_y, size, size);
cairo_fill(cairo);
cairo_pattern_t *icon_pattern = cairo_pattern_create_for_surface(icon); cairo_pattern_t *icon_pattern = cairo_pattern_create_for_surface(icon);
// TODO: check cairo_pattern_status for "ENOMEM" // TODO: check cairo_pattern_status for "ENOMEM"
cairo_matrix_init_scale(&scale_matrix, output->scale, output->scale); cairo_matrix_init_scale(&scale_matrix, output->scale, output->scale);