implemented viewextend and added M-S-C-n shortcuts for extending the current view... updated man page (works great!) nice feature
This commit is contained in:
		
							parent
							
								
									d7413ffd2d
								
							
						
					
					
						commit
						292ccc4c43
					
				| @ -43,6 +43,9 @@ static Key key[] = { \ | |||||||
| 	{ MODKEY|ShiftMask,		XK_Return,	spawn, \ | 	{ MODKEY|ShiftMask,		XK_Return,	spawn, \ | ||||||
| 		{ .cmd = "exec urxvt +sb -tr -bg black -fg '#eeeeee' -cr '#eeeeee' +sb " \ | 		{ .cmd = "exec urxvt +sb -tr -bg black -fg '#eeeeee' -cr '#eeeeee' +sb " \ | ||||||
| 			"-fn '-*-terminus-medium-*-*-*-12-*-*-*-*-*-iso10646-*'" } }, \ | 			"-fn '-*-terminus-medium-*-*-*-12-*-*-*-*-*-iso10646-*'" } }, \ | ||||||
|  | 	{ MODKEY|ControlMask|ShiftMask,	XK_1,		viewextend,	{ .i = 0 } }, \ | ||||||
|  | 	{ MODKEY|ShiftMask,		XK_2,		viewextend,	{ .i = 1 } }, \ | ||||||
|  | 	{ MODKEY|ShiftMask,		XK_3,		viewextend,	{ .i = 2 } }, \ | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #define RULES \ | #define RULES \ | ||||||
|  | |||||||
| @ -44,6 +44,11 @@ static Key key[] = { \ | |||||||
| 	{ MODKEY|ShiftMask,		XK_c,		killclient,	{ 0 } }, \ | 	{ MODKEY|ShiftMask,		XK_c,		killclient,	{ 0 } }, \ | ||||||
| 	{ MODKEY|ShiftMask,		XK_q,		quit,		{ 0 } }, \ | 	{ MODKEY|ShiftMask,		XK_q,		quit,		{ 0 } }, \ | ||||||
| 	{ MODKEY|ShiftMask,		XK_Return,	spawn,		{ .cmd = "exec xterm" } }, \ | 	{ MODKEY|ShiftMask,		XK_Return,	spawn,		{ .cmd = "exec xterm" } }, \ | ||||||
|  | 	{ MODKEY|ControlMask|ShiftMask,	XK_0,		viewextend,	{ .i = 0 } }, \ | ||||||
|  | 	{ MODKEY|ControlMask|ShiftMask,	XK_1,		viewextend,	{ .i = 1 } }, \ | ||||||
|  | 	{ MODKEY|ControlMask|ShiftMask,	XK_2,		viewextend,	{ .i = 2 } }, \ | ||||||
|  | 	{ MODKEY|ControlMask|ShiftMask,	XK_3,		viewextend,	{ .i = 3 } }, \ | ||||||
|  | 	{ MODKEY|ControlMask|ShiftMask,	XK_4,		viewextend,	{ .i = 4 } }, \ | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #define RULES \ | #define RULES \ | ||||||
|  | |||||||
							
								
								
									
										4
									
								
								draw.c
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								draw.c
									
									
									
									
									
								
							| @ -109,9 +109,9 @@ drawstatus() | |||||||
| 		dc.x += dc.w; | 		dc.x += dc.w; | ||||||
| 		dc.w = textw(tags[i]); | 		dc.w = textw(tags[i]); | ||||||
| 		if(istile) | 		if(istile) | ||||||
| 			drawtext(tags[i], tsel[i]); | 			drawtext(tags[i], seltag[i]); | ||||||
| 		else | 		else | ||||||
| 			drawtext(tags[i], !tsel[i]); | 			drawtext(tags[i], !seltag[i]); | ||||||
| 	} | 	} | ||||||
| 	x = dc.x + dc.w; | 	x = dc.x + dc.w; | ||||||
| 	dc.w = textw(stext); | 	dc.w = textw(stext); | ||||||
|  | |||||||
							
								
								
									
										21
									
								
								dwm.1
									
									
									
									
									
								
							
							
						
						
									
										21
									
								
								dwm.1
									
									
									
									
									
								
							| @ -36,14 +36,21 @@ prints version information to standard output, then exits. | |||||||
