aboutsummaryrefslogtreecommitdiffstats
path: root/sway/commands/reload.c
diff options
context:
space:
mode:
authorLibravatar Ian Fan <ianfan0@gmail.com>2018-07-13 23:22:34 +0100
committerLibravatar Ian Fan <ianfan0@gmail.com>2018-08-01 16:57:14 +0100
commitdd6debf367420d0771cc0326ecb2511c1ce05ac1 (patch)
tree347924ac927704f7cc49bd55a2b8277f7bc23948 /sway/commands/reload.c
parentipc: add workspace::empty event (diff)
downloadsway-dd6debf367420d0771cc0326ecb2511c1ce05ac1.tar.gz
sway-dd6debf367420d0771cc0326ecb2511c1ce05ac1.tar.zst
sway-dd6debf367420d0771cc0326ecb2511c1ce05ac1.zip
ipc: add barconfig_update event on config reload
Diffstat (limited to 'sway/commands/reload.c')
-rw-r--r--sway/commands/reload.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/sway/commands/reload.c b/sway/commands/reload.c
index cea6a94b..36c6acce 100644
--- a/sway/commands/reload.c
+++ b/sway/commands/reload.c
@@ -1,17 +1,45 @@
1#define _XOPEN_SOURCE 500
2#include <string.h>
1#include "sway/commands.h" 3#include "sway/commands.h"
2#include "sway/config.h" 4#include "sway/config.h"
5#include "sway/ipc-server.h"
3#include "sway/tree/arrange.h" 6#include "sway/tree/arrange.h"
7#include "list.h"
4 8
5struct cmd_results *cmd_reload(int argc, char **argv) { 9struct cmd_results *cmd_reload(int argc, char **argv) {
6 struct cmd_results *error = NULL; 10 struct cmd_results *error = NULL;
7 if ((error = checkarg(argc, "reload", EXPECTED_EQUAL_TO, 0))) { 11 if ((error = checkarg(argc, "reload", EXPECTED_EQUAL_TO, 0))) {
8 return error; 12 return error;
9 } 13 }
14
15 // store bar ids to check against new bars for barconfig_update events
16 list_t *bar_ids = create_list();
17 for (int i = 0; i < config->bars->length; ++i) {
18 struct bar_config *bar = config->bars->items[i];
19 list_add(bar_ids, strdup(bar->id));
20 }
21
10 if (!load_main_config(config->current_config_path, true)) { 22 if (!load_main_config(config->current_config_path, true)) {
11 return cmd_results_new(CMD_FAILURE, "reload", "Error(s) reloading config."); 23 return cmd_results_new(CMD_FAILURE, "reload", "Error(s) reloading config.");
12 } 24 }
13 25
14 load_swaybars(); 26 load_swaybars();
27
28 for (int i = 0; i < config->bars->length; ++i) {
29 struct bar_config *bar = config->bars->items[i];
30 for (int j = 0; j < bar_ids->length; ++j) {
31 if (strcmp(bar->id, bar_ids->items[j]) == 0) {
32 ipc_event_barconfig_update(bar);
33 break;
34 }
35 }
36 }
37
38 for (int i = 0; i < bar_ids->length; ++i) {
39 free(bar_ids->items[i]);
40 }
41 list_free(bar_ids);
42
15 arrange_windows(&root_container); 43 arrange_windows(&root_container);
16 return cmd_results_new(CMD_SUCCESS, NULL, NULL); 44 return cmd_results_new(CMD_SUCCESS, NULL, NULL);
17} 45}