diff options
author | Brian Ashworth <bosrsf04@gmail.com> | 2019-01-11 00:12:24 -0500 |
---|---|---|
committer | Brian Ashworth <bosrsf04@gmail.com> | 2019-01-11 00:12:24 -0500 |
commit | ca0a75d5408125c4e2a9394fd1b08b7bbc4ff9c5 (patch) | |
tree | 37c5bfa911eebcb21f9712799160d1126363e139 /swaybar | |
parent | swaybar: add status_padding command (diff) | |
download | sway-ca0a75d5408125c4e2a9394fd1b08b7bbc4ff9c5.tar.gz sway-ca0a75d5408125c4e2a9394fd1b08b7bbc4ff9c5.tar.zst sway-ca0a75d5408125c4e2a9394fd1b08b7bbc4ff9c5.zip |
swaybar: add status_edge_padding command
This adds the bar subcommand `status_edge_padding <padding>` to set the
padding used when the status line is on the right edge of the bar.
Diffstat (limited to 'swaybar')
-rw-r--r-- | swaybar/config.c | 1 | ||||
-rw-r--r-- | swaybar/ipc.c | 7 | ||||
-rw-r--r-- | swaybar/render.c | 6 |
3 files changed, 10 insertions, 4 deletions
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) { | |||
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; | 40 | config->status_padding = 1; |
41 | config->status_edge_padding = 3; | ||
41 | 42 | ||
42 | /* height */ | 43 | /* height */ |
43 | config->height = 0; | 44 | 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( | |||
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, *status_padding; | 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); |
@@ -177,6 +177,8 @@ static bool ipc_parse_config( | |||
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); | 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); | ||
180 | if (status_command) { | 182 | if (status_command) { |
181 | free(config->status_command); | 183 | free(config->status_command); |
182 | config->status_command = strdup(json_object_get_string(status_command)); | 184 | config->status_command = strdup(json_object_get_string(status_command)); |
@@ -213,6 +215,9 @@ static bool ipc_parse_config( | |||
213 | if (status_padding) { | 215 | if (status_padding) { |
214 | config->status_padding = json_object_get_int(status_padding); | 216 | config->status_padding = json_object_get_int(status_padding); |
215 | } | 217 | } |
218 | if (status_edge_padding) { | ||
219 | config->status_edge_padding = json_object_get_int(status_edge_padding); | ||
220 | } | ||
216 | if (gaps) { | 221 | if (gaps) { |
217 | json_object *top = json_object_object_get(gaps, "top"); | 222 | json_object *top = json_object_object_get(gaps, "top"); |
218 | if (top) { | 223 | 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, | |||
194 | } | 194 | } |
195 | } | 195 | } |
196 | *x -= sep_block_width; | 196 | *x -= sep_block_width; |
197 | } else { | 197 | } else if (config->status_edge_padding) { |
198 | *x -= margin; | 198 | *x -= config->status_edge_padding * output->scale; |
199 | } | 199 | } |
200 | 200 | ||
201 | uint32_t height = output->height * output->scale; | 201 | uint32_t height = output->height * output->scale; |
@@ -287,7 +287,7 @@ static uint32_t render_status_block(cairo_t *cairo, | |||
287 | static uint32_t render_status_line_i3bar(cairo_t *cairo, | 287 | static uint32_t render_status_line_i3bar(cairo_t *cairo, |
288 | struct swaybar_output *output, double *x) { | 288 | struct swaybar_output *output, double *x) { |
289 | uint32_t max_height = 0; | 289 | uint32_t max_height = 0; |
290 | bool edge = true; | 290 | bool edge = *x == output->width * output->scale; |
291 | struct i3bar_block *block; | 291 | struct i3bar_block *block; |
292 | wl_list_for_each(block, &output->bar->status->blocks, link) { | 292 | wl_list_for_each(block, &output->bar->status->blocks, link) { |
293 | uint32_t h = render_status_block(cairo, output, block, x, edge); | 293 | uint32_t h = render_status_block(cairo, output, block, x, edge); |