Add --modifier flag to i3-config-wizard (#3210)

Add --modifier flag to i3-config-wizard

The --modifier flag accepts either alt or win, and will generate the
configuration file without opening a window.

Also adds i3-config-wizard's flags to the manpage.

Fixes #3136.
This commit is contained in:
Joona 2018-03-30 03:57:41 -07:00 committed by Orestis
parent 63133c878f
commit 4e0bf58109
2 changed files with 33 additions and 3 deletions

View File

@ -745,10 +745,12 @@ int main(int argc, char *argv[]) {
char *pattern = "pango:monospace 8"; char *pattern = "pango:monospace 8";
char *patternbold = "pango:monospace bold 8"; char *patternbold = "pango:monospace bold 8";
int o, option_index = 0; int o, option_index = 0;
bool headless_run = false;
static struct option long_options[] = { static struct option long_options[] = {
{"socket", required_argument, 0, 's'}, {"socket", required_argument, 0, 's'},
{"version", no_argument, 0, 'v'}, {"version", no_argument, 0, 'v'},
{"modifier", required_argument, 0, 'm'},
{"limit", required_argument, 0, 'l'}, {"limit", required_argument, 0, 'l'},
{"prompt", required_argument, 0, 'P'}, {"prompt", required_argument, 0, 'P'},
{"prefix", required_argument, 0, 'p'}, {"prefix", required_argument, 0, 'p'},
@ -756,7 +758,7 @@ int main(int argc, char *argv[]) {
{"help", no_argument, 0, 'h'}, {"help", no_argument, 0, 'h'},
{0, 0, 0, 0}}; {0, 0, 0, 0}};
char *options_string = "s:vh"; char *options_string = "sm:vh";
while ((o = getopt_long(argc, argv, options_string, long_options, &option_index)) != -1) { while ((o = getopt_long(argc, argv, options_string, long_options, &option_index)) != -1) {
switch (o) { switch (o) {
@ -767,9 +769,18 @@ int main(int argc, char *argv[]) {
case 'v': case 'v':
printf("i3-config-wizard " I3_VERSION "\n"); printf("i3-config-wizard " I3_VERSION "\n");
return 0; return 0;
case 'm':
headless_run = true;
if (strcmp(optarg, "alt") == 0)
modifier = MOD_Mod1;
else if (strcmp(optarg, "win") == 0)
modifier = MOD_Mod4;
else
err(EXIT_FAILURE, "Invalid modifier key %s", optarg);
break;
case 'h': case 'h':
printf("i3-config-wizard " I3_VERSION "\n"); printf("i3-config-wizard " I3_VERSION "\n");
printf("i3-config-wizard [-s <socket>] [-v]\n"); printf("i3-config-wizard [-s <socket>] [-m win|alt] [-v] [-h]\n");
return 0; return 0;
} }
} }
@ -826,6 +837,11 @@ int main(int argc, char *argv[]) {
modmap_cookie = xcb_get_modifier_mapping(conn); modmap_cookie = xcb_get_modifier_mapping(conn);
symbols = xcb_key_symbols_alloc(conn); symbols = xcb_key_symbols_alloc(conn);
if (headless_run) {
finish();
return 0;
}
/* Place requests for the atoms we need as soon as possible */ /* Place requests for the atoms we need as soon as possible */
#define xmacro(atom) \ #define xmacro(atom) \
xcb_intern_atom_cookie_t atom##_cookie = xcb_intern_atom(conn, 0, strlen(#atom), #atom); xcb_intern_atom_cookie_t atom##_cookie = xcb_intern_atom(conn, 0, strlen(#atom), #atom);

View File

@ -9,7 +9,21 @@ i3-config-wizard - creates a keysym based config based on your layout
== SYNOPSIS == SYNOPSIS
i3-config-wizard i3-config-wizard [*-s* 'socket'] [*-m* 'modifier'] [*-v*] [*-h*]
== OPTIONS
*-s, --socket* 'socket'::
Overwrites the path to the i3 IPC socket.
*-m, --modifier* 'modifier'::
Generates the configuration file headlessly. Accepts win or alt.
*-v, --version*::
Display version number and exit.
*-h, --help*::
Display a short help message and exit.
== FILES == FILES