X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fconfig_directives.c;h=dfbb52d858ad7f7ebff31c47544c0cfd0a192f52;hb=ede954128afca118025db6a04d4d9d259473c70f;hp=ad6d65b5fe368c11b52925ac22cf58ee582c973c;hpb=2cffb978f0a1a03dfebc2df6f86ff33d334d8bbc;p=i3%2Fi3 diff --git a/src/config_directives.c b/src/config_directives.c index ad6d65b5..dfbb52d8 100644 --- a/src/config_directives.c +++ b/src/config_directives.c @@ -322,27 +322,30 @@ CFGFUN(show_marks, const char *value) { config.show_marks = eval_boolstr(value); } -CFGFUN(workspace, const char *workspace, const char *output) { - DLOG("Assigning workspace \"%s\" to output \"%s\"\n", workspace, output); +CFGFUN(workspace, const char *workspace, const char *outputs) { + DLOG("Assigning workspace \"%s\" to outputs \"%s\"\n", workspace, outputs); /* Check for earlier assignments of the same workspace so that we * don’t have assignments of a single workspace to different * outputs */ struct Workspace_Assignment *assignment; - bool duplicate = false; TAILQ_FOREACH(assignment, &ws_assignments, ws_assignments) { if (strcasecmp(assignment->name, workspace) == 0) { ELOG("You have a duplicate workspace assignment for workspace \"%s\"\n", workspace); - assignment->output = sstrdup(output); - duplicate = true; + return; } } - if (!duplicate) { + + char *buf = sstrdup(outputs); + char *output = strtok(buf, " "); + while (output != NULL) { assignment = scalloc(1, sizeof(struct Workspace_Assignment)); assignment->name = sstrdup(workspace); assignment->output = sstrdup(output); TAILQ_INSERT_TAIL(&ws_assignments, assignment, ws_assignments); + output = strtok(NULL, " "); } + free(buf); } CFGFUN(ipc_socket, const char *path) { @@ -443,6 +446,10 @@ CFGFUN(no_focus) { TAILQ_INSERT_TAIL(&assignments, assignment, assignments); } +CFGFUN(ipc_kill_timeout, const long timeout_ms) { + ipc_set_kill_timeout(timeout_ms / 1000.0); +} + /******************************************************************************* * Bar configuration (i3bar) ******************************************************************************/ @@ -482,25 +489,8 @@ CFGFUN(bar_verbose, const char *verbose) { current_bar->verbose = eval_boolstr(verbose); } -CFGFUN(bar_modifier, const char *modifier) { - if (strcmp(modifier, "Mod1") == 0) - current_bar->modifier = M_MOD1; - else if (strcmp(modifier, "Mod2") == 0) - current_bar->modifier = M_MOD2; - else if (strcmp(modifier, "Mod3") == 0) - current_bar->modifier = M_MOD3; - else if (strcmp(modifier, "Mod4") == 0) - current_bar->modifier = M_MOD4; - else if (strcmp(modifier, "Mod5") == 0) - current_bar->modifier = M_MOD5; - else if (strcmp(modifier, "Control") == 0 || - strcmp(modifier, "Ctrl") == 0) - current_bar->modifier = M_CONTROL; - else if (strcmp(modifier, "Shift") == 0) - current_bar->modifier = M_SHIFT; - else if (strcmp(modifier, "none") == 0 || - strcmp(modifier, "off") == 0) - current_bar->modifier = M_NONE; +CFGFUN(bar_modifier, const char *modifiers) { + current_bar->modifier = modifiers ? event_state_from_str(modifiers) : XCB_NONE; } static void bar_configure_binding(const char *button, const char *release, const char *command) { @@ -627,12 +617,16 @@ CFGFUN(bar_strip_workspace_numbers, const char *value) { current_bar->strip_workspace_numbers = eval_boolstr(value); } +CFGFUN(bar_strip_workspace_name, const char *value) { + current_bar->strip_workspace_name = eval_boolstr(value); +} + CFGFUN(bar_start) { current_bar = scalloc(1, sizeof(struct Barconfig)); TAILQ_INIT(&(current_bar->bar_bindings)); TAILQ_INIT(&(current_bar->tray_outputs)); current_bar->tray_padding = 2; - current_bar->modifier = M_MOD4; + current_bar->modifier = XCB_KEY_BUT_MASK_MOD_4; } CFGFUN(bar_finish) {