tusing execl now, argv changed, using cmd and const char defs directly in the K… | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit 9955ddc978c2e6acfe246f29f1d317b55d860757 | |
parent 0dfe729f90069de070495c82ddc72cc476a4f3ab | |
Author: [email protected] <unknown> | |
Date: Fri, 4 Aug 2006 12:00:55 +0200 | |
using execl now, argv changed, using cmd and const char defs directly in the KE… | |
Diffstat: | |
M config.arg.h | 17 ++++++----------- | |
M config.default.h | 6 ++++-- | |
M dwm.h | 2 +- | |
M util.c | 11 +++++++---- | |
4 files changed, 18 insertions(+), 18 deletions(-) | |
--- | |
diff --git a/config.arg.h b/config.arg.h | |
t@@ -17,13 +17,6 @@ const char *tags[] = { "fnord", "dev", "net", "work", "misc… | |
#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", … | |
- "-fn", "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*", NUL… | |
- }; \ | |
- const char *xlock[] = { "xlock", NULL }; \ | |
static Key key[] = { \ | |
/* modifier key function argument… | |
{ MODKEY, XK_0, view, { .… | |
t@@ -50,10 +43,12 @@ static Key key[] = { \ | |
{ MODKEY|ShiftMask, XK_4, replacetag, { .… | |
{ MODKEY|ShiftMask, XK_c, killclient, { 0… | |
{ MODKEY|ShiftMask, XK_q, quit, {… | |
- { MODKEY|ShiftMask, XK_Return, spawn, { .… | |
- { MODKEY|ShiftMask, XK_g, spawn, … | |
- { MODKEY|ShiftMask, XK_l, spawn, … | |
- { MODKEY|ShiftMask, XK_w, spawn, … | |
+ { 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 | dm… | |
+ { MODKEY|ShiftMask, XK_Return, spawn, \ | |
+ { .cmd = "exec urxvt -tr +sb -bg black -fg white -cr white " \ | |
+ "-fn '-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*… | |
}; | |
#define RULES \ | |
diff --git a/config.default.h b/config.default.h | |
t@@ -17,7 +17,6 @@ const char *tags[] = { "0", "1", "2", "3", "4", NULL }; | |
#define MASTERW 60 /* percent */ | |
#define KEYS \ | |
- const char *term[] = { "xterm", NULL }; \ | |
static Key key[] = { \ | |
/* modifier key function argument… | |
{ MODKEY, XK_0, view, { .… | |
t@@ -44,7 +43,10 @@ static Key key[] = { \ | |
{ MODKEY|ShiftMask, XK_4, replacetag, { .… | |
{ MODKEY|ShiftMask, XK_c, killclient, { 0… | |
{ MODKEY|ShiftMask, XK_q, quit, {… | |
- { MODKEY|ShiftMask, XK_Return, spawn, { .… | |
+ /* { 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 | … | |
+ { MODKEY|ShiftMask, XK_Return, spawn, { .… | |
}; | |
#define RULES \ | |
diff --git a/dwm.h b/dwm.h | |
t@@ -17,7 +17,7 @@ typedef struct DC DC; | |
typedef struct Fnt Fnt; | |
union Arg { | |
- const char **argv; | |
+ const char *cmd; | |
int i; | |
}; | |
diff --git a/util.c b/util.c | |
t@@ -43,17 +43,20 @@ eprint(const char *errstr, ...) | |
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); |