summaryrefslogtreecommitdiff
path: root/sway/config.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/config.c')
-rw-r--r--sway/config.c32
1 files changed, 30 insertions, 2 deletions
diff --git a/sway/config.c b/sway/config.c
index 26dc88cb..3c7badec 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -8,6 +8,25 @@
#include "commands.h"
#include "config.h"
+bool load_config() {
+ // TODO: Allow use of more config file locations
+ const char *name = "/.sway/config";
+ const char *home = getenv("HOME");
+ char *temp = malloc(strlen(home) + strlen(name) + 1);
+ strcpy(temp, home);
+ strcat(temp, name);
+ FILE *f = fopen(temp, "r");
+ if (!f) {
+ fprintf(stderr, "Unable to open %s for reading", temp);
+ free(temp);
+ return false;
+ }
+ free(temp);
+ config = read_config(f, false);
+ fclose(f);
+ return true;
+}
+
void config_defaults(struct sway_config *config) {
config->symbols = create_list();
config->modes = create_list();
@@ -18,12 +37,17 @@ void config_defaults(struct sway_config *config) {
// Flags
config->focus_follows_mouse = true;
config->mouse_warping = true;
+ config->reloading = false;
}
-struct sway_config *read_config(FILE *file) {
+struct sway_config *read_config(FILE *file, bool is_active) {
struct sway_config *config = malloc(sizeof(struct sway_config));
config_defaults(config);
+ if (is_active) {
+ config->reloading = true;
+ }
+
bool success = true;
int temp_depth = 0; // Temporary: skip all config sections with depth
@@ -44,7 +68,7 @@ struct sway_config *read_config(FILE *file) {
if (!temp_depth && handle_command(config, line) != 0) {
success = false;
}
-
+
_continue:
if (line && line[strlen(line) - 1] == '{') {
temp_depth++;
@@ -56,6 +80,10 @@ _continue:
exit(1);
}
+ if (is_active) {
+ config->reloading = true;
+ }
+
return config;
}