| .B Standard input | .B Standard input | ||||||
| is read and displayed in the status text area. | is read and displayed in the status text area. | ||||||
| .TP | .TP | ||||||
| .B Button[1-3] | .B Button[1,3] | ||||||
| click on a tag label focuses that tag. | click on a tag label focuses that | ||||||
|  | .B tag. | ||||||
|  | .TP | ||||||
|  | .B Button2 | ||||||
|  | click on a tag label (un)extends the current | ||||||
|  | .B tag. | ||||||
| .TP | .TP | ||||||
| .B Button[1,4] | .B Button[1,4] | ||||||
| click on the bar focuses the previous tag. | click on the bar focuses the previous | ||||||
|  | .B tag. | ||||||
| .TP | .TP | ||||||
| .B Button[2,5] | .B Button[2,5] | ||||||
| click on the bar focuses the next tag. | click on the bar focuses the next | ||||||
|  | .B tag. | ||||||
| .SS Keyboard commands | .SS Keyboard commands | ||||||
| .TP | .TP | ||||||
| .B Mod1-Return | .B Mod1-Return | ||||||
| @ -108,6 +115,12 @@ Append | |||||||
| .B nth tag | .B nth tag | ||||||
| to current | to current | ||||||
| .B window. | .B window. | ||||||
|  | .TP | ||||||
|  | .B Mod1-Control-Shift-[0..n] | ||||||
|  | (Un)extends | ||||||
|  | .B nth tag | ||||||
|  | with current | ||||||
|  | .B tag. | ||||||
| .SS Mouse commands | .SS Mouse commands | ||||||
| .TP | .TP | ||||||
| .B Mod1-Button1 | .B Mod1-Button1 | ||||||
|  | |||||||
							
								
								
									
										3
									
								
								dwm.h
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								dwm.h
									
									
									
									
									
								
							| @ -74,7 +74,7 @@ extern unsigned int ntags; | |||||||
| extern void (*handler[LASTEvent])(XEvent *); | extern void (*handler[LASTEvent])(XEvent *); | ||||||
| extern void (*arrange)(Arg *); | extern void (*arrange)(Arg *); | ||||||
| extern Atom wmatom[WMLast], netatom[NetLast]; | extern Atom wmatom[WMLast], netatom[NetLast]; | ||||||
| extern Bool running, issel, *tsel; | extern Bool running, issel, *seltag; | ||||||
| extern Client *clients, *sel; | extern Client *clients, *sel; | ||||||
| extern Cursor cursor[CurLast]; | extern Cursor cursor[CurLast]; | ||||||
| extern DC dc; | extern DC dc; | ||||||
| @ -128,6 +128,7 @@ extern void replacetag(Arg *arg); | |||||||
| extern void settags(Client *c); | extern void settags(Client *c); | ||||||
| extern void togglemode(Arg *arg); | extern void togglemode(Arg *arg); | ||||||
| extern void view(Arg *arg); | extern void view(Arg *arg); | ||||||
|  | extern void viewextend(Arg *arg); | ||||||
| extern void viewnext(Arg *arg); | extern void viewnext(Arg *arg); | ||||||
| extern void viewprev(Arg *arg); | extern void viewprev(Arg *arg); | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										7
									
								
								event.c
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								event.c
									
									
									
									
									
								
							| @ -108,11 +108,8 @@ buttonpress(XEvent *e) | |||||||
