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