changed focusmon/tagmon to work on prev/next instead (-1/+1), changed shortcuts to Mod1-, Mod1-. and Mod1-Shift-, Mod1-Shift-.
This commit is contained in:
		
							parent
							
								
									5dd92c7655
								
							
						
					
					
						commit
						a9e145fe6d
					
				| @ -71,10 +71,10 @@ static Key keys[] = { | |||||||
| 	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} }, | 	{ MODKEY|ShiftMask,             XK_space,  togglefloating, {0} }, | ||||||
| 	{ MODKEY,                       XK_0,      view,           {.ui = ~0 } }, | 	{ MODKEY,                       XK_0,      view,           {.ui = ~0 } }, | ||||||
| 	{ MODKEY|ShiftMask,             XK_0,      tag,            {.ui = ~0 } }, | 	{ MODKEY|ShiftMask,             XK_0,      tag,            {.ui = ~0 } }, | ||||||
| 	{ MODKEY,                       XK_w,      focusmon,       {.ui = 0 } }, | 	{ MODKEY,                       XK_comma,  focusmon,       {.i = -1 } }, | ||||||
| 	{ MODKEY,                       XK_e,      focusmon,       {.ui = 1 } }, | 	{ MODKEY,                       XK_period, focusmon,       {.i = +1 } }, | ||||||
| 	{ MODKEY|ShiftMask,             XK_w,      tagmon,         {.ui = 0 } }, | 	{ MODKEY|ShiftMask,             XK_comma,  tagmon,         {.i = -1 } }, | ||||||
| 	{ MODKEY|ShiftMask,             XK_e,      tagmon,         {.ui = 1 } }, | 	{ MODKEY|ShiftMask,             XK_period, tagmon,         {.i = +1 } }, | ||||||
| 	TAGKEYS(                        XK_1,                      0) | 	TAGKEYS(                        XK_1,                      0) | ||||||
| 	TAGKEYS(                        XK_2,                      1) | 	TAGKEYS(                        XK_2,                      1) | ||||||
| 	TAGKEYS(                        XK_3,                      2) | 	TAGKEYS(                        XK_3,                      2) | ||||||
|  | |||||||
							
								
								
									
										26
									
								
								dwm.1
									
									
									
									
									
								
							
							
						
						
									
										26
									
								
								dwm.1
									
									
									
									
									
								
							| @ -19,14 +19,14 @@ layout applied. | |||||||
| Windows are grouped by tags. Each window can be tagged with one or multiple | Windows are grouped by tags. Each window can be tagged with one or multiple | ||||||
| tags. Selecting certain tags displays all windows with these tags. | tags. Selecting certain tags displays all windows with these tags. | ||||||
| .P | .P | ||||||
| dwm contains a small status bar which displays all available tags, the layout, | Each screen contains a small status bar which displays all available tags, the layout, | ||||||
| the title of the focused window, and the text read from the root window name | the title of the focused window, and the text read from the root window name | ||||||
| property. A floating window is indicated with an empty square and a maximised | property, if the screen is focused. A floating window is indicated with an | ||||||
| floating window is indicated with a filled square before the windows title. | empty square and a maximised floating window is indicated with a filled square | ||||||
| The selected tags are indicated with a different color. The tags of the focused | before the windows title.  The selected tags are indicated with a different | ||||||
| window are indicated with a filled square in the top left corner.  The tags | color. The tags of the focused window are indicated with a filled square in the | ||||||
| which are applied to one or more windows are indicated with an empty square in | top left corner.  The tags which are applied to one or more windows are | ||||||
| the top left corner. | indicated with an empty square in the top left corner. | ||||||
| .P | .P | ||||||
| dwm draws a small border around windows to indicate the focus state. | dwm draws a small border around windows to indicate the focus state. | ||||||
| .SH OPTIONS | .SH OPTIONS | ||||||
| @ -57,6 +57,18 @@ click on a tag label adds/removes that tag to/from the focused window. | |||||||
| Start | Start | ||||||
| .BR xterm. | .BR xterm. | ||||||
| .TP | .TP | ||||||
|  | .B Mod1\-, | ||||||
|  | Focus previous screen, if any. | ||||||
|  | .TP | ||||||
|  | .B Mod1\-. | ||||||
|  | Focus next screen, if any. | ||||||
|  | .TP | ||||||
|  | .B Mod1\-Shift\-, | ||||||
|  | Send focused window to previous screen, if any. | ||||||
|  | .TP | ||||||
|  | .B Mod1\-Shift\-, | ||||||
|  | Send focused window to next screen, if any. | ||||||
|  | .TP | ||||||
| .B Mod1\-b | .B Mod1\-b | ||||||
| Toggles bar on and off. | Toggles bar on and off. | ||||||
| .TP | .TP | ||||||
|  | |||||||
							
								
								
									
										46
									
								
								dwm.c
									
									
									
									
									
								
							
							
						
						
									
										46
									
								
								dwm.c
									
									
									
									
									
								
							| @ -11,9 +11,9 @@ | |||||||
