apply vertile layout patch

This commit is contained in:
korei999 2023-11-29 21:59:00 +02:00
parent 24e679d3fb
commit 4da9313a6a
2 changed files with 41 additions and 4 deletions

36
dwl.c
View file

@ -3141,6 +3141,42 @@ vertile(Monitor *m)
}
}
void
vertile(Monitor *m)
{
unsigned int i, n = 0, h, mh, my, ty, draw_borders = 1;
Client *c;
wl_list_for_each(c, &clients, link)
if (VISIBLEON(c, m) && !c->isfloating)
n++;
if (n == 0)
return;
if (n == smartborders)
draw_borders = 0;
if (n > m->nmaster)
ty = mh = m->nmaster ? m->w.height * m->mfact : 0;
else
ty = mh = m->w.height;
i = my = 0;
wl_list_for_each(c, &clients, link) {
if (!VISIBLEON(c, m) || c->isfloating || c->isfullscreen)
continue;
if (i < m->nmaster) {
h = ( mh - my ) / (MIN(n, m->nmaster) - i);
resize(c, (struct wlr_box) { .x = m->w.x, .y = m->w.y + my, .width = m->w.width, .height = h }, 0);
my += c->geom.height;
} else {
h = ( m->w.height - ty ) / (n - i);
resize(c, (struct wlr_box) { .x = m->w.x, .y = m->w.y + ty, .width = m->w.width, .height = h }, 0);
ty += c->geom.height;
}
i++;
}
}
void
togglebar(const Arg *arg) {
DwlIpcOutput *ipc_output;