| dwm-multimon-5-push_up_down-6.4.patch - sites - public wiki contents of suckles… | |
| git clone git://git.suckless.org/sites | |
| Log | |
| Files | |
| Refs | |
| --- | |
| dwm-multimon-5-push_up_down-6.4.patch (5895B) | |
| --- | |
| 1 From 9a762d6e157bb057c7296f94579ab9632882d60f Mon Sep 17 00:00:00 2001 | |
| 2 From: "Gary B. Genett" <[email protected]> | |
| 3 Date: Sun, 19 Feb 2023 09:37:49 -0800 | |
| 4 Subject: patches/push: dwm-push-20201112-61bb8b2.diff | |
| 5 MIME-Version: 1.0 | |
| 6 Content-Type: multipart/mixed; boundary="------------2.37.4" | |
| 7 | |
| 8 This is a multi-part message in MIME format. | |
| 9 --------------2.37.4 | |
| 10 Content-Type: text/plain; charset=UTF-8; format=fixed | |
| 11 Content-Transfer-Encoding: 8bit | |
| 12 | |
| 13 | |
| 14 modified from sites: 38b351cf3689ff3fa4845d35ce9894fd9253dbb8 | |
| 15 --- | |
| 16 config.def.h | 2 ++ | |
| 17 dwm.c | 59 +++++++++++++++++++++++++++++++++++++++++++++++++++++… | |
| 18 2 files changed, 61 insertions(+) | |
| 19 | |
| 20 | |
| 21 --------------2.37.4 | |
| 22 Content-Type: text/x-patch; name="0005-patches-push-dwm-push-20201112-61… | |
| 23 Content-Transfer-Encoding: 8bit | |
| 24 Content-Disposition: attachment; filename="0005-patches-push-dwm-push-20… | |
| 25 | |
| 26 diff --git a/config.def.h b/config.def.h | |
| 27 index fcfe8245a438686f276ffc9a4df17695382ed58b..fd00f7080db9271912d0e435… | |
| 28 --- a/config.def.h | |
| 29 +++ b/config.def.h | |
| 30 @@ -71,20 +71,22 @@ static char dmenumon[2] = "0"; /* component of dmenu… | |
| 31 static const char *dmenucmd[] = { "dmenu_run", "-m", dmenumon, "-fn", d… | |
| 32 static const char *termcmd[] = { "st", NULL }; | |
| 33 | |
| 34 static const Key keys[] = { | |
| 35 /* modifier key function argu… | |
| 36 { MODKEY, XK_p, spawn, {.v … | |
| 37 { MODKEY|ShiftMask, XK_Return, spawn, {.v … | |
| 38 { MODKEY, XK_b, togglebar, {0} … | |
| 39 { MODKEY, XK_j, focusstack, {.i … | |
| 40 { MODKEY, XK_k, focusstack, {.i … | |
| 41 + { MODKEY|ShiftMask, XK_j, pushdown, {0} … | |
| 42 + { MODKEY|ShiftMask, XK_k, pushup, {0} … | |
| 43 { MODKEY, XK_i, incnmaster, {.i … | |
| 44 { MODKEY, XK_d, incnmaster, {.i … | |
| 45 { MODKEY, XK_h, setmfact, {.f … | |
| 46 { MODKEY, XK_l, setmfact, {.f … | |
| 47 { MODKEY, XK_Return, zoom, {0} … | |
| 48 { MODKEY, XK_Tab, view, {0} … | |
| 49 { MODKEY|ShiftMask, XK_c, killclient, {0} … | |
| 50 { MODKEY, XK_t, setlayout, {.v … | |
| 51 { MODKEY, XK_f, setlayout, {.v … | |
| 52 { MODKEY, XK_m, setlayout, {.v … | |
| 53 diff --git a/dwm.c b/dwm.c | |
| 54 index 77ff310e03edbf42ac2dd55471962ce259b63071..5aa229611a27b8aa94330831… | |
| 55 --- a/dwm.c | |
| 56 +++ b/dwm.c | |
| 57 @@ -178,25 +178,28 @@ static void grabbuttons(Client *c, int focused); | |
| 58 static void grabkeys(void); | |
| 59 static void incnmaster(const Arg *arg); | |
| 60 static void keypress(XEvent *e); | |
| 61 static void killclient(const Arg *arg); | |
| 62 static void manage(Window w, XWindowAttributes *wa); | |
| 63 static void mappingnotify(XEvent *e); | |
| 64 static void maprequest(XEvent *e); | |
| 65 static void monocle(Monitor *m); | |
| 66 static void motionnotify(XEvent *e); | |
| 67 static void movemouse(const Arg *arg); | |
| 68 +static Client *prevtiled(Client *c); | |
| 69 static Client *nexttiled(Client *c); | |
| 70 static void pop(Client *c); | |
| 71 static void propertynotify(XEvent *e); | |
| 72 static void quit(const Arg *arg); | |
| 73 static Monitor *recttomon(int x, int y, int w, int h); | |
| 74 +static void pushdown(const Arg *arg); | |
| 75 +static void pushup(const Arg *arg); | |
| 76 static void resize(Client *c, int x, int y, int w, int h, int interact); | |
| 77 static void resizeclient(Client *c, int x, int y, int w, int h); | |
| 78 static void resizemouse(const Arg *arg); | |
| 79 static void restack(Monitor *m); | |
| 80 static void run(void); | |
| 81 static void scan(void); | |
| 82 static int sendevent(Client *c, Atom proto); | |
| 83 static void sendmon(Client *c, Monitor *m); | |
| 84 static void setclientstate(Client *c, long state); | |
| 85 static void setfocus(Client *c); | |
| 86 @@ -1206,20 +1209,31 @@ movemouse(const Arg *arg) | |
| 87 } | |
| 88 } while (ev.type != ButtonRelease); | |
| 89 XUngrabPointer(dpy, CurrentTime); | |
| 90 if ((m = recttomon(c->x, c->y, c->w, c->h)) != selmon) { | |
| 91 sendmon(c, m); | |
| 92 selmon = m; | |
| 93 focus(NULL); | |
| 94 } | |
| 95 } | |
| 96 | |
| 97 +Client * | |
| 98 +prevtiled(Client *c) | |
| 99 +{ | |
| 100 + Client *p, *r; | |
| 101 + | |
| 102 + for(p = selmon->clients, r = NULL; p && p != c; p = p->next) | |
| 103 + if(!p->isfloating && ISVISIBLE(p)) | |
| 104 + r = p; | |
| 105 + return r; | |
| 106 +} | |
| 107 + | |
| 108 Client * | |
| 109 nexttiled(Client *c) | |
| 110 { | |
| 111 for (; c && (c->isfloating || !ISVISIBLE(c)); c = c->next); | |
| 112 return c; | |
| 113 } | |
| 114 | |
| 115 void | |
| 116 pop(Client *c) | |
| 117 { | |
| 118 @@ -1279,20 +1293,65 @@ recttomon(int x, int y, int w, int h) | |
| 119 int a, area = 0; | |
| 120 | |
| 121 for (m = mons; m; m = m->next) | |
| 122 if ((a = INTERSECT(x, y, w, h, m)) > area) { | |
| 123 area = a; | |
| 124 r = m; | |
| 125 } | |
| 126 return r; | |
| 127 } | |
| 128 | |
| 129 +void | |
| 130 +pushdown(const Arg *arg) | |
| 131 +{ | |
| 132 + Client *sel = selmon->sel, *c; | |
| 133 + | |
| 134 + if(!sel || sel->isfloating) | |
| 135 + return; | |
| 136 + if((c = nexttiled(sel->next))) { | |
| 137 + detach(sel); | |
| 138 + sel->next = c->next; | |
| 139 + c->next = sel; | |
| 140 + } else { | |
| 141 + detach(sel); | |
| 142 + attach(sel); | |
| 143 + } | |
| 144 + focus(sel); | |
| 145 + arrange(selmon); | |
| 146 +} | |
| 147 + | |
| 148 +void | |
| 149 +pushup(const Arg *arg) | |
| 150 +{ | |
| 151 + Client *sel = selmon->sel, *c; | |
| 152 + | |
| 153 + if(!sel || sel->isfloating) | |
| 154 + return; | |
| 155 + if((c = prevtiled(sel))) { | |
| 156 + detach(sel); | |
| 157 + sel->next = c; | |
| 158 + if(selmon->clients == c) | |
| 159 + selmon->clients = sel; | |
| 160 + else { | |
| 161 + for(c = selmon->clients; c->next != sel->next; … | |
| 162 + c->next = sel; | |
| 163 + } | |
| 164 + } else { | |
| 165 + for(c = sel; c->next; c = c->next); | |
| 166 + detach(sel); | |
| 167 + sel->next = NULL; | |
| 168 + c->next = sel; | |
| 169 + } | |
| 170 + focus(sel); | |
| 171 + arrange(selmon); | |
| 172 +} | |
| 173 + | |
| 174 void | |
| 175 resize(Client *c, int x, int y, int w, int h, int interact) | |
| 176 { | |
| 177 if (applysizehints(c, &x, &y, &w, &h, interact)) | |
| 178 resizeclient(c, x, y, w, h); | |
| 179 } | |
| 180 | |
| 181 void | |
| 182 resizeclient(Client *c, int x, int y, int w, int h) | |
| 183 { | |
| 184 | |
| 185 --------------2.37.4-- | |
| 186 | |
| 187 |