mirror of
https://codeberg.org/dwl/dwl.git
synced 2025-01-14 21:07:28 -08:00
apply vertile layout patch
This commit is contained in:
parent
24e679d3fb
commit
4da9313a6a
2 changed files with 41 additions and 4 deletions
|
@ -65,6 +65,7 @@ static const Layout layouts[] = {
|
||||||
/* symbol arrange function */
|
/* symbol arrange function */
|
||||||
{ "[]=", tile },
|
{ "[]=", tile },
|
||||||
{ "[M]", monocle },
|
{ "[M]", monocle },
|
||||||
|
{ "[v]", vertile },
|
||||||
{ "><>", NULL } /* no layout function means floating behavior */
|
{ "><>", NULL } /* no layout function means floating behavior */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -72,12 +73,12 @@ static const Layout layouts[] = {
|
||||||
* The order in which monitors are defined determines their position.
|
* The order in which monitors are defined determines their position.
|
||||||
* Non-configured monitors are always added to the left. */
|
* Non-configured monitors are always added to the left. */
|
||||||
static const MonitorRule monrules[] = {
|
static const MonitorRule monrules[] = {
|
||||||
/* name mfact nmaster scale layout rotate/reflect x y resx resy rate adaptive custom*/
|
/* name mfact nmaster scale layout rotate/reflect x y */
|
||||||
/* example of a HiDPI laptop monitor at 120Hz:
|
/* example of a HiDPI laptop monitor:
|
||||||
{ "eDP-1", 0.5, 1, 2, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, 0, 0, 0, 0, 120.000, 1, 0 },
|
{ "eDP-1", 0.5, 1, 2, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, -1, -1 },
|
||||||
*/
|
*/
|
||||||
/* defaults */
|
/* defaults */
|
||||||
{ NULL, 0.55, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, 0, 0, 0, 0, 120.000999, 0, 0 },
|
{ NULL, 0.55, 1, 1, &layouts[0], WL_OUTPUT_TRANSFORM_NORMAL, -1, -1 },
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
36
dwl.c
36
dwl.c
|
@ -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
|
void
|
||||||
togglebar(const Arg *arg) {
|
togglebar(const Arg *arg) {
|
||||||
DwlIpcOutput *ipc_output;
|
DwlIpcOutput *ipc_output;
|
||||||
|
|
Loading…
Reference in a new issue