|  * in O(1) time. |  * in O(1) time. | ||||||
|  * |  * | ||||||
|  * Each child of the root window is called a client, except windows which have |  * Each child of the root window is called a client, except windows which have | ||||||
|  * set the override_redirect flag.  Clients are organized in a global |  * set the override_redirect flag.  Clients are organized in a linked client | ||||||
|  * linked client list, the focus history is remembered through a global |  * list on each monitor, the focus history is remembered through a stack list | ||||||
|  * stack list. Each client contains a bit array to indicate the tags of a |  * on each monitor. Each client contains a bit array to indicate the tags of a | ||||||
|  * client. |  * client. | ||||||
|  * |  * | ||||||
|  * Keys and tagging rules are organized as arrays and defined in config.h. |  * Keys and tagging rules are organized as arrays and defined in config.h. | ||||||
| @ -164,6 +164,7 @@ static void destroynotify(XEvent *e); | |||||||
| static void detach(Client *c); | static void detach(Client *c); | ||||||
| static void detachstack(Client *c); | static void detachstack(Client *c); | ||||||
| static void die(const char *errstr, ...); | static void die(const char *errstr, ...); | ||||||
|  | static Monitor *dirtomon(int dir); | ||||||
| static void drawbar(Monitor *m); | static void drawbar(Monitor *m); | ||||||
| static void drawbars(void); | static void drawbars(void); | ||||||
| static void drawsquare(Bool filled, Bool empty, Bool invert, unsigned long col[ColLast]); | static void drawsquare(Bool filled, Bool empty, Bool invert, unsigned long col[ColLast]); | ||||||
| @ -180,7 +181,6 @@ static long getstate(Window w); | |||||||
| static Bool gettextprop(Window w, Atom atom, char *text, unsigned int size); | static Bool gettextprop(Window w, Atom atom, char *text, unsigned int size); | ||||||
| static void grabbuttons(Client *c, Bool focused); | static void grabbuttons(Client *c, Bool focused); | ||||||
| static void grabkeys(void); | static void grabkeys(void); | ||||||
| static Monitor *idxtomon(unsigned int n); |  | ||||||
| static void initfont(const char *fontstr); | static void initfont(const char *fontstr); | ||||||
| static Bool isprotodel(Client *c); | static Bool isprotodel(Client *c); | ||||||
| static void keypress(XEvent *e); | static void keypress(XEvent *e); | ||||||
| @ -621,6 +621,22 @@ die(const char *errstr, ...) { | |||||||
| 	exit(EXIT_FAILURE); | 	exit(EXIT_FAILURE); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | Monitor * | ||||||
|  | dirtomon(int dir) { | ||||||
|  | 	Monitor *m = NULL; | ||||||
|  | 
 | ||||||
|  | 	if(dir > 0) | ||||||
|  | 		if(!(m = selmon->next)) | ||||||
|  | 			m = mons; | ||||||
|  | 	else { | ||||||
|  | 		if(selmon == mons) | ||||||
|  | 			for(m = mons; m->next; m = m->next); | ||||||
|  | 		else | ||||||
|  | 			for(m = mons; m->next != selmon; m = m->next); | ||||||
|  | 	} | ||||||
|  | 	return m; | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void | void | ||||||
| drawbar(Monitor *m) { | drawbar(Monitor *m) { | ||||||
| 	int x; | 	int x; | ||||||
| @ -797,10 +813,11 @@ focusin(XEvent *e) { /* there are some broken focus acquiring clients */ | |||||||
| 
 | 
 | ||||||
| void | void | ||||||
| focusmon(const Arg *arg) { | focusmon(const Arg *arg) { | ||||||
| 	Monitor *m; | 	Monitor *m = NULL; | ||||||
| 
 | 
 | ||||||
| 	if(!(m = idxtomon(arg->ui)) || m == selmon) | 	if(!mons->next) | ||||||
| 		return; | 		return; | ||||||
|  | 	m = dirtomon(arg->i); | ||||||
| 	unfocus(selmon->sel); | 	unfocus(selmon->sel); | ||||||
| 	selmon = m; | 	selmon = m; | ||||||
| 	focus(NULL); | 	focus(NULL); | ||||||
| @ -934,15 +951,6 @@ grabkeys(void) { | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Monitor * |  | ||||||
| idxtomon(unsigned int n) { |  | ||||||
| 	unsigned int i; |  | ||||||
| 	Monitor *m; |  | ||||||
| 
 |  | ||||||
| 	for(m = mons, i = 0; m && i != n; m = m->next, i++); |  | ||||||
| 	return m; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void | void | ||||||
| initfont(const char *fontstr) { | initfont(const char *fontstr) { | ||||||
| 	char *def, **missing; | 	char *def, **missing; | ||||||
| @ -1512,11 +1520,9 @@ tag(const Arg *arg) { | |||||||
| 
 | 
 | ||||||
| void | void | ||||||
| tagmon(const Arg *arg) { | tagmon(const Arg *arg) { | ||||||
| 	Monitor *m; | 	if(!selmon->sel || !mons->next) | ||||||
| 
 | 		return | ||||||
| 	if(!selmon->sel || !(m = idxtomon(arg->ui))) | 	sendmon(selmon->sel, dirtomon(arg->i)); | ||||||
| 		return; |  | ||||||
| 	sendmon(selmon->sel, m); |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| int | int | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anselm R Garbe
						Anselm R Garbe