sites

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

dwm-deck-20170909-ceac8c9.diff (2509B)


      1 From c1b5c188abe327751f9abce367acc1e7be727514 Mon Sep 17 00:00:00 2001
      2 From: Joshua Haase <hahj87@gmail.com>
      3 Date: Tue, 16 Aug 2016 10:00:05 -0500
      4 Subject: [PATCH] Apply a modified deck patch.
      5 
      6 ---
      7  config.def.h |  3 +++
      8  layouts.c    | 29 +++++++++++++++++++++++++++++
      9  2 files changed, 32 insertions(+)
     10  create mode 100644 layouts.c
     11 
     12 diff --git a/config.def.h b/config.def.h
     13 index a9ac303..37ec7f3 100644
     14 --- a/config.def.h
     15 +++ b/config.def.h
     16 @@ -36,11 +36,13 @@ static const float mfact     = 0.55; /* factor of master area size [0.05..0.95]
     17  static const int nmaster     = 1;    /* number of clients in master area */
     18  static const int resizehints = 1;    /* 1 means respect size hints in tiled resizals */
     19  
     20 +#include "layouts.c"
     21  static const Layout layouts[] = {
     22  	/* symbol     arrange function */
     23  	{ "[]=",      tile },    /* first entry is default */
     24  	{ "><>",      NULL },    /* no layout function means floating behavior */
     25  	{ "[M]",      monocle },
     26 +	{ "H[]",      deck },
     27  };
     28  
     29  /* key definitions */
     30 @@ -76,6 +78,7 @@ static Key keys[] = {
     31  	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} },
     32  	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} },
     33  	{ MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} },
     34 +	{ MODKEY,                       XK_c,      setlayout,      {.v = &layouts[3]} },
     35  	{ MODKEY,                       XK_space,  setlayout,      {0} },
     36  	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
     37  	{ MODKEY,                       XK_0,      view,           {.ui = ~0 } },
     38 diff --git a/layouts.c b/layouts.c
     39 new file mode 100644
     40 index 0000000..e2c17f2
     41 --- /dev/null
     42 +++ b/layouts.c
     43 @@ -0,0 +1,29 @@
     44 +static void deck(Monitor *m);
     45 +
     46 +void
     47 +deck(Monitor *m) {
     48 +	int dn;
     49 +	unsigned int i, n, h, mw, my;
     50 +	Client *c;
     51 +
     52 +	for(n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), n++);
     53 +	if(n == 0)
     54 +		return;
     55 +
     56 +	dn = n - m->nmaster;
     57 +	if(dn > 0) /* override layout symbol */
     58 +		snprintf(m->ltsymbol, sizeof m->ltsymbol, "D %d", dn);
     59 +
     60 +	if(n > m->nmaster)
     61 +		mw = m->nmaster ? m->ww * m->mfact : 0;
     62 +	else
     63 +		mw = m->ww;
     64 +	for(i = my = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next), i++)
     65 +		if(i < m->nmaster) {
     66 +			h = (m->wh - my) / (MIN(n, m->nmaster) - i);
     67 +			resize(c, m->wx, m->wy + my, mw - (2*c->bw), h - (2*c->bw), False);
     68 +			my += HEIGHT(c);
     69 +		}
     70 +		else
     71 +			resize(c, m->wx + mw, m->wy, m->ww - mw - (2*c->bw), m->wh - (2*c->bw), False);
     72 +}
     73 -- 
     74 2.14.1
     75