mirror of
https://codeberg.org/frosty/dwm.git
synced 2024-09-19 11:46:53 -04:00
patch: push
This commit is contained in:
parent
c6d1a98575
commit
c2117b2f1e
|
@ -69,6 +69,8 @@ static const Key keys[] = {
|
||||||
{ MODKEY, XK_b, togglebar, {0} },
|
{ MODKEY, XK_b, togglebar, {0} },
|
||||||
{ MODKEY, XK_j, focusstack, {.i = +1 } },
|
{ MODKEY, XK_j, focusstack, {.i = +1 } },
|
||||||
{ MODKEY, XK_k, focusstack, {.i = -1 } },
|
{ MODKEY, XK_k, focusstack, {.i = -1 } },
|
||||||
|
{ MODKEY|ControlMask, XK_j, pushdown, {0} },
|
||||||
|
{ MODKEY|ControlMask, XK_k, pushup, {0} },
|
||||||
{ MODKEY, XK_i, incnmaster, {.i = +1 } },
|
{ MODKEY, XK_i, incnmaster, {.i = +1 } },
|
||||||
{ MODKEY, XK_d, incnmaster, {.i = -1 } },
|
{ MODKEY, XK_d, incnmaster, {.i = -1 } },
|
||||||
{ MODKEY, XK_h, setmfact, {.f = -0.05} },
|
{ MODKEY, XK_h, setmfact, {.f = -0.05} },
|
||||||
|
|
56
dwm.c
56
dwm.c
|
@ -189,7 +189,10 @@ static void motionnotify(XEvent *e);
|
||||||
static void movemouse(const Arg *arg);
|
static void movemouse(const Arg *arg);
|
||||||
static Client *nexttiled(Client *c);
|
static Client *nexttiled(Client *c);
|
||||||
static void pop(Client *c);
|
static void pop(Client *c);
|
||||||
|
static Client *prevtiled(Client *c);
|
||||||
static void propertynotify(XEvent *e);
|
static void propertynotify(XEvent *e);
|
||||||
|
static void pushdown(const Arg *arg);
|
||||||
|
static void pushup(const Arg *arg);
|
||||||
static void quit(const Arg *arg);
|
static void quit(const Arg *arg);
|
||||||
static Monitor *recttomon(int x, int y, int w, int h);
|
static Monitor *recttomon(int x, int y, int w, int h);
|
||||||
static void resize(Client *c, int x, int y, int w, int h, int interact);
|
static void resize(Client *c, int x, int y, int w, int h, int interact);
|
||||||
|
@ -1259,6 +1262,16 @@ pop(Client *c)
|
||||||
arrange(c->mon);
|
arrange(c->mon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Client *
|
||||||
|
prevtiled(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
|
void
|
||||||
propertynotify(XEvent *e)
|
propertynotify(XEvent *e)
|
||||||
{
|
{
|
||||||
|
@ -1296,6 +1309,49 @@ propertynotify(XEvent *e)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
pushdown(const Arg *arg) {
|
||||||
|
Client *sel = selmon->sel, *c;
|
||||||
|
|
||||||
|
if(!sel || sel->isfloating)
|
||||||
|
return;
|
||||||
|
if((c = nexttiled(sel->next))) {
|
||||||
|
detach(sel);
|
||||||
|
sel->next = c->next;
|
||||||
|
c->next = sel;
|
||||||
|
} else {
|
||||||
|
detach(sel);
|
||||||
|
attach(sel);
|
||||||
|
}
|
||||||
|
focus(sel);
|
||||||
|
arrange(selmon);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
pushup(const Arg *arg) {
|
||||||
|
Client *sel = selmon->sel, *c;
|
||||||
|
|
||||||
|
if(!sel || sel->isfloating)
|
||||||
|
return;
|
||||||
|
if((c = prevtiled(sel))) {
|
||||||
|
detach(sel);
|
||||||
|
sel->next = c;
|
||||||
|
if(selmon->clients == c)
|
||||||
|
selmon->clients = sel;
|
||||||
|
else {
|
||||||
|
for(c = selmon->clients; c->next != sel->next; c = c->next);
|
||||||
|
c->next = sel;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
for(c = sel; c->next; c = c->next);
|
||||||
|
detach(sel);
|
||||||
|
sel->next = NULL;
|
||||||
|
c->next = sel;
|
||||||
|
}
|
||||||
|
focus(sel);
|
||||||
|
arrange(selmon);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
quit(const Arg *arg)
|
quit(const Arg *arg)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue