aboutsummaryrefslogtreecommitdiffstats
path: root/sway/config.c
diff options
context:
space:
mode:
authorLibravatar Drew DeVault <sir@cmpwn.com>2018-03-29 17:20:03 -0400
committerLibravatar Drew DeVault <sir@cmpwn.com>2018-03-29 22:11:08 -0400
commitbf7a4cd0ebd465a0597e9eec0142fad222b396de (patch)
treef95c4b8cd8e7d06eaa1b688d3bcbb3249dc21129 /sway/config.c
parentImplement enough IPC for swaybar to work (diff)
downloadsway-bf7a4cd0ebd465a0597e9eec0142fad222b396de.tar.gz
sway-bf7a4cd0ebd465a0597e9eec0142fad222b396de.tar.zst
sway-bf7a4cd0ebd465a0597e9eec0142fad222b396de.zip
Add bar configuration commands
Diffstat (limited to 'sway/config.c')
-rw-r--r--sway/config.c127
1 files changed, 127 insertions, 0 deletions
diff --git a/sway/config.c b/sway/config.c
index 0422fdd9..a0e408de 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -110,6 +110,48 @@ void free_config(struct sway_config *config) {
110 free(config); 110 free(config);
111} 111}
112 112
113static void free_bar(struct bar_config *bar) {
114 if (!bar) {
115 return;
116 }
117 free(bar->mode);
118 free(bar->position);
119 free(bar->hidden_state);
120 free(bar->status_command);
121 free(bar->font);
122 free(bar->separator_symbol);
123 // TODO: Free mouse bindings
124 list_free(bar->bindings);
125 if (bar->outputs) {
126 free_flat_list(bar->outputs);
127 }
128 if (bar->pid != 0) {
129 // TODO terminate_swaybar(bar->pid);
130 }
131 free(bar->colors.background);
132 free(bar->colors.statusline);
133 free(bar->colors.separator);
134 free(bar->colors.focused_background);
135 free(bar->colors.focused_statusline);
136 free(bar->colors.focused_separator);
137 free(bar->colors.focused_workspace_border);
138 free(bar->colors.focused_workspace_bg);
139 free(bar->colors.focused_workspace_text);
140 free(bar->colors.active_workspace_border);
141 free(bar->colors.active_workspace_bg);
142 free(bar->colors.active_workspace_text);
143 free(bar->colors.inactive_workspace_border);
144 free(bar->colors.inactive_workspace_bg);
145 free(bar->colors.inactive_workspace_text);
146 free(bar->colors.urgent_workspace_border);
147 free(bar->colors.urgent_workspace_bg);
148 free(bar->colors.urgent_workspace_text);
149 free(bar->colors.binding_mode_border);
150 free(bar->colors.binding_mode_bg);
151 free(bar->colors.binding_mode_text);
152 free(bar);
153}
154
113static void destroy_removed_seats(struct sway_config *old_config, 155static void destroy_removed_seats(struct sway_config *old_config,
114 struct sway_config *new_config) { 156 struct sway_config *new_config) {
115 struct seat_config *seat_config; 157 struct seat_config *seat_config;
@@ -239,6 +281,91 @@ cleanup:
239 sway_abort("Unable to allocate config structures"); 281 sway_abort("Unable to allocate config structures");
240} 282}
241 283
284struct bar_config *default_bar_config(void) {
285 struct bar_config *bar = NULL;
286 bar = malloc(sizeof(struct bar_config));
287 if (!bar) {
288 return NULL;
289 }
290 if (!(bar->mode = strdup("dock"))) goto cleanup;
291 if (!(bar->hidden_state = strdup("hide"))) goto cleanup;
292 bar->outputs = NULL;
293 bar->position = strdup("bottom");
294 if (!(bar->bindings = create_list())) goto cleanup;
295 if (!(bar->status_command = strdup("while :; do date +'%Y-%m-%d %l:%M:%S %p'; sleep 1; done"))) goto cleanup;
296 bar->pango_markup = false;
297 bar->swaybar_command = NULL;
298 bar->font = NULL;
299 bar->height = -1;
300 bar->workspace_buttons = true;
301 bar->wrap_scroll = false;
302 bar->separator_symbol = NULL;
303 bar->strip_workspace_numbers = false;
304 bar->binding_mode_indicator = true;
305 bar->verbose = false;
306 bar->pid = 0;
307 // set default colors
308 if (!(bar->colors.background = strndup("#000000ff", 9))) {
309 goto cleanup;
310 }
311 if (!(bar->colors.statusline = strndup("#ffffffff", 9))) {
312 goto cleanup;
313 }
314 if (!(bar->colors.separator = strndup("#666666ff", 9))) {
315 goto cleanup;
316 }
317 if (!(bar->colors.focused_workspace_border = strndup("#4c7899ff", 9))) {
318 goto cleanup;
319 }
320 if (!(bar->colors.focused_workspace_bg = strndup("#285577ff", 9))) {
321 goto cleanup;
322 }
323 if (!(bar->colors.focused_workspace_text = strndup("#ffffffff", 9))) {
324 goto cleanup;
325 }
326 if (!(bar->colors.active_workspace_border = strndup("#333333ff", 9))) {
327 goto cleanup;
328 }
329 if (!(bar->colors.active_workspace_bg = strndup("#5f676aff", 9))) {
330 goto cleanup;
331 }
332 if (!(bar->colors.active_workspace_text = strndup("#ffffffff", 9))) {
333 goto cleanup;
334 }
335 if (!(bar->colors.inactive_workspace_border = strndup("#333333ff", 9))) {
336 goto cleanup;
337 }
338 if (!(bar->colors.inactive_workspace_bg = strndup("#222222ff", 9))) {
339 goto cleanup;
340 }
341 if (!(bar->colors.inactive_workspace_text = strndup("#888888ff", 9))) {
342 goto cleanup;
343 }
344 if (!(bar->colors.urgent_workspace_border = strndup("#2f343aff", 9))) {
345 goto cleanup;
346 }
347 if (!(bar->colors.urgent_workspace_bg = strndup("#900000ff", 9))) {
348 goto cleanup;
349 }
350 if (!(bar->colors.urgent_workspace_text = strndup("#ffffffff", 9))) {
351 goto cleanup;
352 }
353 // if the following colors stay undefined, they fall back to background,
354 // statusline, separator and urgent_workspace_*.
355 bar->colors.focused_background = NULL;
356 bar->colors.focused_statusline = NULL;
357 bar->colors.focused_separator = NULL;
358 bar->colors.binding_mode_border = NULL;
359 bar->colors.binding_mode_bg = NULL;
360 bar->colors.binding_mode_text = NULL;
361
362 list_add(config->bars, bar);
363 return bar;
364cleanup:
365 free_bar(bar);
366 return NULL;
367}
368
242static bool file_exists(const char *path) { 369static bool file_exists(const char *path) {
243 return path && access(path, R_OK) != -1; 370 return path && access(path, R_OK) != -1;
244} 371}