X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=settings.c;h=8852740226cb7dc009e09afb13daefb681849279;hb=311fbc06d53a7d0447b0b9918bb9cfea845c395d;hp=ab8c115af6b45d81d55bbed5d8420b2cdd1ce72f;hpb=49de0d6e946f2b198af88ba245a2702f5b1122c6;p=bspwm.git diff --git a/settings.c b/settings.c index ab8c115..8852740 100644 --- a/settings.c +++ b/settings.c @@ -1,104 +1,71 @@ -#define _BSD_SOURCE - #include #include #include -#include "utils.h" -#include "luautils.h" -#include "settings.h" +#include +#include +#include +#include +#include "bspwm.h" +#include "helpers.h" #include "common.h" +#include "settings.h" -void load_settings(void) +void run_autostart(void) { - lua_State *L = lua_open(); - luaopen_base(L); - - if (luaL_loadfile(L, CONFIG_FILE) == 0) { - if (lua_pcall(L, 0, 0, 0) == 0) - apply_settings(L); - else - die("error: cannot interpret configuration file\n"); - } else { - die("error: could not load configuration file\n"); + char path[MAXLEN]; + + char *config_home = getenv(CONFIG_HOME_ENV); + if (config_home != NULL) + snprintf(path, sizeof(path), "%s/%s/%s", config_home, WM_NAME, AUTOSTART_FILE); + else + snprintf(path, sizeof(path), "%s/%s/%s/%s", getenv("HOME"), ".config", WM_NAME, AUTOSTART_FILE); + + if (fork() == 0) { + if (dpy != NULL) + close(xcb_get_file_descriptor(dpy)); + if (fork() == 0) { + setsid(); + execl(path, path, NULL); + err("Couldn't spawn the autostart file.\n"); + } + exit(EXIT_SUCCESS); } - lua_close(L); -} - -void apply_settings(lua_State *L) -{ - normal_border_color = string_expr(L, "normal_border_color", NORMAL_BORDER_COLOR); - active_border_color = string_expr(L, "active_border_color", ACTIVE_BORDER_COLOR); - locked_border_color = string_expr(L, "locked_border_color", LOCKED_BORDER_COLOR); - urgent_border_color = string_expr(L, "urgent_border_color", URGENT_BORDER_COLOR); - inner_border_color = string_expr(L, "inner_border_color", INNER_BORDER_COLOR); - - smart_surroundings = bool_expr(L, "smart_surroundings", SMART_SURROUNDINGS); - - outer_border_width = int_expr(L, "outer_border_width", OUTER_BORDER_WIDTH); - inner_border_width = int_expr(L, "inner_border_width", INNER_BORDER_WIDTH); - border_width = inner_border_width + outer_border_width; - - window_gap = int_expr(L, "window_gap", WINDOW_GAP); -} - -void get_setting(lua_State *L, char* rsp) -{ - char *name; - - if (!has_table(L, "get")) - return; - - name = string_expr(L, "get.name", NULL); - if (name == NULL) - return; - - if (strcmp(name, "inner_border_width") == 0) - sprintf(rsp, "%i\n", inner_border_width); - else if (strcmp(name, "outer_border_width") == 0) - sprintf(rsp, "%i\n", outer_border_width); - else if (strcmp(name, "window_gap") == 0) - sprintf(rsp, "%i\n", window_gap); - else if (strcmp(name, "normal_border_color") == 0) - sprintf(rsp, "%s\n", normal_border_color); - else if (strcmp(name, "active_border_color") == 0) - sprintf(rsp, "%s\n", active_border_color); - else if (strcmp(name, "locked_border_color") == 0) - sprintf(rsp, "%s\n", locked_border_color); - else if (strcmp(name, "urgent_border_color") == 0) - sprintf(rsp, "%s\n", urgent_border_color); - else if (strcmp(name, "inner_border_color") == 0) - sprintf(rsp, "%s\n", inner_border_color); - else if (strcmp(name, "smart_surroundings") == 0) - sprintf(rsp, "%s\n", BOOLSTR(smart_surroundings)); + wait(NULL); } -void set_setting(lua_State *L) +void load_settings(void) { - char *name, *backup; - - if (!has_table(L, "set")) - return; - - name = string_expr(L, "set.name", NULL); - - if (name == NULL) - return; - - if (strcmp(name, "inner_border_width") == 0) { - inner_border_width = int_expr(L, "set.value", inner_border_width); - } else if (strcmp(name, "normal_border_color") == 0) { - backup = strdup(normal_border_color); - free(normal_border_color); - normal_border_color = string_expr(L, "set.value", backup); - } else if (strcmp(name, "inner_border_color") == 0) { - backup = strdup(inner_border_color); - free(inner_border_color); - inner_border_color = string_expr(L, "set.value", backup); - } else if (strcmp(name, "smart_surroundings") == 0) { - smart_surroundings = bool_expr(L, "set.value", smart_surroundings); - } - - if (backup != NULL) - free(backup); + strncpy(normal_border_color, NORMAL_BORDER_COLOR, sizeof(normal_border_color)); + strncpy(focused_border_color, FOCUSED_BORDER_COLOR, sizeof(focused_border_color)); + strncpy(active_border_color, ACTIVE_BORDER_COLOR, sizeof(active_border_color)); + strncpy(presel_border_color, PRESEL_BORDER_COLOR, sizeof(presel_border_color)); + strncpy(focused_locked_border_color, FOCUSED_LOCKED_BORDER_COLOR, sizeof(focused_locked_border_color)); + strncpy(active_locked_border_color, ACTIVE_LOCKED_BORDER_COLOR, sizeof(active_locked_border_color)); + strncpy(normal_locked_border_color, NORMAL_LOCKED_BORDER_COLOR, sizeof(normal_locked_border_color)); + strncpy(urgent_border_color, URGENT_BORDER_COLOR, sizeof(urgent_border_color)); + + normal_border_color_pxl = get_color(normal_border_color); + focused_border_color_pxl = get_color(active_border_color); + active_border_color_pxl = get_color(active_border_color); + presel_border_color_pxl = get_color(presel_border_color); + focused_locked_border_color_pxl = get_color(active_locked_border_color); + active_locked_border_color_pxl = get_color(active_locked_border_color); + normal_locked_border_color_pxl = get_color(normal_locked_border_color); + urgent_border_color_pxl = get_color(urgent_border_color); + + strncpy(wm_name, WM_NAME, sizeof(wm_name)); + + border_width = BORDER_WIDTH; + window_gap = WINDOW_GAP; + split_ratio = SPLIT_RATIO; + + borderless_monocle = BORDERLESS_MONOCLE; + gapless_monocle = GAPLESS_MONOCLE; + focus_follows_pointer = FOCUS_FOLLOWS_POINTER; + pointer_follows_monitor = POINTER_FOLLOWS_MONITOR; + adaptative_raise = ADAPTATIVE_RAISE; + apply_shadow_property = APPLY_SHADOW_PROPERTY; + auto_alternate = AUTO_ALTERNATE; + focus_by_distance = FOCUS_BY_DISTANCE; }