Add gridlayout patch 🙋🏻
This commit is contained in:
		
							parent
							
								
									e4e38120dd
								
							
						
					
					
						commit
						0db52b38d8
					
				
					 5 changed files with 47 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -47,11 +47,13 @@ static const int nmaster     = 1;    /* number of clients in master area */
 | 
			
		|||
static const int resizehints = 1;    /* 1 means respect size hints in tiled resizals */
 | 
			
		||||
static const int lockfullscreen = 1; /* 1 will force focus on the fullscreen window */
 | 
			
		||||
 | 
			
		||||
#include "layouts.c"
 | 
			
		||||
static const Layout layouts[] = {
 | 
			
		||||
	/* symbol     arrange function */
 | 
			
		||||
	{ "[]=",      tile },    /* first entry is default */
 | 
			
		||||
	{ "><>",      NULL },    /* no layout function means floating behavior */
 | 
			
		||||
	{ "[M]",      monocle },
 | 
			
		||||
	{ "HHH",      grid },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* key definitions */
 | 
			
		||||
| 
						 | 
				
			
			@ -90,6 +92,7 @@ static Key keys[] = {
 | 
			
		|||
	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} },
 | 
			
		||||
	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} },
 | 
			
		||||
	{ MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} },
 | 
			
		||||
	{ MODKEY,                       XK_g,      setlayout,      {.v = &layouts[3]} },
 | 
			
		||||
	{ MODKEY|ShiftMask,             XK_f,      fullscreen,     {0} },
 | 
			
		||||
	{ MODKEY,                       XK_space,  setlayout,      {0} },
 | 
			
		||||
	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,6 +23,11 @@ static const char *colors[][3]      = {
 | 
			
		|||
	[SchemeSel]  = { col_gray4, col_cyan,  col_cyan  },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
static const char *const autostart[] = {
 | 
			
		||||
	"st", NULL,
 | 
			
		||||
	NULL /* terminate */
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* tagging */
 | 
			
		||||
static const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9" };
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										10
									
								
								config.def.h.rej
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								config.def.h.rej
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,10 @@
 | 
			
		|||
--- config.def.h
 | 
			
		||||
+++ config.def.h
 | 
			
		||||
@@ -78,6 +80,7 @@ static Key keys[] = {
 | 
			
		||||
 	{ MODKEY,                       XK_t,      setlayout,      {.v = &layouts[0]} },
 | 
			
		||||
 	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} },
 | 
			
		||||
 	{ MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} },
 | 
			
		||||
+	{ MODKEY,                       XK_g,      setlayout,      {.v = &layouts[3]} },
 | 
			
		||||
 	{ MODKEY,                       XK_space,  setlayout,      {0} },
 | 
			
		||||
 	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} },
 | 
			
		||||
 	{ MODKEY,                       XK_0,      view,           {.ui = ~0 } },
 | 
			
		||||
							
								
								
									
										2
									
								
								config.h
									
										
									
									
									
								
							
							
						
						
									
										2
									
								
								config.h
									
										
									
									
									
								
							| 
						 | 
				
			
			@ -64,6 +64,7 @@ static const Layout layouts[] = {
 | 
			
		|||
	{ "[]=",      tile },    /* first entry is default */
 | 
			
		||||
	{ "><>",      NULL },    /* no layout function means floating behavior */
 | 
			
		||||
	{ "[M]",      monocle },
 | 
			
		||||
	{ "HHH",      grid },
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/* key definitions */
 | 
			
		||||
| 
						 | 
				
			
			@ -135,6 +136,7 @@ static Key keys[] = {
 | 
			
		|||
	{ MODKEY,                       XK_f,      setlayout,      {.v = &layouts[1]} },
 | 
			
		||||
	// Monocle layout
 | 
			
		||||
	{ MODKEY,                       XK_m,      setlayout,      {.v = &layouts[2]} },
 | 
			
		||||
	{ MODKEY,                       XK_g,      setlayout,      {.v = &layouts[3]} },
 | 
			
		||||
 | 
			
		||||
	{ MODKEY|ShiftMask,             XK_space,  setlayout,      {0} },
 | 
			
		||||
	{ MODKEY|ShiftMask,             XK_f,  togglefloating,     {0} },
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										27
									
								
								layouts.c
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								layouts.c
									
										
									
									
									
										Normal file
									
								
							| 
						 | 
				
			
			@ -0,0 +1,27 @@
 | 
			
		|||
void
 | 
			
		||||
grid(Monitor *m) {
 | 
			
		||||
	unsigned int i, n, cx, cy, cw, ch, aw, ah, cols, rows;
 | 
			
		||||
	Client *c;
 | 
			
		||||
 | 
			
		||||
	for(n = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next))
 | 
			
		||||
		n++;
 | 
			
		||||
 | 
			
		||||
	/* grid dimensions */
 | 
			
		||||
	for(rows = 0; rows <= n/2; rows++)
 | 
			
		||||
		if(rows*rows >= n)
 | 
			
		||||
			break;
 | 
			
		||||
	cols = (rows && (rows - 1) * rows >= n) ? rows - 1 : rows;
 | 
			
		||||
 | 
			
		||||
	/* window geoms (cell height/width) */
 | 
			
		||||
	ch = m->wh / (rows ? rows : 1);
 | 
			
		||||
	cw = m->ww / (cols ? cols : 1);
 | 
			
		||||
	for(i = 0, c = nexttiled(m->clients); c; c = nexttiled(c->next)) {
 | 
			
		||||
		cx = m->wx + (i / rows) * cw;
 | 
			
		||||
		cy = m->wy + (i % rows) * ch;
 | 
			
		||||
		/* adjust height/width of last row/column's windows */
 | 
			
		||||
		ah = ((i + 1) % rows == 0) ? m->wh - ch * rows : 0;
 | 
			
		||||
		aw = (i >= rows * (cols - 1)) ? m->ww - cw * cols : 0;
 | 
			
		||||
		resize(c, cx, cy, cw - 2 * c->bw + aw, ch - 2 * c->bw + ah, False);
 | 
			
		||||
		i++;
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue