diff -r f0c900871c87 config.def.h --- a/config.def.h Mon Jun 09 11:24:10 2008 +0200 +++ b/config.def.h Mon Jun 09 14:45:27 2008 +0200 @@ -42,8 +42,8 @@ Key keys[] = { /* modifier key function argument */ - { MODKEY, XK_p, spawn, (char *)"exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'" }, - { MODKEY|ShiftMask, XK_Return, spawn, (char *)"exec uxterm" }, + { MODKEY, XK_p, spawn, (char *[]){"dmenu_run", "-fn", FONT, "-nb", NORMBGCOLOR, "-nf", NORMFGCOLOR, "-sb", SELBGCOLOR, "-sf", SELFGCOLOR, NULL} }, + { MODKEY|ShiftMask, XK_Return, spawn, (char *[]){"uxterm", NULL} }, { MODKEY, XK_b, togglebar, NULL }, { MODKEY, XK_j, focusnext, NULL }, { MODKEY, XK_k, focusprev, NULL }, diff -r f0c900871c87 dwm.c --- a/dwm.c Mon Jun 09 11:24:10 2008 +0200 +++ b/dwm.c Mon Jun 09 14:45:27 2008 +0200 @@ -1387,10 +1387,6 @@ void spawn(const void *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) { @@ -1398,8 +1394,8 @@ if(dpy) close(ConnectionNumber(dpy)); setsid(); - execl(shell, shell, "-c", (char *)arg, (char *)NULL); - fprintf(stderr, "dwm: execl '%s -c %s'", shell, (char *)arg); + execvp(((char **)arg)[0], (char **)arg); + fprintf(stderr, "dwm: execvp %s", ((char **)arg)[0]); perror(" failed"); } exit(0);