diff options
| -rw-r--r-- | client.c | 8 | ||||
| -rw-r--r-- | draw.c | 2 | ||||
| -rw-r--r-- | dwm.1 | 8 | ||||
| -rw-r--r-- | dwm.h | 3 | ||||
| -rw-r--r-- | event.c | 4 | ||||
| -rw-r--r-- | tag.c | 27 | 
6 files changed, 42 insertions, 10 deletions
| @@ -66,8 +66,8 @@ focusnext(Arg *arg)  	if(!sel)  		return; -	if(!(c = getnext(sel->next))) -		c = getnext(clients); +	if(!(c = getnext(sel->next, tsel))) +		c = getnext(clients, tsel);  	if(c) {  		higher(c);  		c->revert = sel; @@ -410,8 +410,8 @@ zoom(Arg *arg)  	if(!sel)  		return; -	if(sel == getnext(clients) && sel->next)  { -		if((c = getnext(sel->next))) +	if(sel == getnext(clients, tsel) && sel->next)  { +		if((c = getnext(sel->next, tsel)))  			sel = c;  	} @@ -97,7 +97,7 @@ drawall()  {  	Client *c; -	for(c = clients; c; c = getnext(c->next)) +	for(c = clients; c; c = getnext(c->next, tsel))  		drawtitle(c);  	drawstatus();  } @@ -93,6 +93,14 @@ Append  tag to current  .B window  .TP +.B Control-Shift-[0..n] +Replace current +.B window +of +.B nth +tag with current tag. +.B window +.TP  .B Control-Button1  Zooms the clicked  .B window @@ -145,7 +145,8 @@ extern int xerror(Display *dsply, XErrorEvent *ee);  extern void appendtag(Arg *arg);  extern void dofloat(Arg *arg);  extern void dotile(Arg *arg); -extern Client *getnext(Client *c); +extern Client *getnext(Client *c, unsigned int t); +extern void heretag(Arg *arg);  extern void replacetag(Arg *arg);  extern void settags(Client *c);  extern void view(Arg *arg); @@ -35,6 +35,10 @@ Key key[] = {  	{ Mod1Mask,				XK_m,		maximize,		{ 0 } },   	{ Mod1Mask,				XK_space,	dotile,		{ 0 } },   	{ Mod1Mask,				XK_Return,	zoom,		{ 0 } }, +	{ ControlMask|ShiftMask,XK_0,		heretag,	{ .i = Tscratch } },  +	{ ControlMask|ShiftMask,XK_1,		heretag,	{ .i = Tdev } },  +	{ ControlMask|ShiftMask,XK_2,		heretag,	{ .i = Twww } },  +	{ ControlMask|ShiftMask,XK_3,		heretag,	{ .i = Twork } },   	{ Mod1Mask|ShiftMask,	XK_0,		replacetag,		{ .i = Tscratch } },   	{ Mod1Mask|ShiftMask,	XK_1,		replacetag,		{ .i = Tdev } },   	{ Mod1Mask|ShiftMask,	XK_2,		replacetag,		{ .i = Twww } },  @@ -49,7 +49,7 @@ dofloat(Arg *arg)  			ban(c);  	}  	if(sel && !sel->tags[tsel]) { -		if((sel = getnext(clients))) { +		if((sel = getnext(clients, tsel))) {  			higher(sel);  			focus(sel);  		} @@ -106,7 +106,7 @@ dotile(Arg *arg)  			ban(c);  	}  	if(!sel || (sel && !sel->tags[tsel])) { -		if((sel = getnext(clients))) { +		if((sel = getnext(clients, tsel))) {  			higher(sel);  			focus(sel);  		} @@ -115,13 +115,32 @@ dotile(Arg *arg)  }  Client * -getnext(Client *c) +getnext(Client *c, unsigned int t)  { -	for(; c && !c->tags[tsel]; c = c->next); +	for(; c && !c->tags[t]; c = c->next);  	return c;  }  void +heretag(Arg *arg) +{ +	int i; +	Client *c; + +	if(arg->i == tsel) +		return; + +	if(!(c = getnext(clients, arg->i))) +		return; + +	for(i = 0; i < TLast; i++) +		c->tags[i] = NULL; +	c->tags[tsel] = tags[tsel]; +	arrange(NULL); +	focus(c); +} + +void  replacetag(Arg *arg)  {  	int i; | 
