Expanded monitor rules patch to include nmaster, showbar and topbar options.

This commit is contained in:
bakkeby 2020-04-26 16:26:36 +02:00
parent 5848460fff
commit 14b7edd911
3 changed files with 40 additions and 22 deletions

View File

@ -15,6 +15,8 @@ Refer to [https://dwm.suckless.org/](https://dwm.suckless.org/) for details on t
### Changelog:
2020-04-26 - Expanded monitor rules patch to include nmaster, showbar and topbar options
2020-04-23 - Improved swallow and switchtag compatibility
2020-04-16 - Upgraded the scratchpad patch to the multiple scratchpads patch \[[ref](https://lists.suckless.org/hackers/2004/17205.html)\]. Updated the statuscolors patch with the width computation fix \[[ref](https://lists.suckless.org/hackers/2004/17207.html)\].
@ -251,7 +253,7 @@ Refer to [https://dwm.suckless.org/](https://dwm.suckless.org/) for details on t
- [mdpcontrol](https://dwm.suckless.org/patches/mpdcontrol/)
- adds keyboard bindings to control MDP (Music Player Daemon)
- monitorrules
- [monitorrules](https://github.com/bakkeby/patches/blob/master/dwm/dwm-monitorrules-6.2.diff)
- adds rules per monitor, e.g. have default layouts per monitor
- the use case for this is if the second monitor is vertical (i.e. rotated) then you may want to use a different default layout for this monitor than what is used for the main monitor (for example normal vertical split for main monitor and horizontal split for the second)

View File

@ -441,15 +441,15 @@ static const Rule rules[] = {
#if MONITOR_RULES_PATCH
#if PERTAG_PATCH
static const MonitorRule monrules[] = {
/* monitor tag layout mfact */
{ 1, -1, 2, -1 }, // use a different layout for the second monitor
{ -1, -1, 0, -1 }, // default
/* monitor tag layout mfact nmaster showbar topbar */
{ 1, -1, 2, -1, -1, -1, -1 }, // use a different layout for the second monitor
{ -1, -1, 0, -1, -1, -1, -1 }, // default
};
#else
static const MonitorRule monrules[] = {
/* monitor layout mfact */
{ 1, 2, -1 }, // use a different layout for the second monitor
{ -1, 0, -1 }, // default
/* monitor layout mfact nmaster showbar topbar */
{ 1, 2, -1, -1, -1, -1 }, // use a different layout for the second monitor
{ -1, 0, -1, -1, -1, -1 }, // default
};
#endif // PERTAG_PATCH
#endif // MONITOR_RULES_PATCH

46
dwm.c
View File

@ -317,6 +317,9 @@ typedef struct {
#endif // PERTAG_PATCH
int layout;
float mfact;
int nmaster;
int showbar;
int topbar;
} MonitorRule;
#endif // MONITOR_RULES_PATCH
@ -1280,6 +1283,15 @@ createmon(void)
m->lt[0] = &layouts[mr->layout];
m->lt[1] = &layouts[1 % LENGTH(layouts)];
strncpy(m->ltsymbol, layouts[mr->layout].symbol, sizeof m->ltsymbol);
if (mr->mfact > -1)
m->mfact = mr->mfact;
if (mr->nmaster > -1)
m->nmaster = mr->nmaster;
if (mr->showbar > -1)
m->showbar = mr->showbar;
if (mr->topbar > -1)
m->topbar = mr->topbar;
break;
}
}
@ -1301,16 +1313,27 @@ createmon(void)
die("fatal: could not malloc() %u bytes\n", sizeof(Pertag));
m->pertag->curtag = m->pertag->prevtag = 1;
for (i = 0; i <= LENGTH(tags); i++) {
/* init nmaster */
m->pertag->nmasters[i] = m->nmaster;
#if FLEXTILE_DELUXE_LAYOUT
m->pertag->nstacks[i] = m->nstack;
#endif // FLEXTILE_DELUXE_LAYOUT
#if !MONITOR_RULES_PATCH
/* init nmaster */
m->pertag->nmasters[i] = m->nmaster;
/* init mfacts */
m->pertag->mfacts[i] = m->mfact;
#if PERTAGBAR_PATCH
/* init showbar */
m->pertag->showbars[i] = m->showbar;
#endif // PERTAGBAR_PATCH
#endif // MONITOR_RULES_PATCH
#if ZOOMSWAP_PATCH
m->pertag->prevzooms[i] = NULL;
#endif // ZOOMSWAP_PATCH
/* init layouts */
#if MONITOR_RULES_PATCH
for (j = 0; j < LENGTH(monrules); j++) {
@ -1318,8 +1341,11 @@ createmon(void)
if ((mr->monitor == -1 || mr->monitor == mc) && (mr->tag == -1 || mr->tag == i)) {
m->pertag->ltidxs[i][0] = &layouts[mr->layout];
m->pertag->ltidxs[i][1] = m->lt[0];
if (mr->mfact != -1)
m->pertag->mfacts[i] = mr->mfact;
m->pertag->nmasters[i] = (mr->nmaster > -1 ? mr->nmaster : m->nmaster);
m->pertag->mfacts[i] = (mr->mfact > -1 ? mr->mfact : m->mfact);
#if PERTAGBAR_PATCH
m->pertag->showbars[i] = (mr->showbar > -1 ? mr->showbar : m->showbar);
#endif // PERTAGBAR_PATCH
#if FLEXTILE_DELUXE_LAYOUT
m->pertag->ltaxis[i][LAYOUT] = m->pertag->ltidxs[i][0]->preset.layout;
m->pertag->ltaxis[i][MASTER] = m->pertag->ltidxs[i][0]->preset.masteraxis;
@ -1342,16 +1368,6 @@ createmon(void)
#endif // MONITOR_RULES_PATCH
m->pertag->sellts[i] = m->sellt;
#if PERTAGBAR_PATCH
/* init showbar */
m->pertag->showbars[i] = m->showbar;
/* swap focus and zoomswap*/
#if ZOOMSWAP_PATCH
m->pertag->prevzooms[i] = NULL;
#endif // ZOOMSWAP_PATCH
#endif // PERTAGBAR_PATCH
#if VANITYGAPS_PATCH
m->pertag->enablegaps[i] = 1;
#endif // VANITYGAPS_PATCH