sites

public wiki contents of suckless.org
git clone git://git.suckless.org/sites
Log | Files | Refs

commit e980a011a6dab94536e0b7840d5b4f22afae6a48
parent 67fd268487b1ff49d54db4dd86abe75e0f05c087
Author: aleks <aleks.stier@icloud.com>
Date:   Thu, 23 May 2019 23:46:16 +0200

[dwm][deck] Simplify rmaster- and tilegap-versions

The dwm-deck-rmaster/tilegap patches dont't duplicate the dwm-deck
codde anymore. Instead they have to be applied on top of the dwm-deck
patch. This makes them simpler and easier to maintain.

Diffstat:
Mdwm.suckless.org/patches/deck/dwm-deck-6.0.diff | 9+++++++--
Mdwm.suckless.org/patches/deck/dwm-deck-rmaster-6.1.diff | 98++++++++++++++++++++-----------------------------------------------------------
Adwm.suckless.org/patches/deck/dwm-deck-tilegap-6.1.diff | 55+++++++++++++++++++++++++++++++++++++++++++++++++++++++
Ddwm.suckless.org/patches/deck/dwm-deck-tilegap-6.2.diff | 87-------------------------------------------------------------------------------
Mdwm.suckless.org/patches/deck/index.md | 16++++++----------
5 files changed, 93 insertions(+), 172 deletions(-)

