diff options
| -rw-r--r-- | config.arg.h | 17 | ||||
| -rw-r--r-- | config.default.h | 6 | ||||
| -rw-r--r-- | dwm.h | 2 | ||||
| -rw-r--r-- | util.c | 11 | 
4 files changed, 18 insertions, 18 deletions
| diff --git a/config.arg.h b/config.arg.h index 0c39d3b..05b350f 100644 --- a/config.arg.h +++ b/config.arg.h @@ -17,13 +17,6 @@ const char *tags[] = { "fnord", "dev", "net", "work", "misc", NULL };  #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 @@ static Key key[] = { \  	{ 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 \ diff --git a/config.default.h b/config.default.h index 14f33ec..cefb7f7 100644 --- a/config.default.h +++ b/config.default.h @@ -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	arguments */ \  	{ MODKEY,		XK_0,		view,		{ .i = 0 } }, \ @@ -44,7 +43,10 @@ static Key key[] = { \  	{ 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 \ @@ -17,7 +17,7 @@ typedef struct DC DC;  typedef struct Fnt Fnt;  union Arg { -	const char **argv; +	const char *cmd;  	int i;  }; @@ -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); | 
