summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorbakkeby <[email protected]>2019-09-09 21:35:19 +0200
committerbakkeby <[email protected]>2019-09-09 21:35:19 +0200
commit637cc50ddafc5aedc24ebfc5498cfec38cb22cc0 (patch)
tree15360754e45d3260f0afd35fbfb9ef6e580f130a
parent973d64f51be939daa50d85151262d8602e09e978 (diff)
downloaddwm-flexipatch-637cc50ddafc5aedc24ebfc5498cfec38cb22cc0.tar.gz
dwm-flexipatch-637cc50ddafc5aedc24ebfc5498cfec38cb22cc0.zip
Adding centered master patches
-rw-r--r--README.md8
-rw-r--r--config.def.h6
-rw-r--r--patch/centeredfloatingmaster.c205
-rw-r--r--patch/centeredfloatingmaster.h1
-rw-r--r--patch/centeredmaster.c274
-rw-r--r--patch/centeredmaster.h1
-rw-r--r--patch/cfacts.c6
-rw-r--r--patch/cfacts.h2
-rw-r--r--patch/include.c8
-rw-r--r--patch/include.h8
-rw-r--r--patches.h10
11 files changed, 525 insertions, 4 deletions
diff --git a/README.md b/README.md
index 0540da9..d5eeb0b 100644
--- a/README.md
+++ b/README.md
@@ -11,7 +11,7 @@ Refer to [https://dwm.suckless.org/](https://dwm.suckless.org/) for details on t
### Changelog:
-2019-09-09 - Added deck, fibonacci (dwindle and spiral), gridmode, gapplessgrid, horizgrid and nrowgrid layouts
+2019-09-09 - Added deck, fibonacci (dwindle and spiral), gridmode, gapplessgrid, horizgrid, nrowgrid and centeredmaster layouts
2019-09-08 - Added cfacts and vanitygaps patches, added bstack and bstackhoriz layouts
@@ -115,6 +115,12 @@ Refer to [https://dwm.suckless.org/](https://dwm.suckless.org/) for details on t
- [bstackhoriz](https://dwm.suckless.org/patches/bottomstack/)
- bottomstack horizontal layout
+ - [centeredmaster](https://dwm.suckless.org/patches/centeredmaster/)
+ - centeredmaster layout
+
+ - [centeredfloatingmaster](https://dwm.suckless.org/patches/centeredmaster/)
+ - centeredfloatingmaster layout
+
- [deck](https://dwm.suckless.org/patches/deck/)
- deck layout
diff --git a/config.def.h b/config.def.h
index 426da8c..c5f0757 100644
--- a/config.def.h
+++ b/config.def.h
@@ -112,6 +112,12 @@ static const Layout layouts[] = {
#if BSTACKHORIZ_LAYOUT
{ "===", bstackhoriz },
#endif
+ #if CENTEREDMASTER_LAYOUT
+ { "|M|", centeredmaster },
+ #endif
+ #if CENTEREDFLOATINGMASTER_LAYOUT
+ { ">M>", centeredfloatingmaster },
+ #endif
#if DECK_LAYOUT
{ "[D]", deck },
#endif
diff --git a/patch/centeredfloatingmaster.c b/patch/centeredfloatingmaster.c
new file mode 100644
index 0000000..d4fcb5d
--- /dev/null
+++ b/patch/centeredfloatingmaster.c
@@ -0,0 +1,205 @@
+#if VANITYGAPS_PATCH && CFACTS_PATCH
+void
+centeredfloatingmaster(Monitor *m)
+{
+ unsigned int i, n;
+ float mivf, mfacts, sfacts;
+ int mx = 0, my = 0, mh = 0, mw = 0;
+ int sx = 0, sy = 0, sh = 0, sw = 0;
+ int oh, ov, ih, iv;
+ Client *c;
+
+ getgaps(m, &oh, &ov, &ih, &iv, &n);
+ getfacts(m, &mfacts, &sfacts);
+
+ if (n == 0)
+ return;
+
+ mivf = 0.8; // master inner vertical gap factor
+
+ sx = mx = m->wx + ov;
+ sy = my = m->wy + oh;
+ sh = mh = m->wh - 2*oh;
+ sw = mw = m->ww - 2*ov - iv*(n - 1);
+
+ if (m->nmaster && n > m->nmaster) {
+ /* go mfact box in the center if more than nmaster clients */
+ if (m->ww > m->wh) {
+ mw = m->ww * m->mfact - iv*mivf*(MIN(n, m->nmaster) - 1);
+ mh = m->wh * 0.9;
+ } else {
+ mw = m->ww * 0.9 - iv*mivf*(MIN(n, m->nmaster) - 1);
+ mh = m->wh * m->mfact;
+ }
+ mx = m->wx + (m->ww - mw) / 2;
+ my = m->wy + (m->wh - mh - 2*oh) / 2;
+
+ sx = m->wx + ov;
+ sy = m->wy + oh;
+ sh = m->wh - 2*oh;
+ sw = m->ww - 2*ov - iv*(n - m->nmaster - 1);
+ }
+
+ for (i = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) {
+ if (i < m->nmaster) {
+ /* nmaster clients are stacked horizontally, in the center of the screen */
+ resize(c, mx, my, mw * (c->cfact / mfacts) - (2*c->bw), mh - (2*c->bw), 0);
+ mx += WIDTH(c) + iv*mivf;
+ focus(c);
+ } else {
+ /* stack clients are stacked horizontally */
+ resize(c, sx, sy, sw * (c->cfact / sfacts) - (2*c->bw), sh - (2*c->bw), 0);
+ sx += WIDTH(c) + iv;
+ }
+ }
+ restack(m);
+}
+#elif VANITYGAPS_PATCH
+void
+centeredfloatingmaster(Monitor *m)
+{
+ unsigned int i, n;
+ float mivf;
+ int mx = 0, my = 0, mh = 0, mw = 0;
+ int sx = 0, sy = 0, sh = 0, sw = 0;
+ int oh, ov, ih, iv;
+ Client *c;
+
+ getgaps(m, &oh, &ov, &ih, &iv, &n);
+
+ if (n == 0)
+ return;
+
+ mivf = 0.8; // master inner vertical gap factor
+
+ sx = mx = m->wx + ov;
+ sy = my = m->wy + oh;
+ sh = mh = m->wh - 2*oh;
+ sw = mw = m->ww - 2*ov - iv*(n - 1);
+
+ if (m->nmaster && n > m->nmaster) {
+ /* go mfact box in the center if more than nmaster clients */
+ if (m->ww > m->wh) {
+ mw = m->ww * m->mfact - iv*mivf*(MIN(n, m->nmaster) - 1);
+ mh = m->wh * 0.9;
+ } else {
+ mw = m->ww * 0.9 - iv*mivf*(MIN(n, m->nmaster) - 1);
+ mh = m->wh * m->mfact;
+ }
+ mx = m->wx + (m->ww - mw) / 2;
+ my = m->wy + (m->wh - mh - 2*oh) / 2;
+
+ sx = m->wx + ov;
+ sy = m->wy + oh;
+ sh = m->wh - 2*oh;
+ sw = m->ww - 2*ov - iv*(n - m->nmaster - 1);
+ }
+
+ for (i = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) {
+ if (i < m->nmaster) {
+ /* nmaster clients are stacked horizontally, in the center of the screen */
+ resize(c, mx, my, mw / MIN(n, m->nmaster) - (2*c->bw), mh - (2*c->bw), 0);
+ mx += WIDTH(c) + iv*mivf;
+ focus(c);
+ } else {
+ /* stack clients are stacked horizontally */
+ resize(c, sx, sy, sw / (n - MIN(n, m->nmaster)) - (2*c->bw), sh - (2*c->bw), 0);
+ sx += WIDTH(c) + iv;
+ }
+ }
+ restack(m);
+}
+#elif CFACTS_PATCH
+void
+centeredfloatingmaster(Monitor *m)
+{
+ unsigned int i, n;
+ float mfacts, sfacts;
+ int mx = 0, my = 0, mh = 0, mw = 0;
+ int sx = 0, sy = 0, sh = 0, sw = 0;
+ Client *c;
+
+ for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++);
+ if (n == 0)
+ return;
+
+ getfacts(m, &mfacts, &sfacts);
+
+ sx = mx = m->wx;
+ sy = my = m->wy;
+ sh = mh = m->wh;
+ sw = mw = m->ww;
+
+ if (m->nmaster && n > m->nmaster) {
+ /* go mfact box in the center if more than nmaster clients */
+ if (m->ww > m->wh) {
+ mw = m->ww * m->mfact;
+ mh = m->wh * 0.9;
+ } else {
+ mw = m->ww * 0.9;
+ mh = m->wh * m->mfact;
+ }
+ mx = m->wx + (m->ww - mw) / 2;
+ my = m->wy + (m->wh - mh) / 2;
+ }
+
+ for (i = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) {
+ if (i < m->nmaster) {
+ /* nmaster clients are stacked horizontally, in the center of the screen */
+ resize(c, mx, my, mw * (c->cfact / mfacts) - (2*c->bw), mh - (2*c->bw), 0);
+ mx += WIDTH(c);
+ focus(c);
+ } else {
+ /* stack clients are stacked horizontally */
+ resize(c, sx, sy, sw * (c->cfact / sfacts) - (2*c->bw), sh - (2*c->bw), 0);
+ sx += WIDTH(c);
+ }
+ }
+ restack(m);
+}
+#else
+void
+centeredfloatingmaster(Monitor *m)
+{
+ unsigned int i, n;
+ int mx = 0, my = 0, mh = 0, mw = 0;
+ int sx = 0, sy = 0, sh = 0, sw = 0;
+ Client *c;
+
+ for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++);
+ if (n == 0)
+ return;
+
+ sx = mx = m->wx;
+ sy = my = m->wy;
+ sh = mh = m->wh;
+ sw = mw = m->ww;
+
+ if (m->nmaster && n > m->nmaster) {
+ /* go mfact box in the center if more than nmaster clients */
+ if (m->ww > m->wh) {
+ mw = m->ww * m->mfact;
+ mh = m->wh * 0.9;
+ } else {
+ mw = m->ww * 0.9;
+ mh = m->wh * m->mfact;
+ }
+ mx = m->wx + (m->ww - mw) / 2;
+ my = m->wy + (m->wh - mh) / 2;
+ }
+
+ for (i = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) {
+ if (i < m->nmaster) {
+ /* nmaster clients are stacked horizontally, in the center of the screen */
+ resize(c, mx, my, mw / MIN(n, m->nmaster) - (2*c->bw), mh - (2*c->bw), 0);
+ mx += WIDTH(c);
+ focus(c);
+ } else {
+ /* stack clients are stacked horizontally */
+ resize(c, sx, sy, sw / (n - MIN(n, m->nmaster)) - (2*c->bw), sh - (2*c->bw), 0);
+ sx += WIDTH(c);
+ }
+ }
+ restack(m);
+}
+#endif \ No newline at end of file
diff --git a/patch/centeredfloatingmaster.h b/patch/centeredfloatingmaster.h
new file mode 100644
index 0000000..e4147b3
--- /dev/null
+++ b/patch/centeredfloatingmaster.h
@@ -0,0 +1 @@
+static void centeredfloatingmaster(Monitor *m); \ No newline at end of file
diff --git a/patch/centeredmaster.c b/patch/centeredmaster.c
new file mode 100644
index 0000000..bac7a5b
--- /dev/null
+++ b/patch/centeredmaster.c
@@ -0,0 +1,274 @@
+#if VANITYGAPS_PATCH && CFACTS_PATCH
+void
+centeredmaster(Monitor *m)
+{
+ unsigned int i, n;
+ int mx = 0, my = 0, mh = 0, mw = 0;
+ int lx = 0, ly = 0, lw = 0, lh = 0;
+ int rx = 0, ry = 0, rw = 0, rh = 0;
+ int oh, ov, ih, iv;
+ float mfacts = 0, lfacts = 0, rfacts = 0;
+ Client *c;
+
+ getgaps(m, &oh, &ov, &ih, &iv, &n);
+ if (n == 0)
+ return;
+
+ for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++) {
+ if (!m->nmaster || n < m->nmaster)
+ mfacts += c->cfact; // total factor of master area
+ else if ((n - m->nmaster) % 2)
+ lfacts += c->cfact; // total factor of left hand stacke area
+ else
+ rfacts += c->cfact; // total factor of right hand stack area
+ }
+
+ /* initialize areas */
+ mx = m->wx + ov;
+ my = m->wy + oh;
+ mh = m->wh - 2*oh - ih * ((!m->nmaster ? n : MIN(n, m->nmaster)) - 1);
+ mw = m->ww - 2*ov;
+ lh = m->wh - 2*oh - ih * (((n - m->nmaster) / 2) - 1);
+ rh = m->wh - 2*oh - ih * (((n - m->nmaster) / 2) - ((n - m->nmaster) % 2 ? 0 : 1));
+
+ if (m->nmaster && n > m->nmaster) {
+ /* go mfact box in the center if more than nmaster clients */
+ if (n - m->nmaster > 1) {
+ /* ||<-S->|<---M--->|<-S->|| */
+ mw = (m->ww - 2*ov - 2*iv) * m->mfact;
+ lw = (m->ww - mw - 2*ov - 2*iv) / 2;
+ mx += lw + iv;
+ } else {
+ /* ||<---M--->|<-S->|| */
+ mw = (mw - iv) * m->mfact;
+ lw = m->ww - mw - iv - 2*ov;
+ }
+ rw = lw;
+ lx = m->wx + ov;
+ ly = m->wy + oh;
+ rx = mx + mw + iv;
+ ry = m->wy + oh;
+ }
+
+ for (i = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) {
+ if (!m->nmaster || i < m->nmaster) {
+ /* nmaster clients are stacked vertically, in the center of the screen */
+ resize(c, mx, my, mw - (2*c->bw), mh * (c->cfact / mfacts) - (2*c->bw), 0);
+ my += HEIGHT(c) + ih;
+ } else {
+ /* stack clients are stacked vertically */
+ if ((i - m->nmaster) % 2 ) {
+ resize(c, lx, ly, lw - (2*c->bw), lh * (c->cfact / lfacts) - (2*c->bw), 0);
+ ly += HEIGHT(c) + ih;
+ } else {
+ resize(c, rx, ry, rw - (2*c->bw), rh * (c->cfact / rfacts) - (2*c->bw), 0);
+ ry += HEIGHT(c) + ih;
+ }
+ }
+ }
+}
+#elif VANITYGAPS_PATCH
+void
+centeredmaster(Monitor *m)
+{
+ unsigned int i, n;
+ int mx = 0, my = 0, mh = 0, mw = 0;
+ int lx = 0, ly = 0, lw = 0, lh = 0;
+ int rx = 0, ry = 0, rw = 0, rh = 0;
+ int oh, ov, ih, iv;
+ int mn = 0, ln = 0, rn = 0; // number of clients in master, left and right area
+ Client *c;
+
+ getgaps(m, &oh, &ov, &ih, &iv, &n);
+
+ if (n == 0)
+ return;
+
+ for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++) {
+ if (!m->nmaster || n < m->nmaster)
+ mn += 1;
+ else if ((n - m->nmaster) % 2)
+ ln += 1; // total factor of left hand stacke area
+ else
+ rn += 1; // total factor of right hand stack area
+ }
+
+ /* initialize areas */
+ mx = m->wx + ov;
+ my = m->wy + oh;
+ mh = m->wh - 2*oh - ih * ((!m->nmaster ? n : MIN(n, m->nmaster)) - 1);
+ mw = m->ww - 2*ov;
+ lh = m->wh - 2*oh - ih * (((n - m->nmaster) / 2) - 1);
+ rh = m->wh - 2*oh - ih * (((n - m->nmaster) / 2) - ((n - m->nmaster) % 2 ? 0 : 1));
+
+ if (m->nmaster && n > m->nmaster) {
+ /* go mfact box in the center if more than nmaster clients */
+ if (n - m->nmaster > 1) {
+ /* ||<-S->|<---M--->|<-S->|| */
+ mw = (m->ww - 2*ov - 2*iv) * m->mfact;
+ lw = (m->ww - mw - 2*ov - 2*iv) / 2;
+ mx += lw + iv;
+ } else {
+ /* ||<---M--->|<-S->|| */
+ mw = (mw - iv) * m->mfact;
+ lw = m->ww - mw - iv - 2*ov;
+ }
+ rw = lw;
+ lx = m->wx + ov;
+ ly = m->wy + oh;
+ rx = mx + mw + iv;
+ ry = m->wy + oh;
+ }
+
+ for (i = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) {
+ if (!m->nmaster || i < m->nmaster) {
+ /* nmaster clients are stacked vertically, in the center of the screen */
+ resize(c, mx, my, mw - (2*c->bw), mh / mn - (2*c->bw), 0);
+ my += HEIGHT(c) + ih;
+ } else {
+ /* stack clients are stacked vertically */
+ if ((i - m->nmaster) % 2 ) {
+ resize(c, lx, ly, lw - (2*c->bw), lh / ln - (2*c->bw), 0);
+ ly += HEIGHT(c) + ih;
+ } else {
+ resize(c, rx, ry, rw - (2*c->bw), rh / rn - (2*c->bw), 0);
+ ry += HEIGHT(c) + ih;
+ }
+ }
+ }
+}
+#elif CFACTS_PATCH
+void
+centeredmaster(Monitor *m)
+{
+ unsigned int i, n;
+ int mx = 0, my = 0, mh = 0, mw = 0;
+ int lx = 0, ly = 0, lw = 0, lh = 0;
+ int rx = 0, ry = 0, rw = 0, rh = 0;
+ float mfacts = 0, lfacts = 0, rfacts = 0;
+ Client *c;
+
+ for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++) {
+ if (!m->nmaster || n < m->nmaster)
+ mfacts += c->cfact; // total factor of master area
+ else if ((n - m->nmaster) % 2)
+ lfacts += c->cfact; // total factor of left hand stacke area
+ else
+ rfacts += c->cfact; // total factor of right hand stack area
+ }
+
+ if (n == 0)
+ return;
+
+ /* initialize areas */
+ mx = m->wx;
+ my = m->wy;
+ mh = m->wh;
+ mw = m->ww;
+ lh = m->wh;
+ rh = m->wh;
+
+ if (m->nmaster && n > m->nmaster) {
+ /* go mfact box in the center if more than nmaster clients */
+ if (n - m->nmaster > 1) {
+ /* ||<-S->|<---M--->|<-S->|| */
+ mw = m->ww * m->mfact;
+ lw = (m->ww - mw) / 2;
+ mx += lw;
+ } else {
+ /* ||<---M--->|<-S->|| */
+ mw = mw * m->mfact;
+ lw = m->ww - mw;
+ }
+ rw = lw;
+ lx = m->wx;
+ ly = m->wy;
+ rx = mx + mw;
+ ry = m->wy;
+ }
+
+ for (i = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) {
+ if (!m->nmaster || i < m->nmaster) {
+ /* nmaster clients are stacked vertically, in the center of the screen */
+ resize(c, mx, my, mw - (2*c->bw), mh * (c->cfact / mfacts) - (2*c->bw), 0);
+ my += HEIGHT(c);
+ } else {
+ /* stack clients are stacked vertically */
+ if ((i - m->nmaster) % 2 ) {
+ resize(c, lx, ly, lw - (2*c->bw), lh * (c->cfact / lfacts) - (2*c->bw), 0);
+ ly += HEIGHT(c);
+ } else {
+ resize(c, rx, ry, rw - (2*c->bw), rh * (c->cfact / rfacts) - (2*c->bw), 0);
+ ry += HEIGHT(c);
+ }
+ }
+ }
+}
+#else
+void
+centeredmaster(Monitor *m)
+{
+ unsigned int i, n;
+ int mx = 0, my = 0, mh = 0, mw = 0;
+ int lx = 0, ly = 0, lw = 0, lh = 0;
+ int rx = 0, ry = 0, rw = 0, rh = 0;
+ int mn = 0, ln = 0, rn = 0; // number of clients in master, left and right area
+ Client *c;
+
+ for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++) {
+ if (!m->nmaster || n < m->nmaster)
+ mn += 1;
+ else if ((n - m->nmaster) % 2)
+ ln += 1; // total factor of left hand stacke area
+ else
+ rn += 1; // total factor of right hand stack area
+ }
+
+ if (n == 0)
+ return;
+
+ /* initialize areas */
+ mx = m->wx;
+ my = m->wy;
+ mh = m->wh;
+ mw = m->ww;
+ lh = m->wh;
+ rh = m->wh;
+
+ if (m->nmaster && n > m->nmaster) {
+ /* go mfact box in the center if more than nmaster clients */
+ if (n - m->nmaster > 1) {
+ /* ||<-S->|<---M--->|<-S->|| */
+ mw = m->ww * m->mfact;
+ lw = (m->ww - mw) / 2;
+ mx += lw;
+ } else {
+ /* ||<---M--->|<-S->|| */
+ mw = mw * m->mfact;
+ lw = m->ww - mw;
+ }
+ rw = lw;
+ lx = m->wx;
+ ly = m->wy;
+ rx = mx + mw;
+ ry = m->wy;
+ }
+
+ for (i = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) {
+ if (!m->nmaster || i < m->nmaster) {
+ /* nmaster clients are stacked vertically, in the center of the screen */
+ resize(c, mx, my, mw - (2*c->bw), mh / mn - (2*c->bw), 0);
+ my += HEIGHT(c);
+ } else {
+ /* stack clients are stacked vertically */
+ if ((i - m->nmaster) % 2 ) {
+ resize(c, lx, ly, lw - (2*c->bw), lh / ln - (2*c->bw), 0);
+ ly += HEIGHT(c);
+ } else {
+ resize(c, rx, ry, rw - (2*c->bw), rh / rn - (2*c->bw), 0);
+ ry += HEIGHT(c);
+ }
+ }
+ }
+}
+#endif \ No newline at end of file
diff --git a/patch/centeredmaster.h b/patch/centeredmaster.h
new file mode 100644
index 0000000..b047212
--- /dev/null
+++ b/patch/centeredmaster.h
@@ -0,0 +1 @@
+static void centeredmaster(Monitor *m); \ No newline at end of file
diff --git a/patch/cfacts.c b/patch/cfacts.c
index b193c92..b06098a 100644
--- a/patch/cfacts.c
+++ b/patch/cfacts.c
@@ -1,5 +1,6 @@
void
-setcfact(const Arg *arg) {
+setcfact(const Arg *arg)
+{
float f;
Client *c;
@@ -19,10 +20,11 @@ setcfact(const Arg *arg) {
void
getfacts(Monitor *m, float *mf, float *sf)
{
+ unsigned int n;
float mfacts = 0, sfacts = 0;
Client *c;
- for (c = nexttiled(m->clients); c; c = nexttiled(c->next)) {
+ for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++) {
if (!m->nmaster || n < m->nmaster)
mfacts += c->cfact;
else
diff --git a/patch/cfacts.h b/patch/cfacts.h
index 86d6ef8..1005f97 100644
--- a/patch/cfacts.h
+++ b/patch/cfacts.h
@@ -1,2 +1,2 @@
-static void getfacts(Monitor *m, float *mf, float *sf)
+static void getfacts(Monitor *m, float *mf, float *sf);
static void setcfact(const Arg *arg); \ No newline at end of file
diff --git a/patch/include.c b/patch/include.c
index 2cd434e..156fbac 100644
--- a/patch/include.c
+++ b/patch/include.c
@@ -62,6 +62,14 @@
#include "bstackhoriz.c"
#endif
+#if CENTEREDMASTER_LAYOUT
+#include "centeredmaster.c"
+#endif
+
+#if CENTEREDFLOATINGMASTER_LAYOUT
+#include "centeredfloatingmaster.c"
+#endif
+
#if DECK_LAYOUT
#include "deck.c"
#endif
diff --git a/patch/include.h b/patch/include.h
index 280b27a..596f303 100644
--- a/patch/include.h
+++ b/patch/include.h
@@ -58,6 +58,14 @@
#include "bstackhoriz.h"
#endif
+#if CENTEREDMASTER_LAYOUT
+#include "centeredmaster.h"
+#endif
+
+#if CENTEREDFLOATINGMASTER_LAYOUT
+#include "centeredfloatingmaster.h"
+#endif
+
#if DECK_LAYOUT
#include "deck.h"
#endif
diff --git a/patches.h b/patches.h
index 858ef7c..d272144 100644
--- a/patches.h
+++ b/patches.h
@@ -197,6 +197,16 @@
*/
#define BSTACKHORIZ_LAYOUT 0
+/* Centered master layout.
+ * https://dwm.suckless.org/patches/centeredmaster/
+ */
+#define CENTEREDMASTER_LAYOUT 0
+
+/* Centered floating master layout.
+ * https://dwm.suckless.org/patches/centeredmaster/
+ */
+#define CENTEREDFLOATINGMASTER_LAYOUT 1
+
/* Deck layout.
* https://dwm.suckless.org/patches/deck/
*/