diff --git a/dwm.suckless.org/patches/deck/dwm-deck-6.0.diff b/dwm.suckless.org/patches/deck/dwm-deck-6.0.diff @@ -8,9 +8,14 @@ It applies the monocle-layout to the clients in the stack. The master-client is still visible. The stacked clients are like a deck of cards, hence the name. -The vanilla patch doesn't respect patches which add gaps (ex. tilegap). +The vanilla patch doesn't work properly with patches which add gaps. This means that when the deck-layout is activated gaps are omitted. -To make it work with the tilegap-patch use the dwm-deck-tilegap patch. +To make it work with the tilegap-patch apply the dwm-deck-tilegap patch +on top of the dwm-deck patch. + +The vanilla patch doesn't respect the master-area which is defined by +the rmaster-patch. To make it work with the rmaster-patch apply the +dwm-deck-rmaster patch on top of the dwm-deck patch. --- config.def.h | 2 ++ dwm.c | 26 ++++++++++++++++++++++++++ diff --git a/dwm.suckless.org/patches/deck/dwm-deck-rmaster-6.1.diff b/dwm.suckless.org/patches/deck/dwm-deck-rmaster-6.1.diff @@ -1,93 +1,45 @@ -From c3de13b090e7eb805bae3d6060ada193c58ae5d3 Mon Sep 17 00:00:00 2001 +From ea45fb6fe67e5815e1455559dca4103f6d429f07 Mon Sep 17 00:00:00 2001 From: aleks <aleks.stier@icloud.com> -Date: Sat, 18 May 2019 01:06:57 +0200 -Subject: [PATCH] Add deck-rmaster-layout +Date: Thu, 23 May 2019 23:11:34 +0200 +Subject: [PATCH] Make deck-patch work with the rmaster-patch -deck is a dwm-layout which is inspired by the TTWM window manager. -It applies the monocle-layout to the clients in the stack. -The master-client is still visible. The stacked clients are like -a deck of cards, hence the name. - -This patch is ment to be used in combination with the rmaster-patch to -preserve the side of the master-area which is defined by the +Apply this patch on top of the deck-patch to make it work with the rmaster-patch. - -NOTE: This patch doesn't respect patches which add gaps (ex. tilegap). -This means that when the deck-layout is activated gaps are omitted. -To make it work with the tilegap-patch use the dwm-deck-tilegap patch. --- - config.def.h | 2 ++ - dwm.c | 30 ++++++++++++++++++++++++++++++ - 2 files changed, 32 insertions(+) + dwm.c | 10 +++++++--- + 1 file changed, 7 insertions(+), 3 deletions(-) -diff --git a/config.def.h b/config.def.h -index b747282..3ae1309 100644 ---- a/config.def.h -+++ b/config.def.h -@@ -40,6 +40,7 @@ static const Layout layouts[] = { - { "[]=", tile }, /* first entry is default */ - { "><>", NULL }, /* no layout function means floating behavior */ - { "[M]", monocle }, -+ { "[D]", deck }, - }; - - /* key definitions */ -@@ -75,6 +76,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_r, togglermaster, {0} }, - { MODKEY, XK_space, setlayout, {0} }, - { MODKEY|ShiftMask, XK_space, togglefloating, {0} }, diff --git a/dwm.c b/dwm.c -index e11bd8b..441a99a 100644 +index 11649dd..441a99a 100644 --- a/dwm.c +++ b/dwm.c -@@ -159,6 +159,7 @@ static void configure(Client *c); - static void configurenotify(XEvent *e); - static void configurerequest(XEvent *e); - static Monitor *createmon(void); -+static void deck(Monitor *m); - static void destroynotify(XEvent *e); - static void detach(Client *c); - static void detachstack(Client *c); -@@ -656,6 +657,35 @@ createmon(void) - return m; - } +@@ -667,7 +667,9 @@ deck(Monitor *m) { + return; -+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) { + if(n > m->nmaster) { +- mw = m->nmaster ? m->ww * m->mfact : 0; + mw = m->nmaster + ? m->ww * (m->rmaster ? 1.0 - m->mfact : 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); + snprintf(m->ltsymbol, sizeof m->ltsymbol, "[%d]", n - m->nmaster); + } + else +@@ -675,11 +677,13 @@ deck(Monitor *m) { + 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); + resize(c, m->rmaster ? m->wx + m->ww - mw : m->wx, + m->wy + my, mw - (2*c->bw), h - (2*c->bw), 0); -+ my += HEIGHT(c); -+ } -+ else + my += HEIGHT(c); + } + else +- resize(c, m->wx + mw, m->wy, m->ww - mw - (2*c->bw), m->wh - (2*c->bw), False); + resize(c, m->rmaster ? m->wx : m->wx + mw, m->wy, + m->ww - mw - (2*c->bw), m->wh - (2*c->bw), 0); -+} -+ + } + void - destroynotify(XEvent *e) - { -- 2.21.0 diff --git a/dwm.suckless.org/patches/deck/dwm-deck-tilegap-6.1.diff b/dwm.suckless.org/patches/deck/dwm-deck-tilegap-6.1.diff @@ -0,0 +1,55 @@ +From a9e442ec18683e2255ffef74404c283bbb0b6381 Mon Sep 17 00:00:00 2001 +From: aleks <aleks.stier@icloud.com> +Date: Thu, 23 May 2019 23:27:59 +0200 +Subject: [PATCH] Make deck-patch work with the tilegap-patch + +Apply this patch on top of the deck-patch to make it work with the +tilegap-patch. +--- + dwm.c | 18 ++++++++++-------- + 1 file changed, 10 insertions(+), 8 deletions(-) + +diff --git a/dwm.c b/dwm.c +index 5b68242..1c17891 100644 +--- a/dwm.c ++++ b/dwm.c +@@ -656,7 +656,7 @@ createmon(void) + + void + deck(Monitor *m) { +- unsigned int i, n, h, mw, my; ++ unsigned int i, n, h, mw, my, ns; + Client *c; + + for(n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++); +@@ -665,18 +665,20 @@ deck(Monitor *m) { + + if(n > m->nmaster) { + mw = m->nmaster ? m->ww * m->mfact : 0; ++ ns = m->nmaster > 0 ? 2 : 1; + snprintf(m->ltsymbol, sizeof m->ltsymbol, "[%d]", n - m->nmaster); +- } +- else ++ } else { + mw = m->ww; +- for(i = my = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) ++ ns = 1; ++ } ++ for(i = 0, my = gappx, 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); ++ h = (m->wh - my) / (MIN(n, m->nmaster) - i) - gappx; ++ resize(c, m->wx + gappx, m->wy + my, mw - (2*c->bw) - gappx*(5-ns)/2, h - (2*c->bw), False); ++ my += HEIGHT(c) + gappx; + } + else +- resize(c, m->wx + mw, m->wy, m->ww - mw - (2*c->bw), m->wh - (2*c->bw), False); ++ resize(c, m->wx + mw + gappx/ns, m->wy + gappx, m->ww - mw - (2*c->bw) - gappx*(5-ns)/2, m->wh - (2*c->bw) - 2*gappx, False); + } + + void +-- +2.21.0 + diff --git a/dwm.suckless.org/patches/deck/dwm-deck-tilegap-6.2.diff b/dwm.suckless.org/patches/deck/dwm-deck-tilegap-6.2.diff @@ -1,87 +0,0 @@ -From 0da1bf76c63fa285abcb9241babc4a33ed11cca7 Mon Sep 17 00:00:00 2001 -From: aleks <aleks.stier@icloud.com> -Date: Mon, 6 May 2019 16:21:02 +0200 -Subject: [PATCH] Add deck-tilegap-layout - -deck is a dwm-layout which is inspired by the TTWM window manager. -It applies the monocle-layout to the clients in the stack. -The master-client is still visible. The stacked clients are like -a deck of cards, hence the name. - -This patch is ment to be used in combination with the tilegap-patch -to preserve the gaps when the deck-layout is activated. ---- - config.def.h | 2 ++ - dwm.c | 29 +++++++++++++++++++++++++++++ - 2 files changed, 31 insertions(+) - -diff --git a/config.def.h b/config.def.h -index 2ca9e56..3606a2e 100644 ---- a/config.def.h -+++ b/config.def.h -@@ -42,6 +42,7 @@ static const Layout layouts[] = { - { "[]=", tile }, /* first entry is default */ - { "><>", NULL }, /* no layout function means floating behavior */ - { "[M]", monocle }, -+ { "[D]", deck }, - }; - - /* key definitions */ -@@ -77,6 +78,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, XK_0, view, {.ui = ~0 } }, -diff --git a/dwm.c b/dwm.c -index c556a2d..c5b96dd 100644 ---- a/dwm.c -+++ b/dwm.c -@@ -157,6 +157,7 @@ static void configure(Client *c); - static void configurenotify(XEvent *e); - static void configurerequest(XEvent *e); - static Monitor *createmon(void); -+static void deck(Monitor *m); - static void destroynotify(XEvent *e); - static void detach(Client *c); - static void detachstack(Client *c); -@@ -654,6 +655,34 @@ destroynotify(XEvent *e) - unmanage(c, 1); - } - -+void -+deck(Monitor *m) -+{ -+ unsigned int i, n, h, mw, my, ns; -+ 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; -+ ns = m->nmaster > 0 ? 2 : 1; -+ snprintf(m->ltsymbol, sizeof m->ltsymbol, "[%d]", n - m->nmaster); -+ } else { -+ mw = m->ww; -+ ns = 1; -+ } -+ for(i = 0, my = gappx, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++) -+ if(i < m->nmaster) { -+ h = (m->wh - my) / (MIN(n, m->nmaster) - i) - gappx; -+ resize(c, m->wx + gappx, m->wy + my, mw - (2*c->bw) - gappx*(5-ns)/2, h - (2*c->bw), False); -+ my += HEIGHT(c) + gappx; -+ } -+ else -+ resize(c, m->wx + mw + gappx/ns, m->wy + gappx, m->ww - mw - (2*c->bw) - gappx*(5-ns)/2, m->wh - (2*c->bw) - 2*gappx, False); -+} -+ - void - detach(Client *c) - { --- -2.21.0 - diff --git a/dwm.suckless.org/patches/deck/index.md b/dwm.suckless.org/patches/deck/index.md @@ -11,14 +11,15 @@ a deck of cards, hence the name. deck-rmaster ------------ The vanilla patch doesn't respect the master-area which is defined by -the rmaster-patch. To make it work with the rmaster-patch use the -dwm-deck-rmaster version. +the rmaster-patch. To make it work with the rmaster-patch apply the +dwm-deck-rmaster patch on top of the dwm-deck patch. deck-tilegap ------------ -The vanilla patch doesn't respect patches which add gaps (ex. tilegap). +The vanilla patch doesn't work properly with patches which add gaps. This means that when the deck-layout is activated gaps are omitted. -To make it work with the tilegap-patch use the dwm-deck-tilegap version. +To make it work with the tilegap-patch apply the dwm-deck-tilegap patch +on top of the dwm-deck patch. Showcase -------- @@ -49,12 +50,7 @@ Download -------- * [dwm-deck-6.0.diff](dwm-deck-6.0.diff) * [dwm-deck-rmaster-6.1.diff](dwm-deck-rmaster-6.1.diff) -* [dwm-deck-tilegap-6.2.diff](dwm-deck-tilegap-6.2.diff) - -TODO ----- -Make deck-rmaster and -tilegap simpler by pulling out the deck-logic. -They should be used on top of the vanilla deck-patch and not separately. +* [dwm-deck-tilegap-6.1.diff](dwm-deck-tilegap-6.2.diff) Author ------