aboutsummaryrefslogtreecommitdiffstats
path: root/swaybar
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2019-01-13 20:34:13 -0500
committerLibravatar GitHub <noreply@github.com>2019-01-13 20:34:13 -0500
commit9ce4d53e789b5a3b3f521585a5a0ff62e341468b (patch)
treed267455e4f5814b7f8f5eae3f85636c90884bcfd /swaybar
parentMerge pull request #3415 from RedSoxFan/swaybar-output-improved (diff)
parentswaybar: add status_edge_padding command (diff)
downloadsway-9ce4d53e789b5a3b3f521585a5a0ff62e341468b.tar.gz
sway-9ce4d53e789b5a3b3f521585a5a0ff62e341468b.tar.zst
sway-9ce4d53e789b5a3b3f521585a5a0ff62e341468b.zip
Merge pull request #3408 from RedSoxFan/bar-padding
swaybar: adjustable status padding
Diffstat (limited to 'swaybar')
-rw-r--r--swaybar/config.c2
-rw-r--r--swaybar/ipc.c11
-rw-r--r--swaybar/render.c17
3 files changed, 21 insertions, 9 deletions
diff --git a/swaybar/config.c b/swaybar/config.c
index 9cafe061..d4cc9b1a 100644
--- a/swaybar/config.c
+++ b/swaybar/config.c
@@ -37,6 +37,8 @@ struct swaybar_config *init_config(void) {
37 config->workspace_buttons = true; 37 config->workspace_buttons = true;
38 config->bindings = create_list(); 38 config->bindings = create_list();
39 wl_list_init(&config->outputs); 39 wl_list_init(&config->outputs);
40 config->status_padding = 1;
41 config->status_edge_padding = 3;
40 42
41 /* height */ 43 /* height */
42 config->height = 0; 44 config->height = 0;
diff --git a/swaybar/ipc.c b/swaybar/ipc.c
index 8e7a542e..bc5c28b4 100644
--- a/swaybar/ipc.c
+++ b/swaybar/ipc.c
@@ -157,7 +157,7 @@ static bool ipc_parse_config(
157 json_object *font, *gaps, *bar_height, *wrap_scroll, *workspace_buttons; 157 json_object *font, *gaps, *bar_height, *wrap_scroll, *workspace_buttons;
158 json_object *strip_workspace_numbers, *strip_workspace_name; 158 json_object *strip_workspace_numbers, *strip_workspace_name;
159 json_object *binding_mode_indicator, *verbose, *colors, *sep_symbol; 159 json_object *binding_mode_indicator, *verbose, *colors, *sep_symbol;
160 json_object *outputs, *bindings; 160 json_object *outputs, *bindings, *status_padding, *status_edge_padding;
161 json_object_object_get_ex(bar_config, "mode", &mode); 161 json_object_object_get_ex(bar_config, "mode", &mode);
162 json_object_object_get_ex(bar_config, "hidden_state", &hidden_state); 162 json_object_object_get_ex(bar_config, "hidden_state", &hidden_state);
163 json_object_object_get_ex(bar_config, "position", &position); 163 json_object_object_get_ex(bar_config, "position", &position);
@@ -176,6 +176,9 @@ static bool ipc_parse_config(
176 json_object_object_get_ex(bar_config, "outputs", &outputs); 176 json_object_object_get_ex(bar_config, "outputs", &outputs);
177 json_object_object_get_ex(bar_config, "pango_markup", &markup); 177 json_object_object_get_ex(bar_config, "pango_markup", &markup);
178 json_object_object_get_ex(bar_config, "bindings", &bindings); 178 json_object_object_get_ex(bar_config, "bindings", &bindings);
179 json_object_object_get_ex(bar_config, "status_padding", &status_padding);
180 json_object_object_get_ex(bar_config, "status_edge_padding",
181 &status_edge_padding);
179 if (status_command) { 182 if (status_command) {
180 free(config->status_command); 183 free(config->status_command);
181 config->status_command = strdup(json_object_get_string(status_command)); 184 config->status_command = strdup(json_object_get_string(status_command));
@@ -209,6 +212,12 @@ static bool ipc_parse_config(
209 if (bar_height) { 212 if (bar_height) {
210 config->height = json_object_get_int(bar_height); 213 config->height = json_object_get_int(bar_height);
211 } 214 }
215 if (status_padding) {
216 config->status_padding = json_object_get_int(status_padding);
217 }
218 if (status_edge_padding) {
219 config->status_edge_padding = json_object_get_int(status_edge_padding);
220 }
212 if (gaps) { 221 if (gaps) {
213 json_object *top = json_object_object_get(gaps, "top"); 222 json_object *top = json_object_object_get(gaps, "top");
214 if (top) { 223 if (top) {
diff --git a/swaybar/render.c b/swaybar/render.c
index 7cbcea07..993c8228 100644
--- a/swaybar/render.c
+++ b/swaybar/render.c
@@ -35,7 +35,8 @@ static uint32_t render_status_line_error(cairo_t *cairo,
35 cairo_set_source_u32(cairo, 0xFF0000FF); 35 cairo_set_source_u32(cairo, 0xFF0000FF);
36 36
37 int margin = 3 * output->scale; 37 int margin = 3 * output->scale;
38 int ws_vertical_padding = WS_VERTICAL_PADDING * output->scale; 38 double ws_vertical_padding =
39 output->bar->config->status_padding * output->scale;
39 40
40 char *font = output->bar->config->font; 41 char *font = output->bar->config->font;
41 int text_width, text_height; 42 int text_width, text_height;
@@ -71,7 +72,7 @@ static uint32_t render_status_line_text(cairo_t *cairo,
71 get_text_size(cairo, config->font, &text_width, &text_height, NULL, 72 get_text_size(cairo, config->font, &text_width, &text_height, NULL,
72 output->scale, config->pango_markup, "%s", text); 73 output->scale, config->pango_markup, "%s", text);
73 74
74 int ws_vertical_padding = WS_VERTICAL_PADDING * output->scale; 75 double ws_vertical_padding = config->status_padding * output->scale;
75 int margin = 3 * output->scale; 76 int margin = 3 * output->scale;
76 77
77 uint32_t ideal_height = text_height + ws_vertical_padding * 2; 78 uint32_t ideal_height = text_height + ws_vertical_padding * 2;
@@ -153,7 +154,7 @@ static uint32_t render_status_block(cairo_t *cairo,
153 output->scale, block->markup, "%s", block->full_text); 154 output->scale, block->markup, "%s", block->full_text);
154 155
155 int margin = 3 * output->scale; 156 int margin = 3 * output->scale;
156 double ws_vertical_padding = WS_VERTICAL_PADDING * 2 * output->scale; 157 double ws_vertical_padding = config->status_padding * output->scale;
157 158
158 int width = text_width; 159 int width = text_width;
159 if (width < block->min_width) { 160 if (width < block->min_width) {
@@ -193,8 +194,8 @@ static uint32_t render_status_block(cairo_t *cairo,
193 } 194 }
194 } 195 }
195 *x -= sep_block_width; 196 *x -= sep_block_width;
196 } else { 197 } else if (config->status_edge_padding) {
197 *x -= margin; 198 *x -= config->status_edge_padding * output->scale;
198 } 199 }
199 200
200 uint32_t height = output->height * output->scale; 201 uint32_t height = output->height * output->scale;
@@ -212,8 +213,8 @@ static uint32_t render_status_block(cairo_t *cairo,
212 } 213 }
213 214
214 double x_pos = *x; 215 double x_pos = *x;
215 double y_pos = WS_VERTICAL_PADDING * output->scale; 216 double y_pos = ws_vertical_padding;
216 double render_height = height - ws_vertical_padding + output->scale; 217 double render_height = height - ws_vertical_padding * 2;
217 218
218 uint32_t bg_color = block->urgent 219 uint32_t bg_color = block->urgent
219 ? config->colors.urgent_workspace.background : block->background; 220 ? config->colors.urgent_workspace.background : block->background;
@@ -286,7 +287,7 @@ static uint32_t render_status_block(cairo_t *cairo,
286static uint32_t render_status_line_i3bar(cairo_t *cairo, 287static uint32_t render_status_line_i3bar(cairo_t *cairo,
287 struct swaybar_output *output, double *x) { 288 struct swaybar_output *output, double *x) {
288 uint32_t max_height = 0; 289 uint32_t max_height = 0;
289 bool edge = true; 290 bool edge = *x == output->width * output->scale;
290 struct i3bar_block *block; 291 struct i3bar_block *block;
291 wl_list_for_each(block, &output->bar->status->blocks, link) { 292 wl_list_for_each(block, &output->bar->status->blocks, link) {
292 uint32_t h = render_status_block(cairo, output, block, x, edge); 293 uint32_t h = render_status_block(cairo, output, block, x, edge);