Unlink any named pipes which we created
[dvtm.git] / bstack.c
blobd3f2002addfc6c0568f1272ddef1d4ce21a514b0
1 static void
2 bstack(void) {
3 unsigned int i, m, n, nx, ny, nw, nh, mh, tw;
4 Client *c;
6 for(n = 0, m = 0, c = clients; c; c = c->next, n++)
7 if(c->minimized)
8 m++;
10 if(n == 1)
11 mh = wah;
12 else if(n - 1 == m)
13 mh = wah - m;
14 else
15 mh = screen.mfact * (wah - m);
16 /* true if there are at least 2 non minimized clients */
17 if(n - 1 > m)
18 tw = waw / (n - m - 1);
20 nx = wax;
21 ny = way;
22 for(i = 0, c = clients; c; c = c->next, i++){
23 if(i == 0){ /* master */
24 nh = mh;
25 nw = waw;
26 } else { /* tile window */
27 if(i == 1){
28 nx = wax;
29 ny += mh;
30 nh = (way + wah - m) - ny;
32 if(i == n - m - 1){ /* last not minimized client */
33 nw = (wax + waw) - nx;
34 } else if(i == n - m){ /* first minimized client */
35 ny += nh;
36 nx = wax;
37 nw = waw;
38 nh = 1;
39 } else if(c->minimized) { /* minimized window */
40 nw = waw;
41 nh = 1;
42 ny++;
43 } else /* normal non minimized tile window */
44 nw = tw;
45 if(i > 1 && !c->minimized){
46 mvvline(ny, nx, ACS_VLINE, nh);
47 mvaddch(ny, nx, ACS_TTEE);
48 nx++, nw--;
52 resize(c,nx,ny,nw,nh);
54 if(n > 1 && i < n - m - 1)
55 nx += nw;