forked from mirror/dwl
Compare commits
10 commits
Author | SHA1 | Date | |
---|---|---|---|
|
7c3c5ffcc2 | ||
|
81c8ebf677 | ||
|
a89872f02e | ||
|
a41d817979 | ||
|
a4e4fd3d25 | ||
|
0259e9a8ab | ||
|
04079a0946 | ||
|
daf5ee475f | ||
|
156a13d9f9 | ||
|
dcb7a4d910 |
4 changed files with 70 additions and 1 deletions
2
Makefile
2
Makefile
|
@ -16,7 +16,7 @@ LDLIBS = `$(PKG_CONFIG) --libs $(PKGS)` $(LIBS)
|
|||
all: dwl
|
||||
dwl: dwl.o util.o
|
||||
$(CC) dwl.o util.o $(LDLIBS) $(LDFLAGS) $(DWLCFLAGS) -o $@
|
||||
dwl.o: dwl.c config.mk config.h client.h xdg-shell-protocol.h wlr-layer-shell-unstable-v1-protocol.h
|
||||
dwl.o: dwl.c push.c config.mk config.h client.h xdg-shell-protocol.h wlr-layer-shell-unstable-v1-protocol.h
|
||||
util.o: util.c util.h
|
||||
|
||||
# wayland-scanner is a tool which generates C headers and rigging for Wayland
|
||||
|
|
2
dwl.c
2
dwl.c
|
@ -408,7 +408,9 @@ static Atom netatom[NetLast];
|
|||
#endif
|
||||
|
||||
/* configuration, allows nested code to access above variables */
|
||||
#include "push.h"
|
||||
#include "config.h"
|
||||
#include "push.c"
|
||||
|
||||
/* attempt to encapsulate suck into one file */
|
||||
#include "client.h"
|
||||
|
|
63
push.c
Normal file
63
push.c
Normal file
|
@ -0,0 +1,63 @@
|
|||
static Client *
|
||||
nexttiled(Client *sel) {
|
||||
Client *c;
|
||||
wl_list_for_each(c, &sel->link, link) {
|
||||
if (&c->link == &clients)
|
||||
break; /* don't wrap */
|
||||
if (!c->isfloating && VISIBLEON(c, selmon))
|
||||
return c;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static Client *
|
||||
prevtiled(Client *sel) {
|
||||
Client *c;
|
||||
wl_list_for_each_reverse(c, &sel->link, link) {
|
||||
if (&c->link == &clients)
|
||||
break; /* don't wrap */
|
||||
if (!c->isfloating && VISIBLEON(c, selmon))
|
||||
return c;
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void
|
||||
pushup(const Arg *arg) {
|
||||
Client *sel = focustop(selmon);
|
||||
Client *c;
|
||||
|
||||
if(!sel || sel->isfloating)
|
||||
return;
|
||||
if((c = prevtiled(sel))) {
|
||||
/* attach before c */
|
||||
wl_list_remove(&sel->link);
|
||||
wl_list_insert(c->link.prev, &sel->link);
|
||||
} else {
|
||||
/* move to the end */
|
||||
wl_list_remove(&sel->link);
|
||||
wl_list_insert(clients.prev, &sel->link);
|
||||
}
|
||||
focusclient(sel, 1);
|
||||
arrange(selmon);
|
||||
}
|
||||
|
||||
static void
|
||||
pushdown(const Arg *arg) {
|
||||
Client *sel = focustop(selmon);
|
||||
Client *c;
|
||||
|
||||
if(!sel || sel->isfloating)
|
||||
return;
|
||||
if((c = nexttiled(sel))) {
|
||||
/* attach after c */
|
||||
wl_list_remove(&sel->link);
|
||||
wl_list_insert(&c->link, &sel->link);
|
||||
} else {
|
||||
/* move to the front */
|
||||
wl_list_remove(&sel->link);
|
||||
wl_list_insert(&clients, &sel->link);
|
||||
}
|
||||
focusclient(sel, 1);
|
||||
arrange(selmon);
|
||||
}
|
4
push.h
Normal file
4
push.h
Normal file
|
@ -0,0 +1,4 @@
|
|||
static Client *nexttiled(Client *sel);
|
||||
static Client *prevtiled(Client *sel);
|
||||
static void pushdown(const Arg *arg);
|
||||
static void pushup(const Arg *arg);
|
Loading…
Reference in a new issue