From 7bb49468f1d6bb711539d8b02e0f44e7faa14bd9 Mon Sep 17 00:00:00 2001 From: Franck STAUFFER Date: Fri, 4 Sep 2020 10:07:20 +0200 Subject: [PATCH] Apply deck --- config.def.h | 2 ++ dwm.c | 33 +++++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) diff --git a/config.def.h b/config.def.h index d515f68..e6a3d1f 100644 --- a/config.def.h +++ b/config.def.h @@ -39,6 +39,7 @@ static const Layout layouts[] = { { "[]=", tile }, /* first entry is default */ { "><>", NULL }, /* no layout function means floating behavior */ { "[ ]", monocle }, + { "[]|", deck }, }; /* key definitions */ @@ -80,6 +81,7 @@ static Key keys[] = { { MODKEY, XK_t, setlayout, {.v = &layouts[0]} }, { MODKEY, XK_f, setlayout, {.v = &layouts[1]} }, { MODKEY, XK_m, setlayout, {.v = &layouts[2]} }, + { MODKEY, XK_c, setlayout, {.v = &layouts[3]} }, { MODKEY, XK_space, setlayout, {0} }, { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, { MODKEY|ShiftMask, XK_f, togglefullscr, {0} }, diff --git a/dwm.c b/dwm.c index d02d6fd..2840ed1 100644 --- a/dwm.c +++ b/dwm.c @@ -221,6 +221,8 @@ configurerequest(XEvent* e); static Monitor* createmon(void); static void +deck(Monitor* m); +static void destroynotify(XEvent* e); static void detach(Client* c); @@ -815,6 +817,37 @@ createmon(void) return m; } +void +deck(Monitor* m) +{ + unsigned int i, n, h, mw, my; + Client* c; + + for (n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++) + ; + if (n == 0) + return; + + if (n > m->nmaster) { + mw = m->nmaster ? m->ww * m->mfact : 0; + snprintf(m->ltsymbol, sizeof m->ltsymbol, "[%d]", n - m->nmaster); + } else + mw = m->ww; + for (i = my = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) + if (i < m->nmaster) { + h = (m->wh - my) / (MIN(n, m->nmaster) - i); + resize( + c, m->wx, m->wy + my, mw - (2 * c->bw), h - (2 * c->bw), False); + my += HEIGHT(c); + } else + resize(c, + m->wx + mw, + m->wy, + m->ww - mw - (2 * c->bw), + m->wh - (2 * c->bw), + False); +} + void destroynotify(XEvent* e) {