aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Dwyer <ryandwyer1@gmail.com>2016-09-17 17:25:45 +1000
committerRyan Dwyer <ryandwyer1@gmail.com>2016-09-17 17:25:45 +1000
commite4cb4d1b5cd32e9455243ee7138bf007343269c2 (patch)
tree1c96a901a341a314be49844080fdb813b2e7f8b5
parent461e250e26ead67351bbecfcd94d8c0f2504a5d2 (diff)
downloadsway-e4cb4d1b5cd32e9455243ee7138bf007343269c2.tar.xz
Fix swaybar when running on named outputs.
When using a bar on a named output, load_swaybars() requires the output to be active (ie. in the root container), but this is not the case if the bar is added to the last output. To fix this, load_swaybars() is now called after the output has been added to the root container. After fixing that, swaybar would segfault due to using the wrong index variable when loading outputs and config.
-rw-r--r--sway/config.c3
-rw-r--r--sway/container.c1
-rw-r--r--swaybar/ipc.c2
3 files changed, 2 insertions, 4 deletions
diff --git a/sway/config.c b/sway/config.c
index a187fe3e..c0fbd210 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -936,9 +936,6 @@ void apply_output_config(struct output_config *oc, swayc_t *output) {
execvp(cmd[0], cmd);
}
}
-
- // reload swaybars
- load_swaybars();
}
char *do_var_replacement(char *str) {
diff --git a/sway/container.c b/sway/container.c
index 5614293c..561dcba6 100644
--- a/sway/container.c
+++ b/sway/container.c
@@ -156,6 +156,7 @@ swayc_t *new_output(wlc_handle handle) {
apply_output_config(oc, output);
add_child(&root_container, output);
+ load_swaybars();
// Create workspace
char *ws_name = NULL;
diff --git a/swaybar/ipc.c b/swaybar/ipc.c
index bce9dc79..2c092853 100644
--- a/swaybar/ipc.c
+++ b/swaybar/ipc.c
@@ -278,7 +278,7 @@ void ipc_bar_init(struct bar *bar, const char *bar_id) {
} else {
int j = 0;
for (j = 0; j < bar->config->outputs->length; ++j) {
- const char *conf_name = bar->config->outputs->items[i];
+ const char *conf_name = bar->config->outputs->items[j];
if (strcasecmp(name, conf_name) == 0) {
use_output = true;
break;