aboutsummaryrefslogtreecommitdiffstats
path: root/swaybar
diff options
context:
space:
mode:
authorLibravatar Brian Ashworth <bosrsf04@gmail.com>2019-01-11 00:12:24 -0500
committerLibravatar Brian Ashworth <bosrsf04@gmail.com>2019-01-11 00:12:24 -0500
commitca0a75d5408125c4e2a9394fd1b08b7bbc4ff9c5 (patch)
tree37c5bfa911eebcb21f9712799160d1126363e139 /swaybar
parentswaybar: add status_padding command (diff)
downloadsway-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.c1
-rw-r--r--swaybar/ipc.c7
-rw-r--r--swaybar/render.c6
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,
287static uint32_t render_status_line_i3bar(cairo_t *cairo, 287static 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);