Behavior's still a little wonky but positioning is there.
7L3TU7JVWPBPHN7WF4TJ263BZ6BC3AYRRW6PULFUP5JZUGWWNUSAC
CJH33PU2NGWN3E6HQQ3QE6PB25JVMXWJXZTSP4ZGPU4TZRZGNLYAC
HW2YJWC6AUWHZBS7KHF3PAWN44XGWSJ5WU47MCHTDCH32L5JN7EQC
FNGIZYDU5274CDE27IONZBA4JMXI4SQXEDIVTMVESK7A44XIJ7FAC
6LVZRZGDURMWBUBXHFGV4HGB7L5M2FKCYGJCAU3X2PK74VJQ6RCAC
TZP6PT5SUMQJO4YUGALUU3R4RYQREDLZXWAOKD6N3QDROICWHRBAC
7B74AT3BXYB7PVW4F6SGQNPMHOU5TEV5TZ54CG6VSQI46XSEKWXQC
J6OSBEBQXZR5JZ5TOCCUPELBPUVEQULGCXURXLPY7WFYTDEQOU2AC
2ZRKX4A24W4WNSLJNPKP3FWB3Y3UCYLWWESTC65P45BQFSJKS4PQC
7JQD43QS55Q2YI6OQ6BGVAHSHKQHI3TKD6PXIKYKJZXOVOWFHMWAC
D425ND7AT3F7QJ3CCSESMVDOC3J5C5P32M5SJDBHECZJXLHNQ2FAC
S7RXJJZG4IEIVLPHEWFT5M2T3SRRO5US5SYBPXSYSWJJLXAKNNPAC
E7UO6NRGXFDMBU3BSJYRDNOA3Y7VHD7NWPHI5PHCPHQF6ZNOPZLQC
ZOOCZQBGZ4PCOU54EPPUPWNOIFWCM5RMZ4EFL2WFR7LFJTAMHZGAC
6XZIQSMIVP2GZ5S3UCKEVNDSLTHSQEVSXLV4UIFF3G3SRCGJPXYAC
tile(Monitor *m)
{
unsigned int i, n = 0, h, mw, my, ty;
Client *c;
struct wlr_box ca;
wl_list_for_each(c, &clients, link) {
if (VISIBLEON(c, m))
n++;
}
if (n == 0)
return;
if (n > m->nmaster)
mw = m->nmaster ? m->ww * m->mfact : 0;
else
mw = m->ww;
i = my = ty = 0;
wl_list_for_each(c, &clients, link) {
if (!VISIBLEON(c, m))
continue;
wlr_xdg_surface_get_geometry(c->xdg_surface, &ca);
if (i < m->nmaster) {
h = (m->wh - my) / (MIN(n, m->nmaster) - i);
resize(c, m->wx, m->wy + my, mw, h);
my += ca.height;
} else {
h = (m->wh - ty) / (n - i);
resize(c, m->wx + mw, m->wy + ty, m->ww - mw, h);
ty += ca.height;
}
i++;
}
}
void
/* name scale */
{ "X11-1", 1 },
{ "eDP-1", 2 },
{ "HDMI-A-1", 1 },
/* defaults */
{ NULL, 1 },
/* name mfact nmaster scale layout */
{ "X11-1", 0.5, 1, 1, &layouts[0] },
{ "eDP-1", 0.5, 1, 2, &layouts[0] },
{ "HDMI-A-1", 0.5, 1, 1, &layouts[0] },
/* defaults (required) */
{ NULL, 0.5, 1, 1, &layouts[0] },