Adding push no master variant patch

This commit is contained in:
bakkeby 2019-09-15 00:22:24 +02:00
parent 70012dbf2c
commit 713c4e6197
8 changed files with 65 additions and 7 deletions

View File

@ -13,7 +13,7 @@ Refer to [https://dwm.suckless.org/](https://dwm.suckless.org/) for details on t
### Changelog:
2019-09-14 - Added setborderpx and selfrestart patches
2019-09-14 - Added setborderpx, selfrestart and push (no master variant) patches
2019-09-13 - Added titlecolor and push patches

View File

@ -235,10 +235,10 @@ static Key keys[] = {
{ MODKEY|ShiftMask, XK_j, rotatestack, {.i = +1 } },
{ MODKEY|ShiftMask, XK_k, rotatestack, {.i = -1 } },
#endif // ROTATESTACK_PATCH
#if PUSH_PATCH
#if PUSH_PATCH || PUSH_NO_MASTER_PATCH
{ MODKEY|ControlMask, XK_j, pushdown, {0} },
{ MODKEY|ControlMask, XK_k, pushup, {0} },
#endif // PUSH_PATCH
#endif // PUSH_PATCH / PUSH_NO_MASTER_PATCH
{ MODKEY, XK_i, incnmaster, {.i = +1 } },
{ MODKEY, XK_d, incnmaster, {.i = -1 } },
{ MODKEY, XK_h, setmfact, {.f = -0.05} },

View File

@ -40,7 +40,9 @@
#include "pertag.c"
#endif
#if PUSH_PATCH
#if PUSH_NO_MASTER_PATCH
#include "push_no_master.c"
#elif PUSH_PATCH
#include "push.c"
#endif

View File

@ -36,7 +36,9 @@
#include "ewmhtags.h"
#endif
#if PUSH_PATCH
#if PUSH_NO_MASTER_PATCH
#include "push_no_master.h"
#elif PUSH_PATCH
#include "push.h"
#endif

View File

@ -1,4 +1,4 @@
Client *
static Client *
nextc(Client *c, float f)
{
if (!f)
@ -34,7 +34,7 @@ pushup(const Arg *arg)
if (selmon->clients == c)
selmon->clients = sel;
else {
for (c = selmon->clients; c->next != sel->next; c = c->next);
for (c f selmon->clients; c->next != sel->next; c = c->next);
c->next = sel;
}
} else {

43
patch/push_no_master.c Normal file
View File

@ -0,0 +1,43 @@
Client *
prevt(Client *c)
{
Client *p, *r;
for (p = selmon->clients, r = NULL; p && p != c; p = p->next)
if (!p->isfloating && ISVISIBLE(p))
r = p;
return r;
}
void
pushup(const Arg *arg)
{
Client *sel = selmon->sel, *c;
if (!sel || sel->isfloating)
return;
if ((c = prevt(sel)) && c != nexttiled(selmon->clients)) {
detach(sel);
sel->next = c;
for (c = selmon->clients; c->next != sel->next; c = c->next);
c->next = sel;
}
focus(sel);
arrange(selmon);
}
void
pushdown(const Arg *arg)
{
Client *sel = selmon->sel, *c;
if (!sel || sel->isfloating || sel == nexttiled(selmon->clients))
return;
if ((c = nexttiled(sel->next))) {
detach(sel);
sel->next = c->next;
c->next = sel;
}
focus(sel);
arrange(selmon);
}

3
patch/push_no_master.h Normal file
View File

@ -0,0 +1,3 @@
Client * prevt(Client *c);
static void pushup(const Arg *arg);
static void pushdown(const Arg *arg);

View File

@ -169,6 +169,14 @@
*/
#define PUSH_PATCH 0
/* This patch provides a way to move clients up and down inside the client list,
* but does not push up or down into the master area (except that it does not take
* nmaster into account).
* This takes precedence over the push patch above.
* https://dwm.suckless.org/patches/push/
*/
#define PUSH_NO_MASTER_PATCH 0
/* By default, windows only resize from the bottom right corner. With this
* patch the mouse is warped to the nearest corner and you resize from there.
* https://dwm.suckless.org/patches/resizecorners/