about summary refs log tree commit diff stats
diff options
context:
space:
mode:
-rw-r--r--config.arg.h2
-rw-r--r--config.default.h6
-rw-r--r--dwm.h2
-rw-r--r--event.c3
-rw-r--r--screen.c37
5 files changed, 29 insertions, 21 deletions
diff --git a/config.arg.h b/config.arg.h
index 0e044bf..423e935 100644
--- a/config.arg.h
+++ b/config.arg.h
@@ -63,7 +63,7 @@ static Key key[] = { \
 	{ MODKEY|ControlMask|ShiftMask,	XK_8,		toggletag,	{ .i = 7 } }, \
 	{ MODKEY|ControlMask|ShiftMask,	XK_9,		toggletag,	{ .i = 8 } }, \
 	{ MODKEY|ShiftMask,		XK_c,		killclient,	{ 0 } }, \
-	{ MODKEY,			XK_space,	togglelayout,	{ 0 } }, \
+	{ MODKEY,			XK_space,	setlayout,	{ .i = -1 } }, \
 	{ MODKEY|ShiftMask,		XK_space,	toggleversatile,{ 0 } }, \
 	{ MODKEY,			XK_0,		view,		{ .i = -1 } }, \
 	{ MODKEY,			XK_1,		view,		{ .i = 0 } }, \
diff --git a/config.default.h b/config.default.h
index 8bf674f..b29d1a4 100644
--- a/config.default.h
+++ b/config.default.h
@@ -58,8 +58,8 @@ static Key key[] = { \
 	{ MODKEY|ControlMask|ShiftMask,	XK_8,		toggletag,	{ .i = 7 } }, \
 	{ MODKEY|ControlMask|ShiftMask,	XK_9,		toggletag,	{ .i = 8 } }, \
 	{ MODKEY|ShiftMask,		XK_c,		killclient,	{ 0 } }, \
-	{ MODKEY,			XK_space,	togglelayout,	{ 0 } }, \
-	{ MODKEY|ShiftMask,		XK_space,	toggleversatile	{ 0 } }, \
+	{ MODKEY,			XK_space,	setlayout,	{ .i = -1 } }, \
+	{ MODKEY|ShiftMask,		XK_space,	toggleversatile,{ 0 } }, \
 	{ MODKEY,			XK_0,		view,		{ .i = -1 } }, \
 	{ MODKEY,			XK_1,		view,		{ .i = 0 } }, \
 	{ MODKEY,			XK_2,		view,		{ .i = 1 } }, \
@@ -86,7 +86,7 @@ static Key key[] = { \
  * xprop | awk -F '"' '/^WM_CLASS/ { printf("%s:%s:",$4,$2) }; /^WM_NAME/ { printf("%s\n",$2) }' */
 #define RULES \
 static Rule rule[] = { \
-	/* class:instance:title regex	tags regex	versatile */ \
+	/* class:instance:title regex	tags regex	isversatile */ \
 	{ "Gimp",			NULL,		True }, \
 	{ "MPlayer",			NULL,		True }, \
 	{ "Acroread",			NULL,		True }, \
diff --git a/dwm.h b/dwm.h
index c8546d8..d4cc1fa 100644
--- a/dwm.h
+++ b/dwm.h
@@ -134,10 +134,10 @@ extern void initlayouts(void);			/* initialize layout array */
 extern Bool isvisible(Client *c);		/* returns True if client is visible */
 extern void resizemaster(Arg *arg);		/* resizes the master percent with arg's index value */
 extern void restack(void);			/* restores z layers of all clients */
+extern void setlayout(Arg *arg);		/* sets layout, -1 toggles */
 extern void settags(Client *c, Client *trans);	/* sets tags of c */
 extern void tag(Arg *arg);			/* tags c with arg's index */
 extern void toggleversatile(Arg *arg);		/* toggles focusesd client between versatile/and non-versatile state */
-extern void togglelayout(Arg *arg);		/* toggles layout */
 extern void toggletag(Arg *arg);		/* toggles c tags with arg's index */
 extern void toggleview(Arg *arg);		/* toggles the tag with arg's index (in)visible */
 extern void versatile(void);			/* arranges all windows versatile */
diff --git a/event.c b/event.c
index b6a77fd..3086284 100644
--- a/event.c
+++ b/event.c
@@ -140,7 +140,8 @@ buttonpress(XEvent *e) {
 		if(ev->x < x + blw)
 			switch(ev->button) {
 			case Button1:
-				togglelayout(NULL);
+				a.i = -1;
+				setlayout(&a);
 				break;
 			case Button4:
 				a.i = 1;
diff --git a/screen.c b/screen.c
index 5907ba7..8abe3d7 100644
--- a/screen.c
+++ b/screen.c
@@ -191,6 +191,28 @@ restack(void) {
 }
 
 void
+setlayout(Arg *arg) {
+	unsigned int i;
+
+	if(arg->i == -1) {
+		for(i = 0; i < nlayouts && lt != &layout[i]; i++);
+		if(i == nlayouts - 1)
+			lt = &layout[0];
+		else
+			lt = &layout[++i];
+	}
+	else {
+		if(arg->i < 0 || arg->i >= nlayouts)
+			return;
+		lt = &layout[arg->i];
+	}
+	if(sel)
+		lt->arrange();
+	else
+		drawstatus();
+}
+
+void
 settags(Client *c, Client *trans) {
 	char prop[512];
 	unsigned int i, j;
@@ -253,21 +275,6 @@ toggletag(Arg *arg) {
 }
 
 void
-togglelayout(Arg *arg) {
-	unsigned int i;
-
-	for(i = 0; i < nlayouts && lt != &layout[i]; i++);
-	if(i == nlayouts - 1)
-		lt = &layout[0];
-	else
-		lt = &layout[++i];
-	if(sel)
-		lt->arrange();
-	else
-		drawstatus();
-}
-
-void
 toggleversatile(Arg *arg) {
 	if(!sel || lt->arrange == versatile)
 		return;
1256 - scenarios now support keyboard' href='/akkartik/mu/commit/cpp/074keyboard.mu?h=main&id=e3092e7b5ca7fc8c87c891d4d6a1a53ea413072f'>e3092e7b ^
d803b687 ^
77d5b5d6 ^
4a48bedc ^
e3092e7b ^
104854ca ^
7a84094a ^
a0331a9b ^
e3092e7b ^
7a84094a ^
80df524b ^
502d2ea5 ^
760f683f ^
dd660682 ^
e3092e7b ^
0d2686c7 ^


dd660682 ^
e3092e7b ^
6aa42628 ^
80df524b ^
dd660682 ^
e3092e7b ^

c6c19a27 ^


d803b687 ^
77d5b5d6 ^
4a48bedc ^
d803b687 ^


80df524b ^
dd660682 ^

e3092e7b ^
f8c0ef3e ^
760f683f ^
77d5b5d6 ^
4a48bedc ^
f8c0ef3e ^
d803b687 ^
502d2ea5 ^


136412d2 ^
502d2ea5 ^
f8c0ef3e ^

5b1219ca ^
f8c0ef3e ^
6a0f71b9 ^
760f683f ^
77d5b5d6 ^
4a48bedc ^
6a0f71b9 ^
d803b687 ^
ccfee303 ^


6a0f71b9 ^

5e9eff8c ^
760f683f ^
77d5b5d6 ^
4a48bedc ^
dd660682 ^
104854ca ^
5e9eff8c ^
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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