author | Anselm R. Garbe <garbeam@wmii.de> |
Fri, 14 Jul 2006 12:11:24 +0200 | |
changeset 62 | 0a4b066ce254 |
parent 60 | 24f9c674d03f |
child 63 | f14858218641 |
permissions | -rw-r--r-- |
5 | 1 |
/* |
2 |
* (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> |
|
3 |
* See LICENSE file for license details. |
|
4 |
*/ |
|
5 |
||
10
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
6 |
#include <stdlib.h> |
51 | 7 |
#include <stdio.h> |
5 | 8 |
#include <string.h> |
9 |
#include <X11/Xatom.h> |
|
32 | 10 |
#include <X11/Xutil.h> |
5 | 11 |
|
43 | 12 |
#include "dwm.h" |
5 | 13 |
|
53 | 14 |
void (*arrange)(Arg *) = tiling; |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
15 |
|
51 | 16 |
static Rule rule[] = { |
53 | 17 |
/* class instance tags floating */ |
18 |
{ "Firefox-bin", "Gecko", { [Twww] = "www" }, False }, |
|
51 | 19 |
}; |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
20 |
|
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
21 |
static Client * |
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
22 |
next(Client *c) |
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
23 |
{ |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
24 |
for(; c && !c->tags[tsel]; c = c->next); |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
25 |
return c; |
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
26 |
} |
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
27 |
|
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
28 |
void |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
29 |
zoom(Arg *arg) |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
30 |
{ |
51 | 31 |
Client **l, *old; |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
32 |
|
51 | 33 |
if(!(old = sel)) |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
34 |
return; |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
35 |
|
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
36 |
for(l = &clients; *l && *l != sel; l = &(*l)->next); |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
37 |
*l = sel->next; |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
38 |
|
51 | 39 |
old->next = clients; /* pop */ |
40 |
clients = old; |
|
41 |
sel = old; |
|
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
42 |
arrange(NULL); |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
43 |
focus(sel); |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
44 |
} |
31 | 45 |
|
27
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
46 |
void |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
47 |
max(Arg *arg) |
28 | 48 |
{ |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
49 |
if(!sel) |
28 | 50 |
return; |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
51 |
sel->x = sx; |
57
f005d46462e8
implemented bar for dwm (I miss status text), I plan that status text is read from stdin in dwm
Anselm R. Garbe <garbeam@wmii.de>
parents:
55
diff
changeset
|
52 |
sel->y = sy + bh; |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
53 |
sel->w = sw - 2 * sel->border; |
57
f005d46462e8
implemented bar for dwm (I miss status text), I plan that status text is read from stdin in dwm
Anselm R. Garbe <garbeam@wmii.de>
parents:
55
diff
changeset
|
54 |
sel->h = sh - 2 * sel->border - bh; |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
55 |
craise(sel); |
52
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
56 |
resize(sel, False); |
29 | 57 |
discard_events(EnterWindowMask); |
28 | 58 |
} |
59 |
||
46
58307ad56ec1
added xlock command (I need it regularly)
Anselm R. Garbe <garbeam@wmii.de>
parents:
45
diff
changeset
|
60 |
void |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
61 |
view(Arg *arg) |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
62 |
{ |
54
a64602deac83
except improvements to the mouse handling this is already nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
53
diff
changeset
|
63 |
Client *c; |
a64602deac83
except improvements to the mouse handling this is already nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
53
diff
changeset
|
64 |
|
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
65 |
tsel = arg->i; |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
66 |
arrange(NULL); |
54
a64602deac83
except improvements to the mouse handling this is already nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
53
diff
changeset
|
67 |
|
62
0a4b066ce254
focus on view change as well
Anselm R. Garbe <garbeam@wmii.de>
parents:
60
diff
changeset
|
68 |
if((c = next(clients))) |
0a4b066ce254
focus on view change as well
Anselm R. Garbe <garbeam@wmii.de>
parents:
60
diff
changeset
|
69 |
focus(c); |
0a4b066ce254
focus on view change as well
Anselm R. Garbe <garbeam@wmii.de>
parents:
60
diff
changeset
|
70 |
|
54
a64602deac83
except improvements to the mouse handling this is already nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
53
diff
changeset
|
71 |
for(c = clients; c; c = next(c->next)) |
a64602deac83
except improvements to the mouse handling this is already nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
53
diff
changeset
|
72 |
draw_client(c); |
57
f005d46462e8
implemented bar for dwm (I miss status text), I plan that status text is read from stdin in dwm
Anselm R. Garbe <garbeam@wmii.de>
parents:
55
diff
changeset
|
73 |
draw_bar(); |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
74 |
} |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
75 |
|
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
76 |
void |
53 | 77 |
tappend(Arg *arg) |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
78 |
{ |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
79 |
if(!sel) |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
80 |
return; |
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
81 |
|
53 | 82 |
sel->tags[arg->i] = tags[arg->i]; |
83 |
arrange(NULL); |
|
84 |
} |
|
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
85 |
|
53 | 86 |
void |
87 |
ttrunc(Arg *arg) |
|
88 |
{ |
|
89 |
int i; |
|
90 |
if(!sel) |
|
91 |
return; |
|
92 |
||
93 |
for(i = 0; i < TLast; i++) |
|
94 |
sel->tags[i] = NULL; |
|
95 |
tappend(arg); |
|
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
96 |
} |
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
97 |
|
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
98 |
static void |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
99 |
ban_client(Client *c) |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
100 |
{ |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
101 |
XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
102 |
XMoveWindow(dpy, c->title, c->tx + 2 * sw, c->ty); |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
103 |
} |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
104 |
|
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
105 |
void |
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
106 |
floating(Arg *arg) |
31 | 107 |
{ |
108 |
Client *c; |
|
109 |
||
46
58307ad56ec1
added xlock command (I need it regularly)
Anselm R. Garbe <garbeam@wmii.de>
parents:
45
diff
changeset
|
110 |
arrange = floating; |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
111 |
for(c = clients; c; c = c->next) { |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
112 |
if(c->tags[tsel]) |
52
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
113 |
resize(c, True); |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
114 |
else |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
115 |
ban_client(c); |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
116 |
} |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
117 |
if(sel && !sel->tags[tsel]) { |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
118 |
if((sel = next(clients))) { |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
119 |
craise(sel); |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
120 |
focus(sel); |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
121 |
} |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
122 |
} |
31 | 123 |
discard_events(EnterWindowMask); |
124 |
} |
|
125 |
||
46
58307ad56ec1
added xlock command (I need it regularly)
Anselm R. Garbe <garbeam@wmii.de>
parents:
45
diff
changeset
|
126 |
void |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
127 |
tiling(Arg *arg) |
27
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
128 |
{ |
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
129 |
Client *c; |
51 | 130 |
int n, i, w, h; |
27
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
131 |
|
51 | 132 |
w = sw - mw; |
46
58307ad56ec1
added xlock command (I need it regularly)
Anselm R. Garbe <garbeam@wmii.de>
parents:
45
diff
changeset
|
133 |
arrange = tiling; |
51 | 134 |
for(n = 0, c = clients; c; c = c->next) |
53 | 135 |
if(c->tags[tsel] && !c->floating) |
51 | 136 |
n++; |
137 |
||
57
f005d46462e8
implemented bar for dwm (I miss status text), I plan that status text is read from stdin in dwm
Anselm R. Garbe <garbeam@wmii.de>
parents:
55
diff
changeset
|
138 |
if(n > 1) |
f005d46462e8
implemented bar for dwm (I miss status text), I plan that status text is read from stdin in dwm
Anselm R. Garbe <garbeam@wmii.de>
parents:
55
diff
changeset
|
139 |
h = (sh - bh) / (n - 1); |
f005d46462e8
implemented bar for dwm (I miss status text), I plan that status text is read from stdin in dwm
Anselm R. Garbe <garbeam@wmii.de>
parents:
55
diff
changeset
|
140 |
else |
f005d46462e8
implemented bar for dwm (I miss status text), I plan that status text is read from stdin in dwm
Anselm R. Garbe <garbeam@wmii.de>
parents:
55
diff
changeset
|
141 |
h = sh - bh; |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
142 |
|
51 | 143 |
for(i = 0, c = clients; c; c = c->next) { |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
144 |
if(c->tags[tsel]) { |
53 | 145 |
if(c->floating) { |
146 |
craise(c); |
|
147 |
resize(c, True); |
|
148 |
continue; |
|
149 |
} |
|
51 | 150 |
if(n == 1) { |
151 |
c->x = sx; |
|
57
f005d46462e8
implemented bar for dwm (I miss status text), I plan that status text is read from stdin in dwm
Anselm R. Garbe <garbeam@wmii.de>
parents:
55
diff
changeset
|
152 |
c->y = sy + bh; |
52
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
153 |
c->w = sw - 2 * c->border; |
57
f005d46462e8
implemented bar for dwm (I miss status text), I plan that status text is read from stdin in dwm
Anselm R. Garbe <garbeam@wmii.de>
parents:
55
diff
changeset
|
154 |
c->h = sh - 2 * c->border - bh; |
51 | 155 |
} |
52
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
156 |
else if(i == 0) { |
51 | 157 |
c->x = sx; |
57
f005d46462e8
implemented bar for dwm (I miss status text), I plan that status text is read from stdin in dwm
Anselm R. Garbe <garbeam@wmii.de>
parents:
55
diff
changeset
|
158 |
c->y = sy + bh; |
52
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
159 |
c->w = mw - 2 * c->border; |
57
f005d46462e8
implemented bar for dwm (I miss status text), I plan that status text is read from stdin in dwm
Anselm R. Garbe <garbeam@wmii.de>
parents:
55
diff
changeset
|
160 |
c->h = sh - 2 * c->border - bh; |
51 | 161 |
} |
162 |
else { |
|
163 |
c->x = sx + mw; |
|
57
f005d46462e8
implemented bar for dwm (I miss status text), I plan that status text is read from stdin in dwm
Anselm R. Garbe <garbeam@wmii.de>
parents:
55
diff
changeset
|
164 |
c->y = sy + (i - 1) * h + bh; |
52
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
165 |
c->w = w - 2 * c->border; |
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
166 |
c->h = h - 2 * c->border; |
51 | 167 |
} |
52
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
168 |
resize(c, False); |
51 | 169 |
i++; |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
170 |
} |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
171 |
else |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
172 |
ban_client(c); |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
173 |
} |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
174 |
if(sel && !sel->tags[tsel]) { |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
175 |
if((sel = next(clients))) { |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
176 |
craise(sel); |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
177 |
focus(sel); |
27
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
178 |
} |
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
179 |
} |
29 | 180 |
discard_events(EnterWindowMask); |
27
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
181 |
} |
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
182 |
|
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
183 |
void |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
184 |
prevc(Arg *arg) |
27
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
185 |
{ |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
186 |
Client *c; |
27
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
187 |
|
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
188 |
if(!sel) |
27
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
189 |
return; |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
190 |
|
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
191 |
if((c = sel->revert && sel->revert->tags[tsel] ? sel->revert : NULL)) { |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
192 |
craise(c); |
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
193 |
focus(c); |
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
194 |
} |
27
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
195 |
} |
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
196 |
|
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
197 |
void |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
198 |
nextc(Arg *arg) |
27
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
199 |
{ |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
200 |
Client *c; |
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
201 |
|
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
202 |
if(!sel) |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
203 |
return; |
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
204 |
|
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
205 |
if(!(c = next(sel->next))) |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
206 |
c = next(clients); |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
207 |
if(c) { |
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
208 |
craise(c); |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
209 |
c->revert = sel; |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
210 |
focus(c); |
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
211 |
} |
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
212 |
} |
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
213 |
|
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
214 |
void |
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
215 |
ckill(Arg *arg) |
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
216 |
{ |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
217 |
if(!sel) |
27
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
218 |
return; |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
219 |
if(sel->proto & WM_PROTOCOL_DELWIN) |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
220 |
send_message(sel->win, wm_atom[WMProtocols], wm_atom[WMDelete]); |
27
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
221 |
else |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
222 |
XKillClient(dpy, sel->win); |
27
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
223 |
} |
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
224 |
|
26
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
225 |
static void |
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
226 |
resize_title(Client *c) |
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
227 |
{ |
31 | 228 |
int i; |
229 |
||
230 |
c->tw = 0; |
|
231 |
for(i = 0; i < TLast; i++) |
|
232 |
if(c->tags[i]) |
|
43 | 233 |
c->tw += textw(c->tags[i]) + dc.font.height; |
234 |
c->tw += textw(c->name) + dc.font.height; |
|
26
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
235 |
if(c->tw > c->w) |
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
236 |
c->tw = c->w + 2; |
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
237 |
c->tx = c->x + c->w - c->tw + 2; |
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
238 |
c->ty = c->y; |
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
239 |
XMoveResizeWindow(dpy, c->title, c->tx, c->ty, c->tw, c->th); |
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
240 |
} |
18
1efa34c6e1b6
added mouse-based resizals
Anselm R. Garbe <garbeam@wmii.de>
parents:
16
diff
changeset
|
241 |
|
13
5cc5e55a132d
added protocol killing stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
10
diff
changeset
|
242 |
void |
5cc5e55a132d
added protocol killing stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
10
diff
changeset
|
243 |
update_name(Client *c) |
5 | 244 |
{ |
245 |
XTextProperty name; |
|
246 |
int n; |
|
7 | 247 |
char **list = NULL; |
5 | 248 |
|
249 |
name.nitems = 0; |
|
250 |
c->name[0] = 0; |
|
251 |
XGetTextProperty(dpy, c->win, &name, net_atom[NetWMName]); |
|
252 |
if(!name.nitems) |
|
253 |
XGetWMName(dpy, c->win, &name); |
|
254 |
if(!name.nitems) |
|
255 |
return; |
|
256 |
if(name.encoding == XA_STRING) |
|
257 |
strncpy(c->name, (char *)name.value, sizeof(c->name)); |
|
258 |
else { |
|
259 |
if(XmbTextPropertyToTextList(dpy, &name, &list, &n) >= Success |
|
260 |
&& n > 0 && *list) |
|
261 |
{ |
|
262 |
strncpy(c->name, *list, sizeof(c->name)); |
|
263 |
XFreeStringList(list); |
|
264 |
} |
|
265 |
} |
|
266 |
XFree(name.value); |
|
26
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
267 |
resize_title(c); |
5 | 268 |
} |
269 |
||
10
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
270 |
void |
20 | 271 |
update_size(Client *c) |
272 |
{ |
|
273 |
XSizeHints size; |
|
274 |
long msize; |
|
275 |
if(!XGetWMNormalHints(dpy, c->win, &size, &msize) || !size.flags) |
|
276 |
size.flags = PSize; |
|
277 |
c->flags = size.flags; |
|
21
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
278 |
if(c->flags & PBaseSize) { |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
279 |
c->basew = size.base_width; |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
280 |
c->baseh = size.base_height; |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
281 |
} |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
282 |
else |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
283 |
c->basew = c->baseh = 0; |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
284 |
if(c->flags & PResizeInc) { |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
285 |
c->incw = size.width_inc; |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
286 |
c->inch = size.height_inc; |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
287 |
} |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
288 |
else |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
289 |
c->incw = c->inch = 0; |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
290 |
if(c->flags & PMaxSize) { |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
291 |
c->maxw = size.max_width; |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
292 |
c->maxh = size.max_height; |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
293 |
} |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
294 |
else |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
295 |
c->maxw = c->maxh = 0; |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
296 |
if(c->flags & PMinSize) { |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
297 |
c->minw = size.min_width; |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
298 |
c->minh = size.min_height; |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
299 |
} |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
300 |
else |
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
301 |
c->minw = c->minh = 0; |
29 | 302 |
if(c->flags & PWinGravity) |
303 |
c->grav = size.win_gravity; |
|
304 |
else |
|
305 |
c->grav = NorthWestGravity; |
|
20 | 306 |
} |
307 |
||
308 |
void |
|
32 | 309 |
craise(Client *c) |
26
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
310 |
{ |
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
311 |
XRaiseWindow(dpy, c->win); |
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
312 |
XRaiseWindow(dpy, c->title); |
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
313 |
} |
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
314 |
|
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
315 |
void |
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
316 |
lower(Client *c) |
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
317 |
{ |
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
318 |
XLowerWindow(dpy, c->title); |
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
319 |
XLowerWindow(dpy, c->win); |
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
320 |
} |
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
321 |
|
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
322 |
void |
13
5cc5e55a132d
added protocol killing stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
10
diff
changeset
|
323 |
focus(Client *c) |
5cc5e55a132d
added protocol killing stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
10
diff
changeset
|
324 |
{ |
52
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
325 |
Client *old = sel; |
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
326 |
|
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
327 |
sel = c; |
52
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
328 |
if(old && old != c) |
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
329 |
draw_client(old); |
27
f96fb3fd8203
added grid mode on Mod1Mask g
Anselm R. Garbe <garbeam@wmii.de>
parents:
26
diff
changeset
|
330 |
draw_client(c); |
26
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
331 |
XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); |
13
5cc5e55a132d
added protocol killing stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
10
diff
changeset
|
332 |
XFlush(dpy); |
45
7943c72e34eb
added pointer warps on kb-driven/manage-driven focus
Anselm R. Garbe <garbeam@wmii.de>
parents:
44
diff
changeset
|
333 |
discard_events(EnterWindowMask); |
13
5cc5e55a132d
added protocol killing stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
10
diff
changeset
|
334 |
} |
5cc5e55a132d
added protocol killing stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
10
diff
changeset
|
335 |
|
51 | 336 |
static void |
337 |
init_tags(Client *c) |
|
338 |
{ |
|
339 |
XClassHint ch; |
|
340 |
static unsigned int len = rule ? sizeof(rule) / sizeof(rule[0]) : 0; |
|
341 |
unsigned int i, j; |
|
342 |
Bool matched = False; |
|
343 |
||
344 |
if(!len) { |
|
345 |
c->tags[tsel] = tags[tsel]; |
|
346 |
return; |
|
347 |
} |
|
348 |
||
349 |
if(XGetClassHint(dpy, c->win, &ch)) { |
|
350 |
if(ch.res_class && ch.res_name) { |
|
351 |
for(i = 0; i < len; i++) |
|
352 |
if(!strncmp(rule[i].class, ch.res_class, sizeof(rule[i].class)) |
|
353 |
&& !strncmp(rule[i].instance, ch.res_name, sizeof(rule[i].instance))) |
|
354 |
{ |
|
355 |
for(j = 0; j < TLast; j++) |
|
356 |
c->tags[j] = rule[i].tags[j]; |
|
53 | 357 |
c->floating = rule[i].floating; |
51 | 358 |
matched = True; |
359 |
break; |
|
360 |
} |
|
361 |
} |
|
362 |
if(ch.res_class) |
|
363 |
XFree(ch.res_class); |
|
364 |
if(ch.res_name) |
|
365 |
XFree(ch.res_name); |
|
366 |
} |
|
367 |
||
368 |
if(!matched) |
|
369 |
c->tags[tsel] = tags[tsel]; |
|
370 |
} |
|
371 |
||
13
5cc5e55a132d
added protocol killing stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
10
diff
changeset
|
372 |
void |
10
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
373 |
manage(Window w, XWindowAttributes *wa) |
5 | 374 |
{ |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
375 |
Client *c, **l; |
5 | 376 |
XSetWindowAttributes twa; |
53 | 377 |
Window trans; |
5 | 378 |
|
379 |
c = emallocz(sizeof(Client)); |
|
380 |
c->win = w; |
|
22
bd3a44353916
fixed several other stuff, coming closer to something useful
Anselm R. Garbe <garbeam@wmii.de>
parents:
21
diff
changeset
|
381 |
c->tx = c->x = wa->x; |
bd3a44353916
fixed several other stuff, coming closer to something useful
Anselm R. Garbe <garbeam@wmii.de>
parents:
21
diff
changeset
|
382 |
c->ty = c->y = wa->y; |
57
f005d46462e8
implemented bar for dwm (I miss status text), I plan that status text is read from stdin in dwm
Anselm R. Garbe <garbeam@wmii.de>
parents:
55
diff
changeset
|
383 |
if(c->y < bh) |
f005d46462e8
implemented bar for dwm (I miss status text), I plan that status text is read from stdin in dwm
Anselm R. Garbe <garbeam@wmii.de>
parents:
55
diff
changeset
|
384 |
c->ty = c->y += bh; |
22
bd3a44353916
fixed several other stuff, coming closer to something useful
Anselm R. Garbe <garbeam@wmii.de>
parents:
21
diff
changeset
|
385 |
c->tw = c->w = wa->width; |
20 | 386 |
c->h = wa->height; |
57
f005d46462e8
implemented bar for dwm (I miss status text), I plan that status text is read from stdin in dwm
Anselm R. Garbe <garbeam@wmii.de>
parents:
55
diff
changeset
|
387 |
c->th = bh; |
29 | 388 |
c->border = 1; |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
389 |
c->proto = win_proto(c->win); |
20 | 390 |
update_size(c); |
26
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
391 |
XSelectInput(dpy, c->win, |
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
392 |
StructureNotifyMask | PropertyChangeMask | EnterWindowMask); |
53 | 393 |
XGetTransientForHint(dpy, c->win, &trans); |
5 | 394 |
twa.override_redirect = 1; |
395 |
twa.background_pixmap = ParentRelative; |
|
23 | 396 |
twa.event_mask = ExposureMask; |
5 | 397 |
|
22
bd3a44353916
fixed several other stuff, coming closer to something useful
Anselm R. Garbe <garbeam@wmii.de>
parents:
21
diff
changeset
|
398 |
c->title = XCreateWindow(dpy, root, c->tx, c->ty, c->tw, c->th, |
20 | 399 |
0, DefaultDepth(dpy, screen), CopyFromParent, |
5 | 400 |
DefaultVisual(dpy, screen), |
401 |
CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa); |
|
31 | 402 |
|
21
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
403 |
update_name(c); |
51 | 404 |
init_tags(c); |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
405 |
|
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
406 |
for(l = &clients; *l; l = &(*l)->next); |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
407 |
c->next = *l; /* *l == nil */ |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
408 |
*l = c; |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
409 |
|
19
b5510d0c6d43
added basic mouse support (actually we don't need more)
Anselm R. Garbe <garbeam@wmii.de>
parents:
18
diff
changeset
|
410 |
XGrabButton(dpy, Button1, Mod1Mask, c->win, False, ButtonPressMask, |
b5510d0c6d43
added basic mouse support (actually we don't need more)
Anselm R. Garbe <garbeam@wmii.de>
parents:
18
diff
changeset
|
411 |
GrabModeAsync, GrabModeSync, None, None); |
b5510d0c6d43
added basic mouse support (actually we don't need more)
Anselm R. Garbe <garbeam@wmii.de>
parents:
18
diff
changeset
|
412 |
XGrabButton(dpy, Button2, Mod1Mask, c->win, False, ButtonPressMask, |
b5510d0c6d43
added basic mouse support (actually we don't need more)
Anselm R. Garbe <garbeam@wmii.de>
parents:
18
diff
changeset
|
413 |
GrabModeAsync, GrabModeSync, None, None); |
b5510d0c6d43
added basic mouse support (actually we don't need more)
Anselm R. Garbe <garbeam@wmii.de>
parents:
18
diff
changeset
|
414 |
XGrabButton(dpy, Button3, Mod1Mask, c->win, False, ButtonPressMask, |
18
1efa34c6e1b6
added mouse-based resizals
Anselm R. Garbe <garbeam@wmii.de>
parents:
16
diff
changeset
|
415 |
GrabModeAsync, GrabModeSync, None, None); |
53 | 416 |
|
417 |
if(!c->floating) |
|
418 |
c->floating = trans |
|
419 |
|| ((c->maxw == c->minw) && (c->maxh == c->minh)); |
|
420 |
||
46
58307ad56ec1
added xlock command (I need it regularly)
Anselm R. Garbe <garbeam@wmii.de>
parents:
45
diff
changeset
|
421 |
arrange(NULL); |
60
24f9c674d03f
made stdin reader more robust
Anselm R. Garbe <garbeam@wmii.de>
parents:
57
diff
changeset
|
422 |
/* mapping the window now prevents flicker */ |
24f9c674d03f
made stdin reader more robust
Anselm R. Garbe <garbeam@wmii.de>
parents:
57
diff
changeset
|
423 |
if(c->tags[tsel]) { |
24f9c674d03f
made stdin reader more robust
Anselm R. Garbe <garbeam@wmii.de>
parents:
57
diff
changeset
|
424 |
XMapRaised(dpy, c->win); |
24f9c674d03f
made stdin reader more robust
Anselm R. Garbe <garbeam@wmii.de>
parents:
57
diff
changeset
|
425 |
XMapRaised(dpy, c->title); |
51 | 426 |
focus(c); |
60
24f9c674d03f
made stdin reader more robust
Anselm R. Garbe <garbeam@wmii.de>
parents:
57
diff
changeset
|
427 |
} |
24f9c674d03f
made stdin reader more robust
Anselm R. Garbe <garbeam@wmii.de>
parents:
57
diff
changeset
|
428 |
else { |
51 | 429 |
ban_client(c); |
60
24f9c674d03f
made stdin reader more robust
Anselm R. Garbe <garbeam@wmii.de>
parents:
57
diff
changeset
|
430 |
XMapRaised(dpy, c->win); |
24f9c674d03f
made stdin reader more robust
Anselm R. Garbe <garbeam@wmii.de>
parents:
57
diff
changeset
|
431 |
XMapRaised(dpy, c->title); |
24f9c674d03f
made stdin reader more robust
Anselm R. Garbe <garbeam@wmii.de>
parents:
57
diff
changeset
|
432 |
} |
5 | 433 |
} |
9
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
7
diff
changeset
|
434 |
|
18
1efa34c6e1b6
added mouse-based resizals
Anselm R. Garbe <garbeam@wmii.de>
parents:
16
diff
changeset
|
435 |
void |
29 | 436 |
gravitate(Client *c, Bool invert) |
437 |
{ |
|
438 |
int dx = 0, dy = 0; |
|
439 |
||
440 |
switch(c->grav) { |
|
441 |
case StaticGravity: |
|
442 |
case NorthWestGravity: |
|
443 |
case NorthGravity: |
|
444 |
case NorthEastGravity: |
|
445 |
dy = c->border; |
|
446 |
break; |
|
447 |
case EastGravity: |
|
448 |
case CenterGravity: |
|
449 |
case WestGravity: |
|
450 |
dy = -(c->h / 2) + c->border; |
|
451 |
break; |
|
452 |
case SouthEastGravity: |
|
453 |
case SouthGravity: |
|
454 |
case SouthWestGravity: |
|
455 |
dy = -c->h; |
|
456 |
break; |
|
457 |
default: |
|
458 |
break; |
|
459 |
} |
|
460 |
||
461 |
switch (c->grav) { |
|
462 |
case StaticGravity: |
|
463 |
case NorthWestGravity: |
|
464 |
case WestGravity: |
|
465 |
case SouthWestGravity: |
|
466 |
dx = c->border; |
|
467 |
break; |
|
468 |
case NorthGravity: |
|
469 |
case CenterGravity: |
|
470 |
case SouthGravity: |
|
471 |
dx = -(c->w / 2) + c->border; |
|
472 |
break; |
|
473 |
case NorthEastGravity: |
|
474 |
case EastGravity: |
|
475 |
case SouthEastGravity: |
|
476 |
dx = -(c->w + c->border); |
|
477 |
break; |
|
478 |
default: |
|
479 |
break; |
|
480 |
} |
|
481 |
||
482 |
if(invert) { |
|
483 |
dx = -dx; |
|
484 |
dy = -dy; |
|
485 |
} |
|
486 |
c->x += dx; |
|
487 |
c->y += dy; |
|
488 |
} |
|
489 |
||
31 | 490 |
|
29 | 491 |
void |
52
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
492 |
resize(Client *c, Bool inc) |
18
1efa34c6e1b6
added mouse-based resizals
Anselm R. Garbe <garbeam@wmii.de>
parents:
16
diff
changeset
|
493 |
{ |
1efa34c6e1b6
added mouse-based resizals
Anselm R. Garbe <garbeam@wmii.de>
parents:
16
diff
changeset
|
494 |
XConfigureEvent e; |
1efa34c6e1b6
added mouse-based resizals
Anselm R. Garbe <garbeam@wmii.de>
parents:
16
diff
changeset
|
495 |
|
52
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
496 |
if(inc) { |
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
497 |
if(c->incw) |
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
498 |
c->w -= (c->w - c->basew) % c->incw; |
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
499 |
if(c->inch) |
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
500 |
c->h -= (c->h - c->baseh) % c->inch; |
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
501 |
} |
31 | 502 |
if(c->minw && c->w < c->minw) |
503 |
c->w = c->minw; |
|
504 |
if(c->minh && c->h < c->minh) |
|
505 |
c->h = c->minh; |
|
506 |
if(c->maxw && c->w > c->maxw) |
|
507 |
c->w = c->maxw; |
|
508 |
if(c->maxh && c->h > c->maxh) |
|
509 |
c->h = c->maxh; |
|
26
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
510 |
resize_title(c); |
55 | 511 |
XSetWindowBorderWidth(dpy, c->win, 1); |
20 | 512 |
XMoveResizeWindow(dpy, c->win, c->x, c->y, c->w, c->h); |
18
1efa34c6e1b6
added mouse-based resizals
Anselm R. Garbe <garbeam@wmii.de>
parents:
16
diff
changeset
|
513 |
e.type = ConfigureNotify; |
1efa34c6e1b6
added mouse-based resizals
Anselm R. Garbe <garbeam@wmii.de>
parents:
16
diff
changeset
|
514 |
e.event = c->win; |
1efa34c6e1b6
added mouse-based resizals
Anselm R. Garbe <garbeam@wmii.de>
parents:
16
diff
changeset
|
515 |
e.window = c->win; |
20 | 516 |
e.x = c->x; |
517 |
e.y = c->y; |
|
518 |
e.width = c->w; |
|
519 |
e.height = c->h; |
|
29 | 520 |
e.border_width = c->border; |
18
1efa34c6e1b6
added mouse-based resizals
Anselm R. Garbe <garbeam@wmii.de>
parents:
16
diff
changeset
|
521 |
e.above = None; |
1efa34c6e1b6
added mouse-based resizals
Anselm R. Garbe <garbeam@wmii.de>
parents:
16
diff
changeset
|
522 |
e.override_redirect = False; |
1efa34c6e1b6
added mouse-based resizals
Anselm R. Garbe <garbeam@wmii.de>
parents:
16
diff
changeset
|
523 |
XSendEvent(dpy, c->win, False, StructureNotifyMask, (XEvent *)&e); |
1efa34c6e1b6
added mouse-based resizals
Anselm R. Garbe <garbeam@wmii.de>
parents:
16
diff
changeset
|
524 |
XFlush(dpy); |
1efa34c6e1b6
added mouse-based resizals
Anselm R. Garbe <garbeam@wmii.de>
parents:
16
diff
changeset
|
525 |
} |
1efa34c6e1b6
added mouse-based resizals
Anselm R. Garbe <garbeam@wmii.de>
parents:
16
diff
changeset
|
526 |
|
10
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
527 |
static int |
33
e90449e03167
new stuff (some warning elimination)
Anselm R. Garbe <garbeam@wmii.de>
parents:
32
diff
changeset
|
528 |
dummy_error_handler(Display *dsply, XErrorEvent *err) |
10
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
529 |
{ |
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
530 |
return 0; |
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
531 |
} |
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
532 |
|
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
533 |
void |
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
534 |
unmanage(Client *c) |
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
535 |
{ |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
536 |
Client **l; |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
537 |
|
10
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
538 |
XGrabServer(dpy); |
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
539 |
XSetErrorHandler(dummy_error_handler); |
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
540 |
|
18
1efa34c6e1b6
added mouse-based resizals
Anselm R. Garbe <garbeam@wmii.de>
parents:
16
diff
changeset
|
541 |
XUngrabButton(dpy, AnyButton, AnyModifier, c->win); |
10
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
542 |
XDestroyWindow(dpy, c->title); |
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
543 |
|
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
544 |
for(l = &clients; *l && *l != c; l = &(*l)->next); |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
545 |
*l = c->next; |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
546 |
for(l = &clients; *l; l = &(*l)->next) |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
547 |
if((*l)->revert == c) |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
548 |
(*l)->revert = NULL; |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
549 |
if(sel == c) |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
550 |
sel = sel->revert ? sel->revert : clients; |
49
466591c2f967
implemented tagging a client
Anselm R. Garbe <garbeam@wmii.de>
parents:
46
diff
changeset
|
551 |
|
10
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
552 |
free(c); |
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
553 |
|
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
554 |
XFlush(dpy); |
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
555 |
XSetErrorHandler(error_handler); |
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
556 |
XUngrabServer(dpy); |
46
58307ad56ec1
added xlock command (I need it regularly)
Anselm R. Garbe <garbeam@wmii.de>
parents:
45
diff
changeset
|
557 |
arrange(NULL); |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
558 |
if(sel) |
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
559 |
focus(sel); |
10
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
560 |
} |
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
561 |
|
23 | 562 |
Client * |
563 |
gettitle(Window w) |
|
564 |
{ |
|
565 |
Client *c; |
|
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
566 |
for(c = clients; c; c = c->next) |
23 | 567 |
if(c->title == w) |
568 |
return c; |
|
569 |
return NULL; |
|
570 |
} |
|
10
703255003abb
changed how manage client works
Anselm R. Garbe <garbeam@wmii.de>
parents:
9
diff
changeset
|
571 |
|
9
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
7
diff
changeset
|
572 |
Client * |
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
7
diff
changeset
|
573 |
getclient(Window w) |
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
7
diff
changeset
|
574 |
{ |
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
7
diff
changeset
|
575 |
Client *c; |
50
148f25ed0ad7
several other additions/fixes, dwm is quite usable already
Anselm R. Garbe <garbeam@wmii.de>
parents:
49
diff
changeset
|
576 |
for(c = clients; c; c = c->next) |
9
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
7
diff
changeset
|
577 |
if(c->win == w) |
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
7
diff
changeset
|
578 |
return c; |
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
7
diff
changeset
|
579 |
return NULL; |
d567f430a81d
fixed several stuff (gridwm gets better and better)
Anselm R. Garbe <garbeam@wmii.de>
parents:
7
diff
changeset
|
580 |
} |
13
5cc5e55a132d
added protocol killing stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
10
diff
changeset
|
581 |
|
14 | 582 |
void |
583 |
draw_client(Client *c) |
|
584 |
{ |
|
31 | 585 |
int i; |
52
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
586 |
if(c == sel) { |
57
f005d46462e8
implemented bar for dwm (I miss status text), I plan that status text is read from stdin in dwm
Anselm R. Garbe <garbeam@wmii.de>
parents:
55
diff
changeset
|
587 |
draw_bar(); |
52
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
588 |
XUnmapWindow(dpy, c->title); |
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
589 |
XSetWindowBorder(dpy, c->win, dc.fg); |
26
e8f627998d6f
simplified several portions of code through replacing rect structs with x,y,h,w counterparts (much more readable)
Anselm R. Garbe <garbeam@wmii.de>
parents:
23
diff
changeset
|
590 |
return; |
52
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
591 |
} |
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
592 |
|
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
593 |
XSetWindowBorder(dpy, c->win, dc.bg); |
d18f6dd0cf23
fixed several things, nearly feature complete
Anselm R. Garbe <garbeam@wmii.de>
parents:
51
diff
changeset
|
594 |
XMapWindow(dpy, c->title); |
14 | 595 |
|
34 | 596 |
dc.x = dc.y = 0; |
14 | 597 |
|
34 | 598 |
dc.w = 0; |
31 | 599 |
for(i = 0; i < TLast; i++) { |
600 |
if(c->tags[i]) { |
|
34 | 601 |
dc.x += dc.w; |
43 | 602 |
dc.w = textw(c->tags[i]) + dc.font.height; |
57
f005d46462e8
implemented bar for dwm (I miss status text), I plan that status text is read from stdin in dwm
Anselm R. Garbe <garbeam@wmii.de>
parents:
55
diff
changeset
|
603 |
drawtext(c->tags[i], True); |
31 | 604 |
} |
605 |
} |
|
34 | 606 |
dc.x += dc.w; |
43 | 607 |
dc.w = textw(c->name) + dc.font.height; |
57
f005d46462e8
implemented bar for dwm (I miss status text), I plan that status text is read from stdin in dwm
Anselm R. Garbe <garbeam@wmii.de>
parents:
55
diff
changeset
|
608 |
drawtext(c->name, True); |
34 | 609 |
XCopyArea(dpy, dc.drawable, c->title, dc.gc, |
22
bd3a44353916
fixed several other stuff, coming closer to something useful
Anselm R. Garbe <garbeam@wmii.de>
parents:
21
diff
changeset
|
610 |
0, 0, c->tw, c->th, 0, 0); |
21
3ef108a5ca0a
implemented draw_client stuff
Anselm R. Garbe <garbeam@wmii.de>
parents:
20
diff
changeset
|
611 |
XFlush(dpy); |
14 | 612 |
} |