diff options
author | Mikkel Oscar Lyderik <mikkeloscar@gmail.com> | 2016-02-24 18:52:57 +0100 |
---|---|---|
committer | Mikkel Oscar Lyderik <mikkeloscar@gmail.com> | 2016-02-27 22:12:35 +0100 |
commit | e15a8a03769736f588f68ae5e1cc24611ed334ae (patch) | |
tree | ee47cb6a964a2507447ae082eef25eb3ad84783a /sway | |
parent | Poll before wl_display_dispatch (diff) | |
download | sway-e15a8a03769736f588f68ae5e1cc24611ed334ae.tar.gz sway-e15a8a03769736f588f68ae5e1cc24611ed334ae.tar.zst sway-e15a8a03769736f588f68ae5e1cc24611ed334ae.zip |
Improve how swaybars are spawned
Diffstat (limited to 'sway')
-rw-r--r-- | sway/commands.c | 9 | ||||
-rw-r--r-- | sway/config.c | 23 |
2 files changed, 19 insertions, 13 deletions
diff --git a/sway/commands.c b/sway/commands.c index 548b7d9f..3b8556ca 100644 --- a/sway/commands.c +++ b/sway/commands.c | |||
@@ -1526,14 +1526,7 @@ static struct cmd_results *cmd_reload(int argc, char **argv) { | |||
1526 | } | 1526 | } |
1527 | if (!load_config(NULL)) return cmd_results_new(CMD_FAILURE, "reload", "Error(s) reloading config."); | 1527 | if (!load_config(NULL)) return cmd_results_new(CMD_FAILURE, "reload", "Error(s) reloading config."); |
1528 | 1528 | ||
1529 | int i; | 1529 | load_swaybars(); |
1530 | swayc_t *cont = NULL; | ||
1531 | for (i = 0; i < root_container.children->length; ++i) { | ||
1532 | cont = root_container.children->items[i]; | ||
1533 | if (cont->type == C_OUTPUT) { | ||
1534 | load_swaybars(cont); | ||
1535 | } | ||
1536 | } | ||
1537 | 1530 | ||
1538 | arrange_windows(&root_container, -1, -1); | 1531 | arrange_windows(&root_container, -1, -1); |
1539 | return cmd_results_new(CMD_SUCCESS, NULL, NULL); | 1532 | return cmd_results_new(CMD_SUCCESS, NULL, NULL); |
diff --git a/sway/config.c b/sway/config.c index c34a660e..16adaf0d 100644 --- a/sway/config.c +++ b/sway/config.c | |||
@@ -529,7 +529,20 @@ void terminate_swaybg(pid_t pid) { | |||
529 | } | 529 | } |
530 | } | 530 | } |
531 | 531 | ||
532 | void load_swaybars(swayc_t *output) { | 532 | static bool active_output(const char *name) { |
533 | int i; | ||
534 | swayc_t *cont = NULL; | ||
535 | for (i = 0; i < root_container.children->length; ++i) { | ||
536 | cont = root_container.children->items[i]; | ||
537 | if (cont->type == C_OUTPUT && strcasecmp(name, cont->name) == 0) { | ||
538 | return true; | ||
539 | } | ||
540 | } | ||
541 | |||
542 | return false; | ||
543 | } | ||
544 | |||
545 | void load_swaybars() { | ||
533 | // Check for bars | 546 | // Check for bars |
534 | list_t *bars = create_list(); | 547 | list_t *bars = create_list(); |
535 | struct bar_config *bar = NULL; | 548 | struct bar_config *bar = NULL; |
@@ -541,7 +554,7 @@ void load_swaybars(swayc_t *output) { | |||
541 | int j; | 554 | int j; |
542 | for (j = 0; j < bar->outputs->length; ++j) { | 555 | for (j = 0; j < bar->outputs->length; ++j) { |
543 | char *o = bar->outputs->items[j]; | 556 | char *o = bar->outputs->items[j]; |
544 | if (!strcmp(o, "*") || !strcasecmp(o, output->name)) { | 557 | if (!strcmp(o, "*") || active_output(o)) { |
545 | apply = true; | 558 | apply = true; |
546 | break; | 559 | break; |
547 | } | 560 | } |
@@ -559,7 +572,7 @@ void load_swaybars(swayc_t *output) { | |||
559 | if (bar->pid != 0) { | 572 | if (bar->pid != 0) { |
560 | terminate_swaybar(bar->pid); | 573 | terminate_swaybar(bar->pid); |
561 | } | 574 | } |
562 | sway_log(L_DEBUG, "Invoking swaybar for output %s and bar '%s'", output->name, bar->id); | 575 | sway_log(L_DEBUG, "Invoking swaybar for bar id '%s'", bar->id); |
563 | invoke_swaybar(bar); | 576 | invoke_swaybar(bar); |
564 | } | 577 | } |
565 | 578 | ||
@@ -683,8 +696,8 @@ void apply_output_config(struct output_config *oc, swayc_t *output) { | |||
683 | } | 696 | } |
684 | } | 697 | } |
685 | 698 | ||
686 | // load swaybars for output | 699 | // reload swaybars |
687 | load_swaybars(output); | 700 | load_swaybars(); |
688 | } | 701 | } |
689 | 702 | ||
690 | char *do_var_replacement(char *str) { | 703 | char *do_var_replacement(char *str) { |