Mercurial > aewl
changeset 189:523df4a3c1c4
using execl now, argv changed, using cmd and const char defs directly in the KEYS struct
author | arg@10ksloc.org |
---|---|
date | Fri, 04 Aug 2006 12:00:55 +0200 (2006-08-04) |
parents | 6d580a6e5c36 |
children | 713dcc7d2c42 |
files | config.arg.h config.default.h dwm.h util.c |
diffstat | 4 files changed, 18 insertions(+), 18 deletions(-) [+] |
line wrap: on
line diff
--- a/config.arg.h Fri Aug 04 10:36:22 2006 +0200 +++ b/config.arg.h Fri Aug 04 12:00:55 2006 +0200 @@ -17,13 +17,6 @@ #define MASTERW 60 /* percent */ #define KEYS \ - const char *browse[] = { "firefox", NULL }; \ - const char *gimp[] = { "gimp", NULL }; \ - const char *term[] = { \ - "urxvt", "-tr", "+sb", "-bg", "black", "-fg", "white", "-cr", "white", \ - "-fn", "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*", NULL \ - }; \ - const char *xlock[] = { "xlock", NULL }; \ static Key key[] = { \ /* modifier key function arguments */ \ { MODKEY, XK_0, view, { .i = 0 } }, \ @@ -50,10 +43,12 @@ { MODKEY|ShiftMask, XK_4, replacetag, { .i = 5 } }, \ { MODKEY|ShiftMask, XK_c, killclient, { 0 } }, \ { MODKEY|ShiftMask, XK_q, quit, { 0 } }, \ - { MODKEY|ShiftMask, XK_Return, spawn, { .argv = term } }, \ - { MODKEY|ShiftMask, XK_g, spawn, { .argv = gimp } }, \ - { MODKEY|ShiftMask, XK_l, spawn, { .argv = xlock } }, \ - { MODKEY|ShiftMask, XK_w, spawn, { .argv = browse } }, \ + { MODKEY|ShiftMask, XK_x, spawn, \ + { .cmd = "exec `ls -lL /usr/bin /usr/local/bin 2>/dev/null |" \ + " awk 'NF>2 && $1 ~ /^[^d].*x/ {print $NF}' | sort | uniq | dmenu`" } }, \ + { MODKEY|ShiftMask, XK_Return, spawn, \ + { .cmd = "exec urxvt -tr +sb -bg black -fg white -cr white " \ + "-fn '-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*'" } }, \ }; #define RULES \
--- a/config.default.h Fri Aug 04 10:36:22 2006 +0200 +++ b/config.default.h Fri Aug 04 12:00:55 2006 +0200 @@ -17,7 +17,6 @@ #define MASTERW 60 /* percent */ #define KEYS \ - const char *term[] = { "xterm", NULL }; \ static Key key[] = { \ /* modifier key function arguments */ \ { MODKEY, XK_0, view, { .i = 0 } }, \ @@ -44,7 +43,10 @@ { MODKEY|ShiftMask, XK_4, replacetag, { .i = 4 } }, \ { MODKEY|ShiftMask, XK_c, killclient, { 0 } }, \ { MODKEY|ShiftMask, XK_q, quit, { 0 } }, \ - { MODKEY|ShiftMask, XK_Return, spawn, { .argv = term } }, \ + /* { MODKEY|ShiftMask, XK_x, spawn, */ \ + /* { .cmd = "exec `ls -lL /usr/bin /usr/local/bin 2>/dev/null |" */ \ + /* " awk 'NF>2 && $1 ~ /^[^d].*x/ {print $NF}' | sort | uniq | dmenu`" } }, */ \ + { MODKEY|ShiftMask, XK_Return, spawn, { .cmd = "exec xterm" } }, \ }; #define RULES \
--- a/dwm.h Fri Aug 04 10:36:22 2006 +0200 +++ b/dwm.h Fri Aug 04 12:00:55 2006 +0200 @@ -17,7 +17,7 @@ typedef struct Fnt Fnt; union Arg { - const char **argv; + const char *cmd; int i; };
--- a/util.c Fri Aug 04 10:36:22 2006 +0200 +++ b/util.c Fri Aug 04 12:00:55 2006 +0200 @@ -43,17 +43,20 @@ void spawn(Arg *arg) { - char **argv = (char **)arg->argv; + static char *shell = NULL; - if(!argv || !argv[0]) + if(!shell && !(shell = getenv("SHELL"))) + shell = "/bin/sh"; + + if(!arg->cmd) return; if(fork() == 0) { if(fork() == 0) { if(dpy) close(ConnectionNumber(dpy)); setsid(); - execvp(argv[0], argv); - fprintf(stderr, "dwm: execvp %s", argv[0]); + execl(shell, shell, "-c", arg->cmd, NULL); + fprintf(stderr, "dwm: execl '%s'", arg->cmd); perror(" failed"); } exit(0);