mirror of
				https://codeberg.org/dwl/dwl-patches.git
				synced 2025-10-31 12:04:23 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			129 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			129 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 74ba3dcaa28fd7eb1fca48851d640ec322093de2 Mon Sep 17 00:00:00 2001
 | |
| From: "Devin J. Pohly" <djpohly@gmail.com>
 | |
| Date: Thu, 4 Mar 2021 00:45:50 -0600
 | |
| Subject: [PATCH] port dwm "push" patch to dwl
 | |
| MIME-Version: 1.0
 | |
| Content-Type: text/plain; charset=UTF-8
 | |
| Content-Transfer-Encoding: 8bit
 | |
| 
 | |
| Signed-off-by: Leonardo Hernández Hernández <leohdz172@proton.me>
 | |
| ---
 | |
|  Makefile |  3 +--
 | |
|  dwl.c    |  2 ++
 | |
|  push.c   | 63 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 | |
|  push.h   |  4 ++++
 | |
|  4 files changed, 70 insertions(+), 2 deletions(-)
 | |
|  create mode 100644 push.c
 | |
|  create mode 100644 push.h
 | |
| 
 | |
| diff --git a/Makefile b/Makefile
 | |
| index e3e64262..447191e8 100644
 | |
| --- a/Makefile
 | |
| +++ b/Makefile
 | |
| @@ -16,8 +16,7 @@ LDLIBS    = `$(PKG_CONFIG) --libs $(PKGS)` $(LIBS)
 | |
|  all: dwl
 | |
|  dwl: dwl.o util.o
 | |
|  	$(CC) dwl.o util.o $(DWLCFLAGS) $(LDFLAGS) $(LDLIBS) -o $@
 | |
| -dwl.o: dwl.c client.h config.h config.mk cursor-shape-v1-protocol.h pointer-constraints-unstable-v1-protocol.h wlr-layer-shell-unstable-v1-protocol.h xdg-shell-protocol.h
 | |
| -util.o: util.c util.h
 | |
| +dwl.o: dwl.c push.h client.h config.h config.mk cursor-shape-v1-protocol.h pointer-constraints-unstable-v1-protocol.h wlr-layer-shell-unstable-v1-protocol.h xdg-shell-protocol.h
 | |
|  
 | |
|  # wayland-scanner is a tool which generates C headers and rigging for Wayland
 | |
|  # protocols, which are specified in XML. wlroots requires you to rig these up
 | |
| diff --git a/dwl.c b/dwl.c
 | |
| index 6f041a0d..60b65794 100644
 | |
| --- a/dwl.c
 | |
| +++ b/dwl.c
 | |
| @@ -421,7 +421,9 @@ static xcb_atom_t 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"
 | |
| diff --git a/push.c b/push.c
 | |
| new file mode 100644
 | |
| index 00000000..323c317e
 | |
| --- /dev/null
 | |
| +++ b/push.c
 | |
| @@ -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);
 | |
| +}
 | |
| diff --git a/push.h b/push.h
 | |
| new file mode 100644
 | |
| index 00000000..59c0f80e
 | |
| --- /dev/null
 | |
| +++ b/push.h
 | |
| @@ -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);
 | |
| -- 
 | |
| 2.45.2
 | |
| 
 | 
