dwm-deck-6.0.diff - sites - public wiki contents of suckless.org
(HTM) git clone git://git.suckless.org/sites
(DIR) Log
(DIR) Files
(DIR) Refs
---
dwm-deck-6.0.diff (3099B)
---
1 From cb3cac91db32403bb581aecbc2957b00bb49c898 Mon Sep 17 00:00:00 2001
2 From: aleks <aleks.stier@icloud.com>
3 Date: Mon, 6 May 2019 16:34:58 +0200
4 Subject: [PATCH] Add deck-layout
5
6 deck is a dwm-layout which is inspired by the TTWM window manager.
7 It applies the monocle-layout to the clients in the stack.
8 The master-client is still visible. The stacked clients are like
9 a deck of cards, hence the name.
10
11 The vanilla patch doesn't work properly with patches which add gaps.
12 This means that when the deck-layout is activated gaps are omitted.
13 To make it work with the tilegap-patch apply the dwm-deck-tilegap patch
14 on top of the dwm-deck patch.
15
16 The vanilla patch doesn't respect the master-area which is defined by
17 the rmaster-patch. To make it work with the rmaster-patch apply the
18 dwm-deck-rmaster patch on top of the dwm-deck patch.
19 ---
20 config.def.h | 2 ++
21 dwm.c | 26 ++++++++++++++++++++++++++
22 2 files changed, 28 insertions(+)
23
24 diff --git a/config.def.h b/config.def.h
25 index 77ff358..55d8a07 100644
26 --- a/config.def.h
27 +++ b/config.def.h
28 @@ -32,6 +32,7 @@ static const Layout layouts[] = {
29 { "[]=", tile }, /* first entry is default */
30 { "><>", NULL }, /* no layout function means floating behavior */
31 { "[M]", monocle },
32 + { "[D]", deck },
33 };
34
35 /* key definitions */
36 @@ -66,6 +67,7 @@ static Key keys[] = {
37 { MODKEY, XK_t, setlayout, {.v = &layouts[0]} },
38 { MODKEY, XK_f, setlayout, {.v = &layouts[1]} },
39 { MODKEY, XK_m, setlayout, {.v = &layouts[2]} },
40 + { MODKEY, XK_c, setlayout, {.v = &layouts[3]} },
41 { MODKEY, XK_space, setlayout, {0} },
42 { MODKEY|ShiftMask, XK_space, togglefloating, {0} },
43 { MODKEY, XK_0, view, {.ui = ~0 } },
44 diff --git a/dwm.c b/dwm.c
45 index 1d78655..356ab44 100644
46 --- a/dwm.c
47 +++ b/dwm.c
48 @@ -171,6 +171,7 @@ static void configure(Client *c);
49 static void configurenotify(XEvent *e);
50 static void configurerequest(XEvent *e);
51 static Monitor *createmon(void);
52 +static void deck(Monitor *m);
53 static void destroynotify(XEvent *e);
54 static void detach(Client *c);
55 static void detachstack(Client *c);
56 @@ -669,6 +670,31 @@ destroynotify(XEvent *e) {
57 unmanage(c, True);
58 }
59
60 +void
61 +deck(Monitor *m) {
62 + unsigned int i, n, h, mw, my;
63 + Client *c;
64 +
65 + for(n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++);
66 + if(n == 0)
67 + return;
68 +
69 + if(n > m->nmaster) {
70 + mw = m->nmaster ? m->ww * m->mfact : 0;
71 + snprintf(m->ltsymbol, sizeof m->ltsymbol, "[%d]", n - m->nmaster);
72 + }
73 + else
74 + mw = m->ww;
75 + for(i = my = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++)
76 + if(i < m->nmaster) {
77 + h = (m->wh - my) / (MIN(n, m->nmaster) - i);
78 + resize(c, m->wx, m->wy + my, mw - (2*c->bw), h - (2*c->bw), False);
79 + my += HEIGHT(c);
80 + }
81 + else
82 + resize(c, m->wx + mw, m->wy, m->ww - mw - (2*c->bw), m->wh - (2*c->bw), False);
83 +}
84 +
85 void
86 detach(Client *c) {
87 Client **tc;
88 --
89 2.21.0
90