using execl now, argv changed, using cmd and const char defs directly in the KEYS struct
This commit is contained in:
		
							
								
								
									
										17
									
								
								config.arg.h
									
									
									
									
									
								
							
							
						
						
									
										17
									
								
								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 \
 | 
			
		||||
 
 | 
			
		||||
@@ -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 \
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								dwm.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								dwm.h
									
									
									
									
									
								
							@@ -17,7 +17,7 @@ typedef struct DC DC;
 | 
			
		||||
typedef struct Fnt Fnt;
 | 
			
		||||
 | 
			
		||||
union Arg {
 | 
			
		||||
	const char **argv;
 | 
			
		||||
	const char *cmd;
 | 
			
		||||
	int i;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										11
									
								
								util.c
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								util.c
									
									
									
									
									
								
							@@ -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);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user