Navigation Menu

Skip to content
This repository has been archived by the owner on Apr 18, 2023. It is now read-only.

Commit

Permalink
Add --modifier flag to i3-config-wizard (#3210)
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
notjuliee authored and orestisfl committed Mar 30, 2018
1 parent 63133c8 commit 4e0bf58
Show file tree
Hide file tree
Showing 2 changed files with 33 additions and 3 deletions.
20 changes: 18 additions & 2 deletions i3-config-wizard/main.c
Expand Up @@ -745,18 +745,20 @@ int main(int argc, char *argv[]) {
char *pattern = "pango:monospace 8";
char *patternbold = "pango:monospace bold 8";
int o, option_index = 0;
bool headless_run = false;

static struct option long_options[] = {
{"socket", required_argument, 0, 's'},
{"version", no_argument, 0, 'v'},
{"modifier", required_argument, 0, 'm'},
{"limit", required_argument, 0, 'l'},
{"prompt", required_argument, 0, 'P'},
{"prefix", required_argument, 0, 'p'},
{"font", required_argument, 0, 'f'},
{"help", no_argument, 0, 'h'},
{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) {
switch (o) {
Expand All @@ -767,9 +769,18 @@ int main(int argc, char *argv[]) {
case 'v':
printf("i3-config-wizard " I3_VERSION "\n");
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':
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;
}
}
Expand Down Expand Up @@ -826,6 +837,11 @@ int main(int argc, char *argv[]) {
modmap_cookie = xcb_get_modifier_mapping(conn);
symbols = xcb_key_symbols_alloc(conn);

if (headless_run) {
finish();
return 0;
}

/* Place requests for the atoms we need as soon as possible */
#define xmacro(atom) \
xcb_intern_atom_cookie_t atom##_cookie = xcb_intern_atom(conn, 0, strlen(#atom), #atom);
Expand Down
16 changes: 15 additions & 1 deletion man/i3-config-wizard.man
Expand Up @@ -9,7 +9,21 @@ i3-config-wizard - creates a keysym based config based on your layout

== 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

Expand Down

0 comments on commit 4e0bf58

Please sign in to comment.