summaryrefslogtreecommitdiffstats
path: root/dwl.c
diff options
context:
space:
mode:
Diffstat (limited to 'dwl.c')
-rw-r--r--dwl.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/dwl.c b/dwl.c
index 7edb3fd..d076e26 100644
--- a/dwl.c
+++ b/dwl.c
@@ -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);
}