First apply rmaster, then pertag, then this patch for rmaster-pertag --- a/dwm.c +++ b/dwm.c @@ -136,6 +136,7 @@ struct Monitor { char ltsymbol[16]; float mfact; int nmaster; + int rmaster; int num; int by; /* bar geometry */ int mx, my, mw, mh; /* screen size */ @@ -143,7 +144,6 @@ struct Monitor { unsigned int seltags; unsigned int sellt; unsigned int tagset[2]; - int rmaster; int showbar; int topbar; Client *clients; @@ -322,6 +322,7 @@ static Window root, wmcheckwin; struct Pertag { unsigned int curtag, prevtag; /* current and previous tag */ int nmasters[LENGTH(tags) + 1]; /* number of windows in master area */ + int rmasters[LENGTH(tags) + 1]; /* rmasters per tag */ float mfacts[LENGTH(tags) + 1]; /* mfacts per tag */ unsigned int sellts[LENGTH(tags) + 1]; /* selected layouts */ const Layout *ltidxs[LENGTH(tags) + 1][2]; /* matrix of tags and layouts indexes */ @@ -787,6 +788,7 @@ createmon(void) for (i = 0; i <= LENGTH(tags); i++) { m->pertag->nmasters[i] = m->nmaster; + m->pertag->rmasters[i] = m->rmaster; m->pertag->mfacts[i] = m->mfact; m->pertag->ltidxs[i][0] = m->lt[0]; @@ -2076,8 +2078,10 @@ void togglermaster(const Arg *arg) { selmon->rmaster = !selmon->rmaster; + selmon->pertag->rmasters[selmon->pertag->curtag] = selmon->rmaster; /* now mfact represents the left factor */ selmon->mfact = 1.0 - selmon->mfact; + selmon->pertag->mfacts[selmon->pertag->curtag] = selmon->mfact; if (selmon->lt[selmon->sellt]->arrange) arrange(selmon); } @@ -2120,6 +2124,7 @@ toggleview(const Arg *arg) /* apply settings for this view */ selmon->nmaster = selmon->pertag->nmasters[selmon->pertag->curtag]; + selmon->rmaster = selmon->pertag->rmasters[selmon->pertag->curtag]; selmon->mfact = selmon->pertag->mfacts[selmon->pertag->curtag]; selmon->sellt = selmon->pertag->sellts[selmon->pertag->curtag]; selmon->lt[selmon->sellt] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt]; @@ -2572,6 +2577,7 @@ view(const Arg *arg) } selmon->nmaster = selmon->pertag->nmasters[selmon->pertag->curtag]; + selmon->rmaster = selmon->pertag->rmasters[selmon->pertag->curtag]; selmon->mfact = selmon->pertag->mfacts[selmon->pertag->curtag]; selmon->sellt = selmon->pertag->sellts[selmon->pertag->curtag]; selmon->lt[selmon->sellt] = selmon->pertag->ltidxs[selmon->pertag->curtag][selmon->sellt];