/* A vertical stack layout, all windows have the full screen width. */ static void vstack(void) { unsigned int i, n, ny, nh, m, mh, th; Client *c; for (n = 0, c = nextvisible(clients); c; c = nextvisible(c->next)) if (!c->minimized) n++; m = MAX(1, MIN(n, screen.nmaster)); mh = (n == m ? wah : screen.mfact * wah); th = n == m ? 0 : (wah - mh) / (n - m); ny = way; for (i = 0, c = nextvisible(clients); c; c = nextvisible(c->next)) { if (c->minimized) continue; if (i < m) /* master */ nh = (i < m - 1) ? mh / m : (way + mh) - ny; else /* tile window */ nh = (i < n - 1) ? th : (way + wah) - ny; resize(c, wax, ny, waw, nh); ny += nh; i++; } }