| 			for(a.i = 0; a.i < ntags; a.i++) { | 			for(a.i = 0; a.i < ntags; a.i++) { | ||||||
| 				x += textw(tags[a.i]); | 				x += textw(tags[a.i]); | ||||||
| 				if(ev->x < x) { | 				if(ev->x < x) { | ||||||
| 					if(ev->button == Button3) { | 					if(ev->button == Button3) | ||||||
| 						tsel[a.i] = True; | 						viewextend(&a); | ||||||
| 						arrange(NULL); |  | ||||||
| 						drawall(); |  | ||||||
| 					} |  | ||||||
| 					else | 					else | ||||||
| 						view(&a); | 						view(&a); | ||||||
| 					return; | 					return; | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								main.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								main.c
									
									
									
									
									
								
							| @ -83,7 +83,7 @@ xerrorstart(Display *dsply, XErrorEvent *ee) | |||||||
| /* extern */ | /* extern */ | ||||||
| 
 | 
 | ||||||
| char stext[1024]; | char stext[1024]; | ||||||
| Bool *tsel; | Bool *seltag; | ||||||
| int screen, sx, sy, sw, sh, bx, by, bw, bh, mw; | int screen, sx, sy, sw, sh, bx, by, bw, bh, mw; | ||||||
| unsigned int ntags; | unsigned int ntags; | ||||||
| Atom wmatom[WMLast], netatom[NetLast]; | Atom wmatom[WMLast], netatom[NetLast]; | ||||||
| @ -213,8 +213,8 @@ main(int argc, char *argv[]) | |||||||
| 	initrregs(); | 	initrregs(); | ||||||
| 
 | 
 | ||||||
| 	for(ntags = 0; tags[ntags]; ntags++); | 	for(ntags = 0; tags[ntags]; ntags++); | ||||||
| 	tsel = emallocz(sizeof(Bool) * ntags); | 	seltag = emallocz(sizeof(Bool) * ntags); | ||||||
| 	tsel[DEFTAG] = True; | 	seltag[DEFTAG] = True; | ||||||
| 
 | 
 | ||||||
| 	/* style */ | 	/* style */ | ||||||
| 	dc.bg = getcolor(BGCOLOR); | 	dc.bg = getcolor(BGCOLOR); | ||||||
|  | |||||||
							
								
								
									
										25
									
								
								tag.c
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								tag.c
									
									
									
									
									
								
							| @ -181,7 +181,7 @@ isvisible(Client *c) | |||||||
| 	unsigned int i; | 	unsigned int i; | ||||||
| 
 | 
 | ||||||
| 	for(i = 0; i < ntags; i++) | 	for(i = 0; i < ntags; i++) | ||||||
| 		if(c->tags[i] && tsel[i]) | 		if(c->tags[i] && seltag[i]) | ||||||
| 			return True; | 			return True; | ||||||
| 	return False; | 	return False; | ||||||
| } | } | ||||||
| @ -229,7 +229,7 @@ settags(Client *c) | |||||||
| 	} | 	} | ||||||
| 	if(!matched) | 	if(!matched) | ||||||
| 		for(i = 0; i < ntags; i++) | 		for(i = 0; i < ntags; i++) | ||||||
| 			c->tags[i] = tsel[i]; | 			c->tags[i] = seltag[i]; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| @ -245,8 +245,21 @@ view(Arg *arg) | |||||||
| 	unsigned int i; | 	unsigned int i; | ||||||
| 
 | 
 | ||||||
| 	for(i = 0; i < ntags; i++) | 	for(i = 0; i < ntags; i++) | ||||||
| 		tsel[i] = False; | 		seltag[i] = False; | ||||||
| 	tsel[arg->i] = True; | 	seltag[arg->i] = True; | ||||||
|  | 	arrange(NULL); | ||||||
|  | 	drawall(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | void | ||||||
|  | viewextend(Arg *arg) | ||||||
|  | { | ||||||
|  | 	unsigned int i; | ||||||
|  | 
 | ||||||
|  | 	seltag[arg->i] = !seltag[arg->i]; | ||||||
|  | 	for(i = 0; !seltag[i] && i < ntags; i++); | ||||||
|  | 	if(i == ntags) | ||||||
|  | 		seltag[arg->i] = True; /* cannot toggle last view */ | ||||||
| 	arrange(NULL); | 	arrange(NULL); | ||||||
| 	drawall(); | 	drawall(); | ||||||
| } | } | ||||||
| @ -256,7 +269,7 @@ viewnext(Arg *arg) | |||||||
| { | { | ||||||
| 	unsigned int i; | 	unsigned int i; | ||||||
| 
 | 
 | ||||||
| 	for(i = 0; !tsel[i]; i++); | 	for(i = 0; !seltag[i]; i++); | ||||||
| 	arg->i = (i < ntags-1) ? i+1 : 0; | 	arg->i = (i < ntags-1) ? i+1 : 0; | ||||||
| 	view(arg); | 	view(arg); | ||||||
| } | } | ||||||
| @ -266,7 +279,7 @@ viewprev(Arg *arg) | |||||||
| { | { | ||||||
| 	unsigned int i; | 	unsigned int i; | ||||||
| 
 | 
 | ||||||
| 	for(i = 0; !tsel[i]; i++); | 	for(i = 0; !seltag[i]; i++); | ||||||
| 	arg->i = (i > 0) ? i-1 : ntags-1; | 	arg->i = (i > 0) ? i-1 : ntags-1; | ||||||
| 	view(arg); | 	view(arg); | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user