changed shortcuts as described on the mailinglist, added sanity checks for ratios during tile (fallback to wah if clients would get too small), documented that new stuff/shortcuts in dwm(1)
							parent
							
								
									da91dfc948
								
							
						
					
					
						commit
						796925089c
					
				
							
								
								
									
										14
									
								
								config.arg.h
								
								
								
								
							
							
						
						
									
										14
									
								
								config.arg.h
								
								
								
								
							|  | @ -32,7 +32,7 @@ static Layout layout[] = { \ | |||
| }; | ||||
| #define NMASTER			1	/* clients in master area */ | ||||
| #define HRATIO			.8	/* horizontal ratio of tile */ | ||||
| #define VRATIO			.8	/* vertical ratio of tile */ | ||||
| #define VRATIO			.9	/* vertical ratio of tile */ | ||||
| #define SNAP			32	/* snap pixel */ | ||||
| 
 | ||||
| /* key definitions */ | ||||
|  | @ -47,14 +47,14 @@ static Key key[] = { \ | |||
| 		"exec urxvtcd -tr -bg '#222' -fg '#eee' -cr '#eee' +sb -fn '"FONT"'" }, \ | ||||
| 	{ MODKEY,			XK_space,	setlayout,	NULL }, \ | ||||
| 	{ MODKEY,			XK_b,		togglebar,	NULL }, \ | ||||
| 	{ MODKEY,			XK_h,		incvratio,	".1" }, \ | ||||
| 	{ MODKEY,			XK_h,		inchratio,	".1" }, \ | ||||
| 	{ MODKEY,			XK_l,		incvratio,	"-.1" }, \ | ||||
| 	{ MODKEY,			XK_l,		inchratio,	"-.1" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_j,		incnmaster,	"1" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_k,		incnmaster,	"-1" }, \ | ||||
| 	{ MODKEY,			XK_h,		incnmaster,	"1" }, \ | ||||
| 	{ MODKEY,			XK_l,		incnmaster,	"-1" }, \ | ||||
| 	{ MODKEY,			XK_j,		focusclient,	"1" }, \ | ||||
| 	{ MODKEY,			XK_k,		focusclient,	"-1" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_h,		inchratio,	".1" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_l,		inchratio,	"-.1" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_j,		incvratio,	"-.1" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_k,		incvratio,	".1" }, \ | ||||
| 	{ MODKEY,			XK_m,		togglemax,	NULL }, \ | ||||
| 	{ MODKEY,			XK_Return,	zoom,		NULL }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_space,	togglefloating,	NULL }, \ | ||||
|  |  | |||
|  | @ -45,12 +45,14 @@ static Key key[] = { \ | |||
| 	{ MODKEY,			XK_p,		spawn, 		"exe=`dmenu_path | dmenu` && exec $exe" }, \ | ||||
| 	{ MODKEY,			XK_space,	setlayout,	NULL }, \ | ||||
| 	{ MODKEY,			XK_b,		togglebar,	NULL }, \ | ||||
| 	{ MODKEY,			XK_h,		incvratio,	".1" }, \ | ||||
| 	{ MODKEY,			XK_l,		incvratio,	"-.1" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_j,		incnmaster,	"1" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_k,		incnmaster,	"-1" }, \ | ||||
| 	{ MODKEY,			XK_h,		incnmaster,	"1" }, \ | ||||
| 	{ MODKEY,			XK_l,		incnmaster,	"-1" }, \ | ||||
| 	{ MODKEY,			XK_j,		focusclient,	"1" }, \ | ||||
| 	{ MODKEY,			XK_k,		focusclient,	"-1" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_h,		inchratio,	".1" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_l,		inchratio,	"-.1" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_j,		incvratio,	"-.1" }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_k,		incvratio,	".1" }, \ | ||||
| 	{ MODKEY,			XK_m,		togglemax,	NULL }, \ | ||||
| 	{ MODKEY,			XK_Return,	zoom,		NULL }, \ | ||||
| 	{ MODKEY|ShiftMask,		XK_space,	togglefloating,	NULL }, \ | ||||
|  |  | |||
							
								
								
									
										18
									
								
								dwm.1
								
								
								
								
							
							
						
						
									
										18
									
								
								dwm.1
								
								
								
								
							|  | @ -68,17 +68,23 @@ Focus next window. | |||
| .B Mod1\-k | ||||
| Focus previous window. | ||||
| .TP | ||||
| .B Mod1\-Shift\-j | ||||
| .B Mod1\-l | ||||
| Increase the number of windows in the master area (tiled layout only). | ||||
| .TP | ||||
| .B Mod1\-Shift\-k | ||||
| .B Mod1\-h | ||||
| Decrease the number of windows in the master area (tiled layout only). | ||||
| .TP | ||||
| .B Mod1\-l | ||||
| Increase master area width (tiled layout only). | ||||
| .B Mod1\-Shift\-j | ||||
| Increase vertical tile ratio, effects tile heights (tiled layout only). | ||||
| .TP | ||||
| .B Mod1\-h | ||||
| Decrease master area width (tiled layout only). | ||||
| .B Mod1\-Shift\-k | ||||
| Decrease vertical tile ratio, effects tile heights (tiled layout only). | ||||
| .TP | ||||
| .B Mod1\-Shift\-l | ||||
| Increase horizontal tile ratio, effects master area width (tiled layout only). | ||||
| .TP | ||||
| .B Mod1\-Shift\-h | ||||
| Decrease horizontal tile ratio, effects master area width (tiled layout only). | ||||
| .TP | ||||
| .B Mod1\-m | ||||
| Toggles maximization of current window (floating layout only). | ||||
|  |  | |||
							
								
								
									
										53
									
								
								layout.c
								
								
								
								
							
							
						
						
									
										53
									
								
								layout.c
								
								
								
								
							|  | @ -25,21 +25,27 @@ spow(double x, double y) | |||
