diff options
Diffstat (limited to 'sway/config.c')
-rw-r--r-- | sway/config.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/sway/config.c b/sway/config.c index b56c4f71..a50e9144 100644 --- a/sway/config.c +++ b/sway/config.c @@ -136,6 +136,8 @@ void free_config(struct sway_config *config) { free(config->floating_scroll_left_cmd); free(config->floating_scroll_right_cmd); free(config->font); + free(config->swaybg_command); + free(config->swaynag_command); free((char *)config->current_config_path); free((char *)config->current_config); free(config); @@ -166,7 +168,7 @@ static void set_color(float dest[static 4], uint32_t color) { } static void config_defaults(struct sway_config *config) { - config->swaynag_command = strdup("swaynag"); + if (!(config->swaynag_command = strdup("swaynag"))) goto cleanup; config->swaynag_config_errors = (struct swaynag_instance){ .args = "--type error " "--message 'There are errors in your config file' " @@ -212,6 +214,7 @@ static void config_defaults(struct sway_config *config) { if (!(config->font = strdup("monospace 10"))) goto cleanup; config->font_height = 17; // height of monospace 10 config->urgent_timeout = 500; + config->popup_during_fullscreen = POPUP_SMART; // floating view config->floating_maximum_width = 0; @@ -240,6 +243,8 @@ static void config_defaults(struct sway_config *config) { if (!(config->active_bar_modifiers = create_list())) goto cleanup; + if (!(config->swaybg_command = strdup("swaybg"))) goto cleanup; + if (!(config->config_chain = create_list())) goto cleanup; config->current_config_path = NULL; config->current_config = NULL; @@ -457,6 +462,12 @@ bool load_main_config(const char *file, bool is_active, bool validating) { success = success && load_config(path, config, &config->swaynag_config_errors); + if (validating) { + free_config(config); + config = old_config; + return success; + } + if (is_active) { for (int i = 0; i < config->output_configs->length; i++) { apply_output_config_to_outputs(config->output_configs->items[i]); |