X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fconfig_directives.c;h=d772387dc7e61260b0af01950e9532568fd3642e;hb=a2aec4ee92b86c3fe4ef22dac9eede0e81c8c994;hp=0e477b703928ba11d44631141406c1b718c4ba8e;hpb=f76838794d703860914cb1a2b0ab44d03b7780c8;p=i3%2Fi3 diff --git a/src/config_directives.c b/src/config_directives.c index 0e477b70..d772387d 100644 --- a/src/config_directives.c +++ b/src/config_directives.c @@ -137,6 +137,11 @@ CFGFUN(criteria_add, const char *ctype, const char *cvalue) { return; } + if (strcmp(ctype, "workspace") == 0) { + current_match->workspace = regex_new(cvalue); + return; + } + ELOG("Unknown criterion: %s\n", ctype); } @@ -156,32 +161,40 @@ static bool eval_boolstr(const char *str) { } /* - * A utility function to convert a string of modifiers to the corresponding bit - * mask. + * A utility function to convert a string containing the group and modifiers to + * the corresponding bit mask. */ -uint32_t modifiers_from_str(const char *str) { +i3_event_state_mask_t event_state_from_str(const char *str) { /* It might be better to use strtok() here, but the simpler strstr() should * do for now. */ - uint32_t result = 0; + i3_event_state_mask_t result = 0; if (str == NULL) return result; if (strstr(str, "Mod1") != NULL) - result |= BIND_MOD1; + result |= XCB_KEY_BUT_MASK_MOD_1; if (strstr(str, "Mod2") != NULL) - result |= BIND_MOD2; + result |= XCB_KEY_BUT_MASK_MOD_2; if (strstr(str, "Mod3") != NULL) - result |= BIND_MOD3; + result |= XCB_KEY_BUT_MASK_MOD_3; if (strstr(str, "Mod4") != NULL) - result |= BIND_MOD4; + result |= XCB_KEY_BUT_MASK_MOD_4; if (strstr(str, "Mod5") != NULL) - result |= BIND_MOD5; + result |= XCB_KEY_BUT_MASK_MOD_5; if (strstr(str, "Control") != NULL || strstr(str, "Ctrl") != NULL) - result |= BIND_CONTROL; + result |= XCB_KEY_BUT_MASK_CONTROL; if (strstr(str, "Shift") != NULL) - result |= BIND_SHIFT; - if (strstr(str, "Mode_switch") != NULL) - result |= BIND_MODE_SWITCH; + result |= XCB_KEY_BUT_MASK_SHIFT; + + if (strstr(str, "Group1") != NULL) + result |= (I3_XKB_GROUP_MASK_1 << 16); + if (strstr(str, "Group2") != NULL || + strstr(str, "Mode_switch") != NULL) + result |= (I3_XKB_GROUP_MASK_2 << 16); + if (strstr(str, "Group3") != NULL) + result |= (I3_XKB_GROUP_MASK_3 << 16); + if (strstr(str, "Group4") != NULL) + result |= (I3_XKB_GROUP_MASK_4 << 16); return result; } @@ -237,7 +250,7 @@ CFGFUN(for_window, const char *command) { return; } DLOG("\t should execute command %s for the criteria mentioned above\n", command); - Assignment *assignment = scalloc(sizeof(Assignment)); + Assignment *assignment = scalloc(1, sizeof(Assignment)); assignment->type = A_COMMAND; match_copy(&(assignment->match), current_match); assignment->dest.command = sstrdup(command); @@ -255,7 +268,7 @@ CFGFUN(floating_maximum_size, const long width, const long height) { } CFGFUN(floating_modifier, const char *modifiers) { - config.floating_modifier = modifiers_from_str(modifiers); + config.floating_modifier = event_state_from_str(modifiers); } CFGFUN(default_orientation, const char *orientation) { @@ -354,10 +367,6 @@ CFGFUN(force_display_urgency_hint, const long duration_ms) { config.workspace_urgency_timer = duration_ms / 1000.0; } -CFGFUN(delay_exit_on_zero_displays, const long duration_ms) { - config.zero_disp_exit_timer_ms = duration_ms; -} - CFGFUN(focus_on_window_activation, const char *mode) { if (strcmp(mode, "smart") == 0) config.focus_on_window_activation = FOWA_SMART; @@ -372,7 +381,7 @@ CFGFUN(focus_on_window_activation, const char *mode) { return; } - DLOG("Set new focus_on_window_activation mode = %i", config.focus_on_window_activation); + DLOG("Set new focus_on_window_activation mode = %i.\n", config.focus_on_window_activation); } CFGFUN(show_marks, const char *value) { @@ -395,7 +404,7 @@ CFGFUN(workspace, const char *workspace, const char *output) { } } if (!duplicate) { - assignment = scalloc(sizeof(struct Workspace_Assignment)); + assignment = scalloc(1, sizeof(struct Workspace_Assignment)); assignment->name = sstrdup(workspace); assignment->output = sstrdup(output); TAILQ_INSERT_TAIL(&ws_assignments, assignment, ws_assignments); @@ -452,8 +461,8 @@ CFGFUN(assign, const char *workspace) { ELOG("Match is empty, ignoring this assignment\n"); return; } - DLOG("new assignment, using above criteria, to workspace %s\n", workspace); - Assignment *assignment = scalloc(sizeof(Assignment)); + DLOG("New assignment, using above criteria, to workspace \"%s\".\n", workspace); + Assignment *assignment = scalloc(1, sizeof(Assignment)); match_copy(&(assignment->match), current_match); assignment->type = A_TO_WORKSPACE; assignment->dest.workspace = sstrdup(workspace); @@ -466,8 +475,8 @@ CFGFUN(no_focus) { return; } - DLOG("new assignment, using above criteria, to ignore focus on manage"); - Assignment *assignment = scalloc(sizeof(Assignment)); + DLOG("New assignment, using above criteria, to ignore focus on manage.\n"); + Assignment *assignment = scalloc(1, sizeof(Assignment)); match_copy(&(assignment->match), current_match); assignment->type = A_NO_FOCUS; TAILQ_INSERT_TAIL(&assignments, assignment, assignments); @@ -550,7 +559,7 @@ static void bar_configure_binding(const char *button, const char *command) { } } - struct Barbinding *new_binding = scalloc(sizeof(struct Barbinding)); + struct Barbinding *new_binding = scalloc(1, sizeof(struct Barbinding)); new_binding->input_code = input_code; new_binding->command = sstrdup(command); TAILQ_INSERT_TAIL(&(current_bar.bar_bindings), new_binding, bindings); @@ -664,7 +673,7 @@ CFGFUN(bar_finish) { /* Copy the current (static) structure into a dynamically allocated * one, then cleanup our static one. */ - Barconfig *bar_config = scalloc(sizeof(Barconfig)); + Barconfig *bar_config = scalloc(1, sizeof(Barconfig)); memcpy(bar_config, ¤t_bar, sizeof(Barconfig)); TAILQ_INSERT_TAIL(&barconfigs, bar_config, configs);