diff options
Diffstat (limited to '')
-rw-r--r-- | dwl.c | 21 |
1 files changed, 18 insertions, 3 deletions
@@ -213,6 +213,7 @@ struct Monitor { int gamma_lut_changed; int nmaster; char ltsymbol[16]; + char *name; int asleep; }; @@ -1085,6 +1086,7 @@ createmon(struct wl_listener *listener, void *data) m->gappx = gappx; m->tagset[0] = m->tagset[1] = 1; for (r = monrules; r < END(monrules); r++) { + m->name = wlr_output->name; if (!r->name || strstr(wlr_output->name, r->name)) { m->m.x = r->x; m->m.y = r->y; @@ -1778,8 +1780,15 @@ handlesig(int signo) void incnmaster(const Arg *arg) { + const MonitorRule *r; + if (!arg || !selmon) return; + if (arg->i == 0) { + for (r = monrules; r < END(monrules); r++) + if (!r->name || strstr(selmon->name, r->name)) + selmon->nmaster = r->nmaster; + } selmon->nmaster = MAX(selmon->nmaster + arg->i, 0); arrange(selmon); } @@ -2570,13 +2579,19 @@ void setmfact(const Arg *arg) { float f; + const MonitorRule *r; if (!arg || !selmon || !selmon->lt[selmon->sellt]->arrange) return; f = arg->f < 1.0f ? arg->f + selmon->mfact : arg->f - 1.0f; - if (f < 0.1 || f > 0.9) - return; - selmon->mfact = f; + if (arg->f == 0) { + for (r = monrules; r < END(monrules); r++) + if (!r->name || strstr(selmon->name, r->name)) + selmon->mfact = r->mfact; + } else if (f > 0.1 || f < 0.9) + selmon->mfact = f; + else + return; arrange(selmon); } |