aboutsummaryrefslogtreecommitdiffstats
path: root/sway/config.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/config.c')
-rw-r--r--sway/config.c33
1 files changed, 32 insertions, 1 deletions
diff --git a/sway/config.c b/sway/config.c
index 1973de02..95d8f339 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -103,6 +103,8 @@ static void free_config(struct sway_config *config) {
103 free_output_config(config->output_configs->items[i]); 103 free_output_config(config->output_configs->items[i]);
104 } 104 }
105 list_free(config->output_configs); 105 list_free(config->output_configs);
106
107 list_free(config->active_bar_modifiers);
106 free(config); 108 free(config);
107} 109}
108 110
@@ -145,6 +147,33 @@ static void config_defaults(struct sway_config *config) {
145 config->edge_gaps = true; 147 config->edge_gaps = true;
146 config->gaps_inner = 0; 148 config->gaps_inner = 0;
147 config->gaps_outer = 0; 149 config->gaps_outer = 0;
150
151 config->active_bar_modifiers = create_list();
152}
153
154static int compare_modifiers(const void *left, const void *right) {
155 uint32_t a = *(uint32_t *)left;
156 uint32_t b = *(uint32_t *)right;
157
158 return a - b;
159}
160
161void update_active_bar_modifiers() {
162 if (config->active_bar_modifiers->length > 0) {
163 list_free(config->active_bar_modifiers);
164 config->active_bar_modifiers = create_list();
165 }
166
167 struct bar_config *bar;
168 int i;
169 for (i = 0; i < config->bars->length; ++i) {
170 bar = config->bars->items[i];
171 if (strcmp(bar->mode, "hide") == 0 && strcmp(bar->hidden_state, "hide") == 0) {
172 if (list_seq_find(config->active_bar_modifiers, compare_modifiers, &bar->modifier) < 0) {
173 list_add(config->active_bar_modifiers, &bar->modifier);
174 }
175 }
176 }
148} 177}
149 178
150static char *get_config_path(void) { 179static char *get_config_path(void) {
@@ -215,6 +244,8 @@ bool load_config(const char *file) {
215 } 244 }
216 fclose(f); 245 fclose(f);
217 246
247 update_active_bar_modifiers();
248
218 return config_load_success; 249 return config_load_success;
219} 250}
220 251
@@ -695,7 +726,7 @@ struct bar_config *default_bar_config(void) {
695 bar = malloc(sizeof(struct bar_config)); 726 bar = malloc(sizeof(struct bar_config));
696 bar->mode = strdup("dock"); 727 bar->mode = strdup("dock");
697 bar->hidden_state = strdup("hide"); 728 bar->hidden_state = strdup("hide");
698 bar->modifier = 0; 729 bar->modifier = WLC_BIT_MOD_LOGO;
699 bar->outputs = NULL; 730 bar->outputs = NULL;
700 bar->position = DESKTOP_SHELL_PANEL_POSITION_BOTTOM; 731 bar->position = DESKTOP_SHELL_PANEL_POSITION_BOTTOM;
701 bar->bindings = create_list(); 732 bar->bindings = create_list();