sites

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

dwm-attachbelow-toggleable-6.2.diff (6046B)


      1 From ee036687ed9e1bb973b9e34694a57cf5dd67652d Mon Sep 17 00:00:00 2001
      2 From: Jonathan Hodgson <git@jonathanh.co.uk>
      3 Date: Mon, 6 May 2019 18:34:40 +0100
      4 Subject: [PATCH 1/4] Adds attach below option
      5 
      6 ---
      7  config.def.h |  1 +
      8  dwm.c        | 31 ++++++++++++++++++++++++++++---
      9  2 files changed, 29 insertions(+), 3 deletions(-)
     10 
     11 diff --git a/config.def.h b/config.def.h
     12 index 1c0b587..51ad933 100644
     13 --- a/config.def.h
     14 +++ b/config.def.h
     15 @@ -35,6 +35,7 @@ static const Rule rules[] = {
     16  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 +static const int attachbelow = 1;    /* 1 means attach at the end */
     20  
     21  static const Layout layouts[] = {
     22  	/* symbol     arrange function */
     23 diff --git a/dwm.c b/dwm.c
     24 index 4465af1..bd715a2 100644
     25 --- a/dwm.c
     26 +++ b/dwm.c
     27 @@ -147,6 +147,7 @@ static int applysizehints(Client *c, int *x, int *y, int *w, int *h, int interac
     28  static void arrange(Monitor *m);
     29  static void arrangemon(Monitor *m);
     30  static void attach(Client *c);
     31 +static void attachBelow(Client *c);
     32  static void attachstack(Client *c);
     33  static void buttonpress(XEvent *e);
     34  static void checkotherwm(void);
     35 @@ -405,6 +406,21 @@ attach(Client *c)
     36  	c->next = c->mon->clients;
     37  	c->mon->clients = c;
     38  }
     39 +void
     40 +attachBelow(Client *c)
     41 +{
     42 +	//If there is nothing on the monitor or the selected client is floating, attach as normal
     43 +	if(c->mon->sel == NULL || c->mon->sel == c || c->mon->sel->isfloating) {
     44 +		attach(c);
     45 +		return;
     46 +	}
     47 +
     48 +	//Set the new client's next property to the same as the currently selected clients next
     49 +	c->next = c->mon->sel->next;
     50 +	//Set the currently selected clients next property to the new client
     51 +	c->mon->sel->next = c;
     52 +
     53 +}
     54  
     55  void
     56  attachstack(Client *c)
     57 @@ -1062,7 +1078,10 @@ manage(Window w, XWindowAttributes *wa)
     58  		c->isfloating = c->oldstate = trans != None || c->isfixed;
     59  	if (c->isfloating)
     60  		XRaiseWindow(dpy, c->win);
     61 -	attach(c);
     62 +	if( attachbelow )
     63 +		attachBelow(c);
     64 +	else
     65 +		attach(c);
     66  	attachstack(c);
     67  	XChangeProperty(dpy, root, netatom[NetClientList], XA_WINDOW, 32, PropModeAppend,
     68  		(unsigned char *) &(c->win), 1);
     69 @@ -1417,7 +1436,10 @@ sendmon(Client *c, Monitor *m)
     70  	detachstack(c);
     71  	c->mon = m;
     72  	c->tags = m->tagset[m->seltags]; /* assign tags of target monitor */
     73 -	attach(c);
     74 +	if( attachbelow )
     75 +		attachBelow(c);
     76 +	else
     77 +		attach(c);
     78  	attachstack(c);
     79  	focus(NULL);
     80  	arrange(NULL);
     81 @@ -1897,7 +1919,10 @@ updategeom(void)
     82  					m->clients = c->next;
     83  					detachstack(c);
     84  					c->mon = mons;
     85 -					attach(c);
     86 +					if( attachbelow )
     87 +						attachBelow(c);
     88 +					else
     89 +						attach(c);
     90  					attachstack(c);
     91  				}
     92  				if (m == selmon)
     93 -- 
     94 2.21.0
     95 
     96 
     97 From e212c1d8cbdcc56c33c717131dfa7c1689e27e9f Mon Sep 17 00:00:00 2001
     98 From: Jonathan Hodgson <git@jonathanh.co.uk>
     99 Date: Mon, 6 May 2019 19:27:57 +0100
    100 Subject: [PATCH 2/4] fixes comment
    101 
    102 ---
    103  config.def.h | 2 +-
    104  1 file changed, 1 insertion(+), 1 deletion(-)
    105 
    106 diff --git a/config.def.h b/config.def.h
    107 index 51ad933..cb8053a 100644
    108 --- a/config.def.h
    109 +++ b/config.def.h
    110 @@ -35,7 +35,7 @@ static const Rule rules[] = {
    111  static const float mfact     = 0.55; /* factor of master area size [0.05..0.95] */
    112  static const int nmaster     = 1;    /* number of clients in master area */
    113  static const int resizehints = 1;    /* 1 means respect size hints in tiled resizals */
    114 -static const int attachbelow = 1;    /* 1 means attach at the end */
    115 +static const int attachbelow = 1;    /* 1 means attach after the currently active window */
    116  
    117  static const Layout layouts[] = {
    118  	/* symbol     arrange function */
    119 -- 
    120 2.21.0
    121 
    122 
    123 From 7568ea3f8756e7e82b30c4943556ae646a445d1c Mon Sep 17 00:00:00 2001
    124 From: Jonathan Hodgson <git@jonathanh.co.uk>
    125 Date: Mon, 6 May 2019 20:00:30 +0100
    126 Subject: [PATCH 3/4] Makes changes to man page to reflect attach below patch
    127 
    128 ---
    129  dwm.1 | 3 +++
    130  1 file changed, 3 insertions(+)
    131 
    132 diff --git a/dwm.1 b/dwm.1
    133 index 13b3729..fb6e76c 100644
    134 --- a/dwm.1
    135 +++ b/dwm.1
    136 @@ -29,6 +29,9 @@ color. The tags of the focused window are indicated with a filled square in the
    137  top left corner.  The tags which are applied to one or more windows are
    138  indicated with an empty square in the top left corner.
    139  .P
    140 +The attach below patch makes newly spawned windows attach after the currently
    141 +selected window
    142 +.P
    143  dwm draws a small border around windows to indicate the focus state.
    144  .SH OPTIONS
    145  .TP
    146 -- 
    147 2.21.0
    148 
    149 
    150 From 362b95a5b9f91673f27f3e3343b5738df3c9d6e9 Mon Sep 17 00:00:00 2001
    151 From: Jonathan Hodgson <git@jonathanh.co.uk>
    152 Date: Sun, 2 Jun 2019 15:11:57 +0100
    153 Subject: [PATCH 4/4] Allows attach below to be toggled
    154 
    155 ---
    156  config.def.h | 2 +-
    157  dwm.c        | 6 ++++++
    158  2 files changed, 7 insertions(+), 1 deletion(-)
    159 
    160 diff --git a/config.def.h b/config.def.h
    161 index cb8053a..b4d35aa 100644
    162 --- a/config.def.h
    163 +++ b/config.def.h
    164 @@ -35,7 +35,7 @@ static const Rule rules[] = {
    165  static const float mfact     = 0.55; /* factor of master area size [0.05..0.95] */
    166  static const int nmaster     = 1;    /* number of clients in master area */
    167  static const int resizehints = 1;    /* 1 means respect size hints in tiled resizals */
    168 -static const int attachbelow = 1;    /* 1 means attach after the currently active window */
    169 +static int attachbelow = 1;    /* 1 means attach after the currently active window */
    170  
    171  static const Layout layouts[] = {
    172  	/* symbol     arrange function */
    173 diff --git a/dwm.c b/dwm.c
    174 index bd715a2..5d88653 100644
    175 --- a/dwm.c
    176 +++ b/dwm.c
    177 @@ -148,6 +148,7 @@ static void arrange(Monitor *m);
    178  static void arrangemon(Monitor *m);
    179  static void attach(Client *c);
    180  static void attachBelow(Client *c);
    181 +static void toggleAttachBelow();
    182  static void attachstack(Client *c);
    183  static void buttonpress(XEvent *e);
    184  static void checkotherwm(void);
    185 @@ -422,6 +423,11 @@ attachBelow(Client *c)
    186  
    187  }
    188  
    189 +void toggleAttachBelow()
    190 +{
    191 +	attachbelow = !attachbelow;
    192 +}
    193 +
    194  void
    195  attachstack(Client *c)
    196  {
    197 -- 
    198 2.21.0
    199