| 
 | ||||
| static void | ||||
| tile(void) { | ||||
| 	double mscale = 0, tscale = 0, sum = 0; | ||||
| 	Bool mmaxtile = False, smaxtile = False; /* fallback tiling */ | ||||
| 	double mscale = 0, sscale = 0, sum = 0; | ||||
| 	unsigned int i, n, nx, ny, nw, nh, mw, tw; | ||||
| 	Client *c; | ||||
| 
 | ||||
| 	/* preparation */ | ||||
| 	for(n = 0, c = nexttiled(clients); c; c = nexttiled(c->next)) | ||||
| 		n++; | ||||
| 
 | ||||
| 	nx = wax; | ||||
| 	ny = way; | ||||
| 	mw = (n <= nmaster) ? waw :  waw / (1 + hratio); | ||||
| 	tw = waw - mw; | ||||
| 
 | ||||
| 	if(n > 0) { | ||||
| 		if(n < nmaster) { | ||||
| 		if(n <= nmaster) { | ||||
| 			for(i = 0; i < n; i++) | ||||
| 				sum += spow(vratio, i); | ||||
| 			mscale = wah / sum; | ||||
| 			if(vratio >= 1) | ||||
| 				mmaxtile = bh > (mscale * spow(vratio, 0)); | ||||
| 			else | ||||
| 				mmaxtile = bh > (mscale * spow(vratio, n - 1)); | ||||
| 		} | ||||
| 		else { | ||||
| 			for(i = 0; i < nmaster; i++) | ||||
|  | @ -47,11 +53,18 @@ tile(void) { | |||
| 			mscale = wah / sum; | ||||
| 			for(sum = 0, i = 0; i < (n - nmaster); i++) | ||||
| 				sum += spow(vratio, i); | ||||
| 			tscale = wah / sum; | ||||
| 			sscale = wah / sum; | ||||
| 			if(vratio >= 1) { | ||||
| 				mmaxtile = bh > (mscale * spow(vratio, 0)); | ||||
| 				smaxtile = bh > (sscale * spow(vratio, 0)); | ||||
| 			} | ||||
| 			else { | ||||
| 				mmaxtile = bh > (mscale * spow(vratio, nmaster - 1)); | ||||
| 				smaxtile = bh > (sscale * spow(vratio, n - nmaster - 1)); | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	nx = wax; | ||||
| 	ny = way; | ||||
| 	/* tiling */ | ||||
| 	for(i = 0, c = clients; c; c = c->next) | ||||
| 		if(isvisible(c)) { | ||||
| 			unban(c); | ||||
|  | @ -60,25 +73,29 @@ tile(void) { | |||
| 			c->ismax = False; | ||||
| 			if(i < nmaster) { /* master window */ | ||||
| 				nw = mw - 2 * c->border; | ||||
| 				if(i + 1 == n || i + 1 == nmaster) | ||||
| 					nh = (way + wah) - ny - (2 * c->border); | ||||
| 				if(mmaxtile) { | ||||
| 					ny = way; | ||||
| 					nh = wah - 2 * c->border; | ||||
| 				} | ||||
| 				else if(i + 1 == (n < nmaster ? n : nmaster)) | ||||
| 					nh = (way + wah) - ny - 2 * c->border; | ||||
| 				else | ||||
| 					nh = (mscale * spow(vratio, i)) - (2 * c->border); | ||||
| 					nh = (mscale * spow(vratio, i)) - 2 * c->border; | ||||
| 			} | ||||
| 			else { /* tile window */ | ||||
| 				nw = tw - 2 * c->border; | ||||
| 				if(i == nmaster) { | ||||
| 					ny = way; | ||||
| 					nx = wax + mw; | ||||
| 				} | ||||
| 				nw = tw - 2 * c->border; | ||||
| 				if(i + 1 == n) | ||||
| 					nh = (way + wah) - ny - (2 * c->border); | ||||
| 				if(smaxtile) { | ||||
| 					ny = way; | ||||
| 					nh = wah - 2 * c->border; | ||||
| 				} | ||||
| 				else if(i + 1 == n) | ||||
| 					nh = (way + wah) - ny - 2 * c->border; | ||||
| 				else | ||||
| 					nh = (tscale * spow(vratio, i - nmaster)) - (2 * c->border); | ||||
| 			} | ||||
| 			if(nh < bh) { | ||||
| 				nh = bh; | ||||
| 				ny = way + wah - nh; | ||||
| 					nh = (sscale * spow(vratio, i - nmaster)) - 2 * c->border; | ||||
| 			} | ||||
| 			resize(c, nx, ny, nw, nh, False); | ||||
| 			ny += nh; | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue