about summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorAnselm R Garbe <garbeam@gmail.com>2008-06-11 09:34:00 +0100
committerAnselm R Garbe <garbeam@gmail.com>2008-06-11 09:34:00 +0100
commitc56533615f84df801f10dedc4d6ff267e0e8df0a (patch)
tree968a54a5ab4bc769fea427dc2036f3f22be38211
parenta8e0772c4d977fafb35c5ab9e29e322a9505b71a (diff)
downloaddwm-c56533615f84df801f10dedc4d6ff267e0e8df0a.tar.gz
integrated Peter Hartlich's patch, removed const char *c from union, simplified togglelayout
-rw-r--r--config.def.h8
-rw-r--r--dwm.c27
2 files changed, 9 insertions, 26 deletions
diff --git a/config.def.h b/config.def.h
index af8f70f..6a6f7be 100644
--- a/config.def.h
+++ b/config.def.h
@@ -10,8 +10,8 @@
 #define SELFGCOLOR      "#ffffff"
 static uint borderpx  = 1;        /* border pixel of windows */
 static uint snap      = 32;       /* snap pixel */
-static Bool showbar           = True;     /* False means no bar */
-static Bool topbar            = True;     /* False means bottom bar */
+static Bool showbar   = True;     /* False means no bar */
+static Bool topbar    = True;     /* False means bottom bar */
 
 /* tagging */
 static const char tags[][MAXTAGLEN] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
@@ -42,8 +42,8 @@ static Layout layouts[] = {
 
 static Key keys[] = {
 	/* modifier                     key        function        argument */
-	{ MODKEY,                       XK_p,      spawn,          {.c = "exec dmenu_run -fn '"FONT"' -nb '"NORMBGCOLOR"' -nf '"NORMFGCOLOR"' -sb '"SELBGCOLOR"' -sf '"SELFGCOLOR"'" }},
-	{ MODKEY|ShiftMask,             XK_Return, spawn,          {.c = "exec uxterm" }},
+	{ MODKEY,                       XK_p,      spawn,          {.v = (char *[]){"dmenu_run", "-fn", FONT, "-nb", NORMBGCOLOR, "-nf", NORMFGCOLOR, "-sb", SELBGCOLOR, "-sf", SELFGCOLOR, NULL}} },
+	{ MODKEY|ShiftMask,             XK_Return, spawn,          {.v = (char *[]){"uxterm", NULL}} },
 	{ MODKEY,                       XK_b,      togglebar,      {0}},
 	{ MODKEY,                       XK_j,      focusstack,     {.i = +1  }},
 	{ MODKEY,                       XK_k,      focusstack,     {.i = -1  }},
diff --git a/dwm.c b/dwm.c
index 5b8747c..1c52d80 100644
--- a/dwm.c
+++ b/dwm.c
@@ -93,11 +93,10 @@ typedef struct {
 } DC; /* draw context */
 
 typedef union {
-	const char *c;
 	int i;
 	uint ui;
 	float f;
-	void *aux;
+	void *v;
 } Arg;
 
 typedef struct {
@@ -1388,10 +1387,6 @@ setup(void) {
 
 void
 spawn(const Arg *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) {
@@ -1399,8 +1394,8 @@ spawn(const Arg *arg) {
 			if(dpy)
 				close(ConnectionNumber(dpy));
 			setsid();
-			execl(shell, shell, "-c", arg->c, (char *)NULL);
-			fprintf(stderr, "dwm: execl '%s -c %s'", shell, arg->c);
+			execvp(((char **)arg->v)[0], (char **)arg->v);
+			fprintf(stderr, "dwm: execvp %s", ((char **)arg->v)[0]);
 			perror(" failed");
 		}
 		exit(0);
@@ -1481,20 +1476,8 @@ togglefloating(const Arg *arg) {
 
 void
 togglelayout(const Arg *arg) {
-	uint i;
-
-	if(!arg->c) {
-		if(++lt == &layouts[LENGTH(layouts)])
-			lt = &layouts[0];
-	}
-	else {
-		for(i = 0; i < LENGTH(layouts); i++)
-			if(!strcmp(arg->c, layouts[i].symbol))
-				break;
-		if(i == LENGTH(layouts))
-			return;
-		lt = &layouts[i];
-	}
+	if(++lt == &layouts[LENGTH(layouts)])
+		lt = &layouts[0];
 	if(sel)
 		arrange();
 	else
' href='#n23'>23 24 25 26 27 28 29 30 31 32 33 34 35 36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158