#include "dwm.h" void tile(Monitor *m) { Client *c; uint i, n, h, mw, my, ty; n = 0; wl_list_for_each(c, &dwm.tiles, link.tiles) if (VISIBLEON(c, m) && !c->floating) n++; if (n == 0) return; if (n > m->nmaster) mw = m->nmaster ? m->area.win.width * m->mfact : 0; else mw = m->area.win.width; i = my = ty = 0; wl_list_for_each(c, &dwm.tiles, link.tiles) { if (!VISIBLEON(c, m) || c->floating) continue; if (i < m->nmaster) { h = (m->area.win.height - my) / (MIN(n, m->nmaster) - i); resize(c, m->area.win.x, m->area.win.y + my, mw, h, 0); my += c->dim.height; } else { h = (m->area.win.height - ty) / (n - i); resize(c, m->area.win.x + mw, m->area.win.y + ty, m->area.win.width - mw, h, 0); ty += c->dim.height; } i++; } }