X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=settings.c;h=33266557d9db37dcb802950943c5b9e6a3f0df03;hb=d5d8805ad21cac67044b68b2747003e60e5695f6;hp=17d92acb6a093adb9a4066ce93b3e44070e6e1af;hpb=e1d7fef1e44d19cd174b70a25157ee622d5dc9ae;p=bspwm.git diff --git a/settings.c b/settings.c index 17d92ac..3326655 100644 --- a/settings.c +++ b/settings.c @@ -1,83 +1,72 @@ #include #include #include -#include "utils.h" -#include "luautils.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]; - lua_close(L); -} - -void apply_settings(lua_State *L) -{ - normal_border_color = lua_stringexpr(L, "normal_border_color", NORMAL_BORDER_COLOR); - split_ratio = lua_doubleexpr(L, "split_ratio", SPLIT_RATIO); - smart_surroundings = lua_boolexpr(L, "smart_surroundings", SMART_SURROUNDINGS); - outer_border_width = lua_intexpr(L, "outer_border_width", OUTER_BORDER_WIDTH); - inner_border_width = lua_intexpr(L, "inner_border_width", INNER_BORDER_WIDTH); - inner_border_color = lua_stringexpr(L, "inner_border_color", INNER_BORDER_COLOR); - border_width = inner_border_width + outer_border_width; - /* printf("split ratio: %f\n", split_ratio); */ - /* printf("outer_border_width: %i\n", outer_border_width); */ - /* printf("inner_border_color: %s\n", inner_border_color); */ - /* printf("normal_border_color: %s\n", normal_border_color); */ - /* printf("default normal_border_color: %s\n", NORMAL_BORDER_COLOR); */ - /* printf("outer_border_color: %s\n", outer_border_color); */ - /* printf("smart_surroundings: %i\n", smart_surroundings); */ -} + 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); -void get_setting(lua_State *L) -{ - char *name; - - if (!lua_hastable(L, "get")) - return; - - name = lua_stringexpr(L, "get.name", NULL); - if (name == NULL) - return; + 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); + } - if (strcmp(name, "inner_border_width") == 0) - printf("%i\n", inner_border_width); - else if (strcmp(name, "normal_border_color") == 0) - printf("%s\n", normal_border_color); - else if (strcmp(name, "inner_border_color") == 0) - printf("%s\n", inner_border_color); + wait(NULL); } -void set_setting(lua_State *L) +void load_settings(void) { - char *name; + 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)); - if (!lua_hastable(L, "set")) - return; + 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); - name = lua_stringexpr(L, "set.name", NULL); + strncpy(wm_name, WM_NAME, sizeof(wm_name)); - if (name == NULL) - return; + border_width = BORDER_WIDTH; + window_gap = WINDOW_GAP; + split_ratio = SPLIT_RATIO; - if (strcmp(name, "inner_border_width") == 0) { - inner_border_width = lua_intexpr(L, "set.value", INNER_BORDER_WIDTH); - } else if (strcmp(name, "normal_border_color") == 0) { - free(normal_border_color); - normal_border_color = lua_stringexpr(L, "set.value", NORMAL_BORDER_COLOR); - } else if (strcmp(name, "inner_border_color") == 0) { - free(inner_border_color); - inner_border_color = lua_stringexpr(L, "set.value", INNER_BORDER_COLOR); - } + 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; + history_aware_focus = HISTORY_AWARE_FOCUS; }