From c0f92cb2fb94ac87396da99646f9219e54b36860 Mon Sep 17 00:00:00 2001 From: Brian Ashworth Date: Thu, 10 Jan 2019 23:43:45 -0500 Subject: swaybar: add status_padding command Adds the bar subcommand `status_padding ` which allows setting the padding used for swaybar. If `status_padding` is set to `0`, blocks will be able to take up the full height of the bar. --- swaybar/config.c | 1 + swaybar/ipc.c | 6 +++++- swaybar/render.c | 11 ++++++----- 3 files changed, 12 insertions(+), 6 deletions(-) (limited to 'swaybar') diff --git a/swaybar/config.c b/swaybar/config.c index 9cafe061..86a76a7f 100644 --- a/swaybar/config.c +++ b/swaybar/config.c @@ -37,6 +37,7 @@ struct swaybar_config *init_config(void) { config->workspace_buttons = true; config->bindings = create_list(); wl_list_init(&config->outputs); + config->status_padding = 1; /* height */ config->height = 0; diff --git a/swaybar/ipc.c b/swaybar/ipc.c index 8e7a542e..77e1b94e 100644 --- a/swaybar/ipc.c +++ b/swaybar/ipc.c @@ -157,7 +157,7 @@ static bool ipc_parse_config( json_object *font, *gaps, *bar_height, *wrap_scroll, *workspace_buttons; json_object *strip_workspace_numbers, *strip_workspace_name; json_object *binding_mode_indicator, *verbose, *colors, *sep_symbol; - json_object *outputs, *bindings; + json_object *outputs, *bindings, *status_padding; json_object_object_get_ex(bar_config, "mode", &mode); json_object_object_get_ex(bar_config, "hidden_state", &hidden_state); json_object_object_get_ex(bar_config, "position", &position); @@ -176,6 +176,7 @@ static bool ipc_parse_config( json_object_object_get_ex(bar_config, "outputs", &outputs); json_object_object_get_ex(bar_config, "pango_markup", &markup); json_object_object_get_ex(bar_config, "bindings", &bindings); + json_object_object_get_ex(bar_config, "status_padding", &status_padding); if (status_command) { free(config->status_command); config->status_command = strdup(json_object_get_string(status_command)); @@ -209,6 +210,9 @@ static bool ipc_parse_config( if (bar_height) { config->height = json_object_get_int(bar_height); } + if (status_padding) { + config->status_padding = json_object_get_int(status_padding); + } if (gaps) { json_object *top = json_object_object_get(gaps, "top"); if (top) { diff --git a/swaybar/render.c b/swaybar/render.c index 7cbcea07..edc97e77 100644 --- a/swaybar/render.c +++ b/swaybar/render.c @@ -35,7 +35,8 @@ static uint32_t render_status_line_error(cairo_t *cairo, cairo_set_source_u32(cairo, 0xFF0000FF); int margin = 3 * output->scale; - int ws_vertical_padding = WS_VERTICAL_PADDING * output->scale; + double ws_vertical_padding = + output->bar->config->status_padding * output->scale; char *font = output->bar->config->font; int text_width, text_height; @@ -71,7 +72,7 @@ static uint32_t render_status_line_text(cairo_t *cairo, get_text_size(cairo, config->font, &text_width, &text_height, NULL, output->scale, config->pango_markup, "%s", text); - int ws_vertical_padding = WS_VERTICAL_PADDING * output->scale; + double ws_vertical_padding = config->status_padding * output->scale; int margin = 3 * output->scale; uint32_t ideal_height = text_height + ws_vertical_padding * 2; @@ -153,7 +154,7 @@ static uint32_t render_status_block(cairo_t *cairo, output->scale, block->markup, "%s", block->full_text); int margin = 3 * output->scale; - double ws_vertical_padding = WS_VERTICAL_PADDING * 2 * output->scale; + double ws_vertical_padding = config->status_padding * output->scale; int width = text_width; if (width < block->min_width) { @@ -212,8 +213,8 @@ static uint32_t render_status_block(cairo_t *cairo, } double x_pos = *x; - double y_pos = WS_VERTICAL_PADDING * output->scale; - double render_height = height - ws_vertical_padding + output->scale; + double y_pos = ws_vertical_padding; + double render_height = height - ws_vertical_padding * 2; uint32_t bg_color = block->urgent ? config->colors.urgent_workspace.background : block->background; -- cgit v1.2.3 From ca0a75d5408125c4e2a9394fd1b08b7bbc4ff9c5 Mon Sep 17 00:00:00 2001 From: Brian Ashworth Date: Fri, 11 Jan 2019 00:12:24 -0500 Subject: swaybar: add status_edge_padding command This adds the bar subcommand `status_edge_padding ` to set the padding used when the status line is on the right edge of the bar. --- swaybar/config.c | 1 + swaybar/ipc.c | 7 ++++++- swaybar/render.c | 6 +++--- 3 files changed, 10 insertions(+), 4 deletions(-) (limited to 'swaybar') diff --git a/swaybar/config.c b/swaybar/config.c index 86a76a7f..d4cc9b1a 100644 --- a/swaybar/config.c +++ b/swaybar/config.c @@ -38,6 +38,7 @@ struct swaybar_config *init_config(void) { config->bindings = create_list(); wl_list_init(&config->outputs); config->status_padding = 1; + config->status_edge_padding = 3; /* height */ config->height = 0; diff --git a/swaybar/ipc.c b/swaybar/ipc.c index 77e1b94e..bc5c28b4 100644 --- a/swaybar/ipc.c +++ b/swaybar/ipc.c @@ -157,7 +157,7 @@ static bool ipc_parse_config( json_object *font, *gaps, *bar_height, *wrap_scroll, *workspace_buttons; json_object *strip_workspace_numbers, *strip_workspace_name; json_object *binding_mode_indicator, *verbose, *colors, *sep_symbol; - json_object *outputs, *bindings, *status_padding; + json_object *outputs, *bindings, *status_padding, *status_edge_padding; json_object_object_get_ex(bar_config, "mode", &mode); json_object_object_get_ex(bar_config, "hidden_state", &hidden_state); json_object_object_get_ex(bar_config, "position", &position); @@ -177,6 +177,8 @@ static bool ipc_parse_config( json_object_object_get_ex(bar_config, "pango_markup", &markup); json_object_object_get_ex(bar_config, "bindings", &bindings); json_object_object_get_ex(bar_config, "status_padding", &status_padding); + json_object_object_get_ex(bar_config, "status_edge_padding", + &status_edge_padding); if (status_command) { free(config->status_command); config->status_command = strdup(json_object_get_string(status_command)); @@ -213,6 +215,9 @@ static bool ipc_parse_config( if (status_padding) { config->status_padding = json_object_get_int(status_padding); } + if (status_edge_padding) { + config->status_edge_padding = json_object_get_int(status_edge_padding); + } if (gaps) { json_object *top = json_object_object_get(gaps, "top"); if (top) { diff --git a/swaybar/render.c b/swaybar/render.c index edc97e77..993c8228 100644 --- a/swaybar/render.c +++ b/swaybar/render.c @@ -194,8 +194,8 @@ static uint32_t render_status_block(cairo_t *cairo, } } *x -= sep_block_width; - } else { - *x -= margin; + } else if (config->status_edge_padding) { + *x -= config->status_edge_padding * output->scale; } uint32_t height = output->height * output->scale; @@ -287,7 +287,7 @@ static uint32_t render_status_block(cairo_t *cairo, static uint32_t render_status_line_i3bar(cairo_t *cairo, struct swaybar_output *output, double *x) { uint32_t max_height = 0; - bool edge = true; + bool edge = *x == output->width * output->scale; struct i3bar_block *block; wl_list_for_each(block, &output->bar->status->blocks, link) { uint32_t h = render_status_block(cairo, output, block, x, edge); -- cgit v1.2.3