diff options
Diffstat (limited to 'rootston/config.c')
-rw-r--r-- | rootston/config.c | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/rootston/config.c b/rootston/config.c index 5e911e39..71a4731b 100644 --- a/rootston/config.c +++ b/rootston/config.c @@ -16,12 +16,13 @@ static void usage(const char *name, int ret) { fprintf(stderr, - "usage: %s [-C <FILE>]\n" + "usage: %s [-C <FILE>] [-E <COMMAND>]\n" "\n" " -C <FILE> Path to the configuration file\n" " (default: rootston.ini).\n" " See `rootston.ini.example` for config\n" - " file documentation.\n", name); + " file documentation.\n" + " -E <COMMAND> Command that will be ran at startup.\n" , name); exit(ret); } @@ -263,17 +264,24 @@ static int config_ini_handler(void *user, const char *section, const char *name, struct roots_config *parse_args(int argc, char *argv[]) { struct roots_config *config = calloc(1, sizeof(struct roots_config)); + if (config == NULL) { + return NULL; + } + config->xwayland = true; wl_list_init(&config->outputs); wl_list_init(&config->devices); wl_list_init(&config->bindings); int c; - while ((c = getopt(argc, argv, "C:h")) != -1) { + while ((c = getopt(argc, argv, "C:E:h")) != -1) { switch (c) { case 'C': config->config_path = strdup(optarg); break; + case 'E': + config->startup_cmd = strdup(optarg); + break; case 'h': case '?': usage(argv[0], c != 'h'); @@ -296,7 +304,8 @@ struct roots_config *parse_args(int argc, char *argv[]) { int result = ini_parse(config->config_path, config_ini_handler, config); if (result == -1) { - wlr_log(L_DEBUG, "No config file found. Using empty config."); + wlr_log(L_DEBUG, "No config file found. Using sensible defaults."); + config->keyboard.meta_key = WLR_MODIFIER_LOGO; add_binding_config(&config->bindings, "Logo+Shift+e", "exit"); add_binding_config(&config->bindings, "Ctrl+q", "close"); add_binding_config(&config->bindings, "Alt+Tab", "next_window"); |