mirror of
				https://codeberg.org/dwl/dwl-patches.git
				synced 2025-10-31 03:54:19 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 7d8cfa63681830a3af4512799b8260f8249bc514 Mon Sep 17 00:00:00 2001
 | |
| From: sewn <sewn@disroot.org>
 | |
| Date: Sun, 8 Sep 2024 22:49:33 +0300
 | |
| Subject: [PATCH] add feature to switch to next available layout
 | |
| 
 | |
| ported from suckless cyclelayouts to be slightly more useful
 | |
| https://dwm.suckless.org/patches/cyclelayouts/
 | |
| ---
 | |
|  config.def.h |  2 ++
 | |
|  dwl.c        | 12 ++++++++++++
 | |
|  2 files changed, 14 insertions(+)
 | |
| 
 | |
| diff --git a/config.def.h b/config.def.h
 | |
| index 22d2171..f88a615 100644
 | |
| --- a/config.def.h
 | |
| +++ b/config.def.h
 | |
| @@ -34,6 +34,7 @@ static const Layout layouts[] = {
 | |
|  	{ "[]=",      tile },
 | |
|  	{ "><>",      NULL },    /* no layout function means floating behavior */
 | |
|  	{ "[M]",      monocle },
 | |
| +	{ NULL,       NULL }, /* terminate */
 | |
|  };
 | |
|  
 | |
|  /* monitors */
 | |
| @@ -140,6 +141,7 @@ static const Key keys[] = {
 | |
|  	{ MODKEY,                    XKB_KEY_f,          setlayout,      {.v = &layouts[1]} },
 | |
|  	{ MODKEY,                    XKB_KEY_m,          setlayout,      {.v = &layouts[2]} },
 | |
|  	{ MODKEY,                    XKB_KEY_space,      setlayout,      {0} },
 | |
| +	{ MODKEY,                    XKB_KEY_n,          nextlayout,    {0} },
 | |
|  	{ MODKEY|WLR_MODIFIER_SHIFT, XKB_KEY_space,      togglefloating, {0} },
 | |
|  	{ MODKEY,                    XKB_KEY_e,         togglefullscreen, {0} },
 | |
|  	{ MODKEY,                    XKB_KEY_0,          view,           {.ui = ~0} },
 | |
| diff --git a/dwl.c b/dwl.c
 | |
| index a2711f6..a66d9d9 100644
 | |
| --- a/dwl.c
 | |
| +++ b/dwl.c
 | |
| @@ -308,6 +308,7 @@ static void motionnotify(uint32_t time, struct wlr_input_device *device, double
 | |
|  		double sy, double sx_unaccel, double sy_unaccel);
 | |
|  static void motionrelative(struct wl_listener *listener, void *data);
 | |
|  static void moveresize(const Arg *arg);
 | |
| +static void nextlayout(const Arg *arg);
 | |
|  static void outputmgrapply(struct wl_listener *listener, void *data);
 | |
|  static void outputmgrapplyortest(struct wlr_output_configuration_v1 *config, int test);
 | |
|  static void outputmgrtest(struct wl_listener *listener, void *data);
 | |
| @@ -1927,6 +1928,17 @@ moveresize(const Arg *arg)
 | |
|  	}
 | |
|  }
 | |
|  
 | |
| +void
 | |
| +nextlayout(const Arg *arg)
 | |
| +{
 | |
| +	Layout *l;
 | |
| +	for(l = (Layout *)layouts; l != selmon->lt[selmon->sellt]; l++);
 | |
| +	if(l->symbol && (l + 1)->symbol)
 | |
| +		setlayout(&((Arg) { .v = (l + 1) }));
 | |
| +	else
 | |
| +		setlayout(&((Arg) { .v = layouts }));
 | |
| +}
 | |
| +
 | |
|  void
 | |
|  outputmgrapply(struct wl_listener *listener, void *data)
 | |
|  {
 | |
| -- 
 | |
| 2.46.0
 | |
| 
 | 
