# HG changeset patch # User Anselm R Garbe # Date 1213173240 -3600 # Node ID 218a33808046ad0a9b27b5ec0a7c698439a373de # Parent 2d3d08d2dd192b5c87073016ae951f0914e8c357 integrated Peter Hartlich's patch, removed const char *c from union, simplified togglelayout diff -r 2d3d08d2dd19 -r 218a33808046 config.def.h --- a/config.def.h Wed Jun 11 09:12:06 2008 +0100 +++ b/config.def.h Wed Jun 11 09:34:00 2008 +0100 @@ -10,8 +10,8 @@ #define SELFGCOLOR "#ffffff" static uint borderpx = 1; /* border pixel of windows */ static uint snap = 32; /* snap pixel */ -static Bool showbar = True; /* False means no bar */ -static Bool topbar = True; /* False means bottom bar */ +static Bool showbar = True; /* False means no bar */ +static Bool topbar = True; /* False means bottom bar */ /* tagging */ static const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" }; @@ -42,8 +42,8 @@ static Key keys[] = { /* modifier key function argument */ - { MODKEY, XK_p, spawn, {.c = "exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'" }}, - { MODKEY|ShiftMask, XK_Return, spawn, {.c = "exec uxterm" }}, + { MODKEY, XK_p, spawn, {.v = (char *[]){"dmenu_run", "-fn", FONT, "-nb", NORMBGCOLOR, "-nf", NORMFGCOLOR, "-sb", SELBGCOLOR, "-sf", SELFGCOLOR, NULL}} }, + { MODKEY|ShiftMask, XK_Return, spawn, {.v = (char *[]){"uxterm", NULL}} }, { MODKEY, XK_b, togglebar, {0}}, { MODKEY, XK_j, focusstack, {.i = +1 }}, { MODKEY, XK_k, focusstack, {.i = -1 }}, diff -r 2d3d08d2dd19 -r 218a33808046 dwm.c --- a/dwm.c Wed Jun 11 09:12:06 2008 +0100 +++ b/dwm.c Wed Jun 11 09:34:00 2008 +0100 @@ -93,11 +93,10 @@ } DC; /* draw context */ typedef union { - const char *c; int i; uint ui; float f; - void *aux; + void *v; } Arg; typedef struct { @@ -1388,10 +1387,6 @@ void spawn(const Arg *arg) { - static char *shell = NULL; - - if(!shell && !(shell = getenv("SHELL"))) - shell = "/bin/sh"; /* The double-fork construct avoids zombie processes and keeps the code * clean from stupid signal handlers. */ if(fork() == 0) { @@ -1399,8 +1394,8 @@ if(dpy) close(ConnectionNumber(dpy)); setsid(); - execl(shell, shell, "-c", arg->c, (char *)NULL); - fprintf(stderr, "dwm: execl '%s -c %s'", shell, arg->c); + execvp(((char **)arg->v)[0], (char **)arg->v); + fprintf(stderr, "dwm: execvp %s", ((char **)arg->v)[0]); perror(" failed"); } exit(0); @@ -1481,20 +1476,8 @@ void togglelayout(const Arg *arg) { - uint i; - - if(!arg->c) { - if(++lt == &layouts[LENGTH(layouts)]) - lt = &layouts[0]; - } - else { - for(i = 0; i < LENGTH(layouts); i++) - if(!strcmp(arg->c, layouts[i].symbol)) - break; - if(i == LENGTH(layouts)) - return; - lt = &layouts[i]; - } + if(++lt == &layouts[LENGTH(layouts)]) + lt = &layouts[0]; if(sel) arrange(); else