renamed floating into swimming (this does not clash with C naming conventions and fits better the fish symbol) - also in man page
This commit is contained in:
		
							parent
							
								
									7c4da24465
								
							
						
					
					
						commit
						cee56d3863
					
				
							
								
								
									
										8
									
								
								client.c
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								client.c
									
									
									
									
									
								
							| @ -253,8 +253,8 @@ manage(Window w, XWindowAttributes *wa) { | |||||||
| 	updatetitle(c); | 	updatetitle(c); | ||||||
| 	for(t = clients; t && t->win != trans; t = t->next); | 	for(t = clients; t && t->win != trans; t = t->next); | ||||||
| 	settags(c, t); | 	settags(c, t); | ||||||
| 	if(!c->isfloat) | 	if(!c->swimming) | ||||||
| 		c->isfloat = (t != NULL) || c->isfixed; | 		c->swimming = (t != NULL) || c->isfixed; | ||||||
| 	attach(c); | 	attach(c); | ||||||
| 	attachstack(c); | 	attachstack(c); | ||||||
| 	c->isbanned = True; | 	c->isbanned = True; | ||||||
| @ -268,7 +268,7 @@ manage(Window w, XWindowAttributes *wa) { | |||||||
| 
 | 
 | ||||||
| Client * | Client * | ||||||
| nexttiled(Client *c) { | nexttiled(Client *c) { | ||||||
| 	for(; c && (c->isfloat || !isvisible(c)); c = c->next); | 	for(; c && (c->swimming || !isvisible(c)); c = c->next); | ||||||
| 	return c; | 	return c; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -440,7 +440,7 @@ zoom(Arg *arg) { | |||||||
| 
 | 
 | ||||||
| 	if(!sel) | 	if(!sel) | ||||||
| 		return; | 		return; | ||||||
| 	if(sel->isfloat || (lt->arrange == dofloat)) { | 	if(sel->swimming || (lt->arrange == swim)) { | ||||||
| 		togglemax(sel); | 		togglemax(sel); | ||||||
| 		return; | 		return; | ||||||
| 	} | 	} | ||||||
|  | |||||||
| @ -8,8 +8,8 @@ const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", NULL }; | |||||||
| #define LAYOUTS \ | #define LAYOUTS \ | ||||||
| static Layout layout[] = { \ | static Layout layout[] = { \ | ||||||
| 	/* symbol		function */ \ | 	/* symbol		function */ \ | ||||||
| 	{ "[]=",		dotile }, /* first entry is default */ \ | 	{ "[]=",		tile }, /* first entry is default */ \ | ||||||
| 	{ "><>",		dofloat }, \ | 	{ "><>",		swim }, \ | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #define BORDERPX		1 | #define BORDERPX		1 | ||||||
| @ -64,7 +64,7 @@ static Key key[] = { \ | |||||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_9,		toggletag,	{ .i = 8 } }, \ | 	{ MODKEY|ControlMask|ShiftMask,	XK_9,		toggletag,	{ .i = 8 } }, \ | ||||||
| 	{ MODKEY|ShiftMask,		XK_c,		killclient,	{ 0 } }, \ | 	{ MODKEY|ShiftMask,		XK_c,		killclient,	{ 0 } }, \ | ||||||
| 	{ MODKEY,			XK_space,	togglelayout,	{ 0 } }, \ | 	{ MODKEY,			XK_space,	togglelayout,	{ 0 } }, \ | ||||||
| 	{ MODKEY|ShiftMask,		XK_space,	togglefloat,	{ 0 } }, \ | 	{ MODKEY|ShiftMask,		XK_space,	toggleswimming,	{ 0 } }, \ | ||||||
| 	{ MODKEY,			XK_0,		view,		{ .i = -1 } }, \ | 	{ MODKEY,			XK_0,		view,		{ .i = -1 } }, \ | ||||||
| 	{ MODKEY,			XK_1,		view,		{ .i = 0 } }, \ | 	{ MODKEY,			XK_1,		view,		{ .i = 0 } }, \ | ||||||
| 	{ MODKEY,			XK_2,		view,		{ .i = 1 } }, \ | 	{ MODKEY,			XK_2,		view,		{ .i = 1 } }, \ | ||||||
| @ -89,7 +89,7 @@ static Key key[] = { \ | |||||||
| 
 | 
 | ||||||
| #define RULES \ | #define RULES \ | ||||||
| static Rule rule[] = { \ | static Rule rule[] = { \ | ||||||
| 	/* class:instance:title regex	tags regex	isfloat */ \ | 	/* class:instance:title regex	tags regex	swimming */ \ | ||||||
| 	{ "Firefox",			"3",		False }, \ | 	{ "Firefox",			"3",		False }, \ | ||||||
| 	{ "Gimp",			NULL,		True }, \ | 	{ "Gimp",			NULL,		True }, \ | ||||||
| 	{ "MPlayer",			NULL,		True }, \ | 	{ "MPlayer",			NULL,		True }, \ | ||||||
|  | |||||||
| @ -8,8 +8,8 @@ const char *tags[] = { "1", "2", "3", "4", "5", "6", "7", "8", "9", NULL }; | |||||||
| #define LAYOUTS \ | #define LAYOUTS \ | ||||||
| Layout layout[] = { \ | Layout layout[] = { \ | ||||||
| 	/* symbol		function */ \ | 	/* symbol		function */ \ | ||||||
| 	{ "[]=",		dotile }, /* first entry is default */ \ | 	{ "[]=",		tile }, /* first entry is default */ \ | ||||||
| 	{ "><>",		dofloat }, \ | 	{ "><>",		swim }, \ | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| #define BORDERPX		1 | #define BORDERPX		1 | ||||||
| @ -59,7 +59,7 @@ static Key key[] = { \ | |||||||
| 	{ MODKEY|ControlMask|ShiftMask,	XK_9,		toggletag,	{ .i = 8 } }, \ | 	{ MODKEY|ControlMask|ShiftMask,	XK_9,		toggletag,	{ .i = 8 } }, \ | ||||||
| 	{ MODKEY|ShiftMask,		XK_c,		killclient,	{ 0 } }, \ | 	{ MODKEY|ShiftMask,		XK_c,		killclient,	{ 0 } }, \ | ||||||
| 	{ MODKEY,			XK_space,	togglelayout,	{ 0 } }, \ | 	{ MODKEY,			XK_space,	togglelayout,	{ 0 } }, \ | ||||||
| 	{ MODKEY|ShiftMask,		XK_space,	togglefloat,	{ 0 } }, \ | 	{ MODKEY|ShiftMask,		XK_space,	toggleswimming,	{ 0 } }, \ | ||||||
| 	{ MODKEY,			XK_0,		view,		{ .i = -1 } }, \ | 	{ MODKEY,			XK_0,		view,		{ .i = -1 } }, \ | ||||||
| 	{ MODKEY,			XK_1,		view,		{ .i = 0 } }, \ | 	{ MODKEY,			XK_1,		view,		{ .i = 0 } }, \ | ||||||
| 	{ MODKEY,			XK_2,		view,		{ .i = 1 } }, \ | 	{ MODKEY,			XK_2,		view,		{ .i = 1 } }, \ | ||||||
| @ -86,7 +86,7 @@ static Key key[] = { \ | |||||||
|  * xprop | awk -F '"' '/^WM_CLASS/ { printf("%s:%s:",$4,$2) }; /^WM_NAME/ { printf("%s\n",$2) }' */ |  * xprop | awk -F '"' '/^WM_CLASS/ { printf("%s:%s:",$4,$2) }; /^WM_NAME/ { printf("%s\n",$2) }' */ | ||||||
| #define RULES \ | #define RULES \ | ||||||
| static Rule rule[] = { \ | static Rule rule[] = { \ | ||||||
| 	/* class:instance:title regex	tags regex	isfloat */ \ | 	/* class:instance:title regex	tags regex	swimming */ \ | ||||||
| 	{ "Gimp",			NULL,		True }, \ | 	{ "Gimp",			NULL,		True }, \ | ||||||
| 	{ "MPlayer",			NULL,		True }, \ | 	{ "MPlayer",			NULL,		True }, \ | ||||||
| 	{ "Acroread",			NULL,		True }, \ | 	{ "Acroread",			NULL,		True }, \ | ||||||
|  | |||||||
							
								
								
									
										20
									
								
								dwm.1
									
									
									
									
									
								
							
							
						
						
									
										20
									
								
								dwm.1
									
									
									
									
									
								
							| @ -6,13 +6,13 @@ dwm \- dynamic window manager | |||||||
| .RB [ \-v ] | .RB [ \-v ] | ||||||
| .SH DESCRIPTION | .SH DESCRIPTION | ||||||
| dwm is a dynamic window manager for X. It manages windows in tiling and | dwm is a dynamic window manager for X. It manages windows in tiling and | ||||||
| floating layouts. Either layout can be applied dynamically, optimizing the | swimming layouts. Either layout can be applied dynamically, optimizing the | ||||||
| environment for the application in use and the task performed. | environment for the application in use and the task performed. | ||||||
| .P | .P | ||||||
| In tiling layout windows are managed in a master and stacking area. The master | In tiling layout windows are managed in a master and stacking area. The master | ||||||
| area contains the windows which currently need most attention, whereas the | area contains the windows which currently need most attention, whereas the | ||||||
| stacking area contains all other windows. In floating layout windows can be | stacking area contains all other windows. In swimming layout windows can be | ||||||
| resized and moved freely. Dialog windows are always managed floating, | resized and moved freely. Dialog windows are always managed swimming, | ||||||
| regardless of the layout applied. | regardless of the layout applied. | ||||||
| .P | .P | ||||||
| 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 | ||||||
| @ -38,7 +38,7 @@ is read and displayed in the status text area. | |||||||
| .TP | .TP | ||||||
| .B Button1 | .B Button1 | ||||||
| click on a tag label to display all windows with that tag, click on the layout | click on a tag label to display all windows with that tag, click on the layout | ||||||
| label toggles between tiling and floating layout. | label toggles between tiling and swimming layout. | ||||||
| .TP | .TP | ||||||
| .B Button3 | .B Button3 | ||||||
| click on a tag label adds/removes all windows with that tag to/from the view. | click on a tag label adds/removes all windows with that tag to/from the view. | ||||||
| @ -67,7 +67,7 @@ Focus next window. | |||||||
| Focus previous window. | Focus previous window. | ||||||
| .TP | .TP | ||||||
| .B Mod1-Return | .B Mod1-Return | ||||||
| Zooms/cycles current window to/from master area (tiling layout), toggles maximization of current window (floating layout). | Zooms/cycles current window to/from master area (tiling layout), toggles maximization of current window (swimming layout). | ||||||
| .TP | .TP | ||||||
| .B Mod1-g | .B Mod1-g | ||||||
| Grow master area (tiling layout only). | Grow master area (tiling layout only). | ||||||
| @ -98,10 +98,10 @@ tag to/from current window. | |||||||
| Close focused window. | Close focused window. | ||||||
| .TP | .TP | ||||||
| .B Mod1-space | .B Mod1-space | ||||||
| Toggle between tiling and floating layout (affects all windows). | Toggle between tiling and swimming layout (affects all windows). | ||||||
| .TP | .TP | ||||||
| .B Mod1-Shift-space | .B Mod1-Shift-space | ||||||
| Toggle focused window between floating and non-floating state (tiling layout only). | Toggle focused window between swimming and non-swimming state (tiling layout only). | ||||||
| .TP | .TP | ||||||
| .B Mod1-[1..n] | .B Mod1-[1..n] | ||||||
| View all windows with | View all windows with | ||||||
| @ -121,13 +121,13 @@ Quit dwm. | |||||||
| .SS Mouse commands | .SS Mouse commands | ||||||
| .TP | .TP | ||||||
| .B Mod1-Button1 | .B Mod1-Button1 | ||||||
| Move current window while dragging (floating layout only). | Move current window while dragging (swimming layout only). | ||||||
| .TP | .TP | ||||||
| .B Mod1-Button2 | .B Mod1-Button2 | ||||||
| Zooms/cycles current window to/from master area (tiling layout), toggles maximization of current window (floating layout). | Zooms/cycles current window to/from master area (tiling layout), toggles maximization of current window (swimming layout). | ||||||
| .TP | .TP | ||||||
| .B Mod1-Button3 | .B Mod1-Button3 | ||||||
| Resize current window while dragging (floating layout only). | Resize current window while dragging (swimming layout only). | ||||||
| .SH CUSTOMIZATION | .SH CUSTOMIZATION | ||||||
| dwm is customized by creating a custom config.h and (re)compiling the source | dwm is customized by creating a custom config.h and (re)compiling the source | ||||||
| code. This keeps it fast, secure and simple. | code. This keeps it fast, secure and simple. | ||||||
|  | |||||||
							
								
								
									
										7
									
								
								dwm.h
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								dwm.h
									
									
									
									
									
								
							| @ -72,7 +72,7 @@ struct Client { | |||||||
| 	int minax, minay, maxax, maxay; | 	int minax, minay, maxax, maxay; | ||||||
| 	long flags;  | 	long flags;  | ||||||
| 	unsigned int border; | 	unsigned int border; | ||||||
| 	Bool isbanned, isfixed, isfloat, ismax; | 	Bool isbanned, isfixed, ismax, swimming; | ||||||
| 	Bool *tags; | 	Bool *tags; | ||||||
| 	Client *next; | 	Client *next; | ||||||
| 	Client *prev; | 	Client *prev; | ||||||
| @ -129,16 +129,15 @@ extern int xerror(Display *dsply, XErrorEvent *ee);	/* dwm's X error handler */ | |||||||
| 
 | 
 | ||||||
| /* screen.c */ | /* screen.c */ | ||||||
| extern void compileregs(void);			/* initialize regexps of rules defined in config.h */ | extern void compileregs(void);			/* initialize regexps of rules defined in config.h */ | ||||||
| extern void dofloat(void);			/* arranges all windows floating */ |  | ||||||
| extern void dotile(void);			/* arranges all windows tiled */ |  | ||||||
| extern void incnmaster(Arg *arg);		/* increments nmaster with arg's index value */ | extern void incnmaster(Arg *arg);		/* increments nmaster with arg's index value */ | ||||||
| extern void initlayouts(void);			/* initialize layout array */ | extern void initlayouts(void);			/* initialize layout array */ | ||||||
| extern Bool isvisible(Client *c);		/* returns True if client is visible */ | extern Bool isvisible(Client *c);		/* returns True if client is visible */ | ||||||
| extern void resizemaster(Arg *arg);		/* resizes the master percent with arg's index value */ | extern void resizemaster(Arg *arg);		/* resizes the master percent with arg's index value */ | ||||||
| extern void restack(void);			/* restores z layers of all clients */ | extern void restack(void);			/* restores z layers of all clients */ | ||||||
| extern void settags(Client *c, Client *trans);	/* sets tags of c */ | extern void settags(Client *c, Client *trans);	/* sets tags of c */ | ||||||
|  | extern void swim(void);				/* arranges all windows swimming */ | ||||||
| extern void tag(Arg *arg);			/* tags c with arg's index */ | extern void tag(Arg *arg);			/* tags c with arg's index */ | ||||||
| extern void togglefloat(Arg *arg);		/* toggles focusesd client between floating/non-floating state */ | extern void toggleswimming(Arg *arg);		/* toggles focusesd client between swimming/and non-swimming state */ | ||||||
| extern void togglelayout(Arg *arg);		/* toggles layout */ | extern void togglelayout(Arg *arg);		/* toggles layout */ | ||||||
| extern void toggletag(Arg *arg);		/* toggles c tags with arg's index */ | extern void toggletag(Arg *arg);		/* toggles c tags with arg's index */ | ||||||
| extern void toggleview(Arg *arg);		/* toggles the tag with arg's index (in)visible */ | extern void toggleview(Arg *arg);		/* toggles the tag with arg's index (in)visible */ | ||||||
|  | |||||||
							
								
								
									
										8
									
								
								event.c
									
									
									
									
									
								
							
							
						
						
									
										8
									
								
								event.c
									
									
									
									
									
								
							| @ -156,14 +156,14 @@ buttonpress(XEvent *e) { | |||||||
| 		focus(c); | 		focus(c); | ||||||
| 		if(CLEANMASK(ev->state) != MODKEY) | 		if(CLEANMASK(ev->state) != MODKEY) | ||||||
| 			return; | 			return; | ||||||
| 		if(ev->button == Button1 && (lt->arrange == dofloat || c->isfloat)) { | 		if(ev->button == Button1 && (lt->arrange == swim || c->swimming)) { | ||||||
| 			restack(); | 			restack(); | ||||||
| 			movemouse(c); | 			movemouse(c); | ||||||
| 		} | 		} | ||||||
| 		else if(ev->button == Button2) | 		else if(ev->button == Button2) | ||||||
| 			zoom(NULL); | 			zoom(NULL); | ||||||
| 		else if(ev->button == Button3 | 		else if(ev->button == Button3 | ||||||
| 		&& (lt->arrange == dofloat || c->isfloat) && !c->isfixed) | 		&& (lt->arrange == swim || c->swimming) && !c->isfixed) | ||||||
| 		{ | 		{ | ||||||
| 			restack(); | 			restack(); | ||||||
| 			resizemouse(c); | 			resizemouse(c); | ||||||
| @ -181,7 +181,7 @@ configurerequest(XEvent *e) { | |||||||
| 		c->ismax = False; | 		c->ismax = False; | ||||||
| 		if(ev->value_mask & CWBorderWidth) | 		if(ev->value_mask & CWBorderWidth) | ||||||
| 			c->border = ev->border_width; | 			c->border = ev->border_width; | ||||||
| 		if(c->isfixed || c->isfloat || (lt->arrange == dofloat)) { | 		if(c->isfixed || c->swimming || (lt->arrange == swim)) { | ||||||
| 			if(ev->value_mask & CWX) | 			if(ev->value_mask & CWX) | ||||||
| 				c->x = ev->x; | 				c->x = ev->x; | ||||||
| 			if(ev->value_mask & CWY) | 			if(ev->value_mask & CWY) | ||||||
| @ -309,7 +309,7 @@ propertynotify(XEvent *e) { | |||||||
| 			default: break; | 			default: break; | ||||||
| 			case XA_WM_TRANSIENT_FOR: | 			case XA_WM_TRANSIENT_FOR: | ||||||
| 				XGetTransientForHint(dpy, c->win, &trans); | 				XGetTransientForHint(dpy, c->win, &trans); | ||||||
| 				if(!c->isfloat && (c->isfloat = (trans != 0))) | 				if(!c->swimming && (c->swimming = (getclient(trans) != NULL))) | ||||||
| 					lt->arrange(); | 					lt->arrange(); | ||||||
| 				break; | 				break; | ||||||
| 			case XA_WM_NORMAL_HINTS: | 			case XA_WM_NORMAL_HINTS: | ||||||
|  | |||||||
							
								
								
									
										133
									
								
								screen.c
									
									
									
									
									
								
							
							
						
						
									
										133
									
								
								screen.c
									
									
									
									
									
								
							| @ -19,7 +19,7 @@ Layout *lt = NULL; | |||||||
| typedef struct { | typedef struct { | ||||||
| 	const char *prop; | 	const char *prop; | ||||||
| 	const char *tags; | 	const char *tags; | ||||||
| 	Bool isfloat; | 	Bool swimming; | ||||||
| } Rule; | } Rule; | ||||||
| 
 | 
 | ||||||
| typedef struct { | typedef struct { | ||||||
| @ -27,7 +27,6 @@ typedef struct { | |||||||
| 	regex_t *tagregex; | 	regex_t *tagregex; | ||||||
| } Regs; | } Regs; | ||||||
| 
 | 
 | ||||||
| LAYOUTS |  | ||||||
| TAGS | TAGS | ||||||
| RULES | RULES | ||||||
| 
 | 
 | ||||||
| @ -35,60 +34,8 @@ static Regs *regs = NULL; | |||||||
| static unsigned int nrules = 0; | static unsigned int nrules = 0; | ||||||
| static unsigned int nlayouts = 0; | static unsigned int nlayouts = 0; | ||||||
| 
 | 
 | ||||||
| /* extern */ | static void | ||||||
| 
 | tile(void) { | ||||||
| void |  | ||||||
| compileregs(void) { |  | ||||||
| 	unsigned int i; |  | ||||||
| 	regex_t *reg; |  | ||||||
| 
 |  | ||||||
| 	if(regs) |  | ||||||
| 		return; |  | ||||||
| 	nrules = sizeof rule / sizeof rule[0]; |  | ||||||
| 	regs = emallocz(nrules * sizeof(Regs)); |  | ||||||
| 	for(i = 0; i < nrules; i++) { |  | ||||||
| 		if(rule[i].prop) { |  | ||||||
| 			reg = emallocz(sizeof(regex_t)); |  | ||||||
| 			if(regcomp(reg, rule[i].prop, REG_EXTENDED)) |  | ||||||
| 				free(reg); |  | ||||||
| 			else |  | ||||||
| 				regs[i].propregex = reg; |  | ||||||
| 		} |  | ||||||
| 		if(rule[i].tags) { |  | ||||||
| 			reg = emallocz(sizeof(regex_t)); |  | ||||||
| 			if(regcomp(reg, rule[i].tags, REG_EXTENDED)) |  | ||||||
| 				free(reg); |  | ||||||
| 			else |  | ||||||
| 				regs[i].tagregex = reg; |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void |  | ||||||
| dofloat(void) { |  | ||||||
| 	Client *c; |  | ||||||
| 
 |  | ||||||
| 	for(c = clients; c; c = c->next) { |  | ||||||
| 		if(isvisible(c)) { |  | ||||||
| 			if(c->isbanned) |  | ||||||
| 				XMoveWindow(dpy, c->win, c->x, c->y); |  | ||||||
| 			c->isbanned = False; |  | ||||||
| 			resize(c, c->x, c->y, c->w, c->h, True); |  | ||||||
| 		} |  | ||||||
| 		else { |  | ||||||
| 			c->isbanned = True; |  | ||||||
| 			XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); |  | ||||||
| 		} |  | ||||||
| 	} |  | ||||||
| 	if(!sel || !isvisible(sel)) { |  | ||||||
| 		for(c = stack; c && !isvisible(c); c = c->snext); |  | ||||||
| 		focus(c); |  | ||||||
| 	} |  | ||||||
| 	restack(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void |  | ||||||
| dotile(void) { |  | ||||||
| 	unsigned int i, n, nx, ny, nw, nh, mw, mh, tw, th; | 	unsigned int i, n, nx, ny, nw, nh, mw, mh, tw, th; | ||||||
| 	Client *c; | 	Client *c; | ||||||
| 
 | 
 | ||||||
| @ -105,7 +52,7 @@ dotile(void) { | |||||||
| 			if(c->isbanned) | 			if(c->isbanned) | ||||||
| 				XMoveWindow(dpy, c->win, c->x, c->y); | 				XMoveWindow(dpy, c->win, c->x, c->y); | ||||||
| 			c->isbanned = False; | 			c->isbanned = False; | ||||||
| 			if(c->isfloat) | 			if(c->swimming) | ||||||
| 				continue; | 				continue; | ||||||
| 			c->ismax = False; | 			c->ismax = False; | ||||||
| 			nx = wax; | 			nx = wax; | ||||||
| @ -139,9 +86,40 @@ dotile(void) { | |||||||
| 	restack(); | 	restack(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | LAYOUTS | ||||||
|  | 
 | ||||||
|  | /* extern */ | ||||||
|  | 
 | ||||||
|  | void | ||||||
|  | compileregs(void) { | ||||||
|  | 	unsigned int i; | ||||||
|  | 	regex_t *reg; | ||||||
|  | 
 | ||||||
|  | 	if(regs) | ||||||
|  | 		return; | ||||||
|  | 	nrules = sizeof rule / sizeof rule[0]; | ||||||
|  | 	regs = emallocz(nrules * sizeof(Regs)); | ||||||
|  | 	for(i = 0; i < nrules; i++) { | ||||||
|  | 		if(rule[i].prop) { | ||||||
|  | 			reg = emallocz(sizeof(regex_t)); | ||||||
|  | 			if(regcomp(reg, rule[i].prop, REG_EXTENDED)) | ||||||
|  | 				free(reg); | ||||||
|  | 			else | ||||||
|  | 				regs[i].propregex = reg; | ||||||
|  | 		} | ||||||
|  | 		if(rule[i].tags) { | ||||||
|  | 			reg = emallocz(sizeof(regex_t)); | ||||||
|  | 			if(regcomp(reg, rule[i].tags, REG_EXTENDED)) | ||||||
|  | 				free(reg); | ||||||
|  | 			else | ||||||
|  | 				regs[i].tagregex = reg; | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void | void | ||||||
| incnmaster(Arg *arg) { | incnmaster(Arg *arg) { | ||||||
| 	if((lt->arrange == dofloat) || (nmaster + arg->i < 1) | 	if((lt->arrange != tile) || (nmaster + arg->i < 1) | ||||||
| 	|| (wah / (nmaster + arg->i) <= 2 * BORDERPX)) | 	|| (wah / (nmaster + arg->i) <= 2 * BORDERPX)) | ||||||
| 		return; | 		return; | ||||||
| 	nmaster += arg->i; | 	nmaster += arg->i; | ||||||
| @ -176,7 +154,7 @@ isvisible(Client *c) { | |||||||
| 
 | 
 | ||||||
| void | void | ||||||
| resizemaster(Arg *arg) { | resizemaster(Arg *arg) { | ||||||
| 	if(lt->arrange != dotile) | 	if(lt->arrange != tile) | ||||||
| 		return; | 		return; | ||||||
| 	if(arg->i == 0) | 	if(arg->i == 0) | ||||||
| 		master = MASTER; | 		master = MASTER; | ||||||
| @ -197,10 +175,10 @@ restack(void) { | |||||||
| 	drawstatus(); | 	drawstatus(); | ||||||
| 	if(!sel) | 	if(!sel) | ||||||
| 		return; | 		return; | ||||||
| 	if(sel->isfloat || lt->arrange == dofloat) | 	if(sel->swimming || lt->arrange == swim) | ||||||
| 		XRaiseWindow(dpy, sel->win); | 		XRaiseWindow(dpy, sel->win); | ||||||
| 	if(lt->arrange != dofloat) { | 	if(lt->arrange != swim) { | ||||||
| 		if(!sel->isfloat) | 		if(!sel->swimming) | ||||||
| 			XLowerWindow(dpy, sel->win); | 			XLowerWindow(dpy, sel->win); | ||||||
| 		for(c = nexttiled(clients); c; c = nexttiled(c->next)) { | 		for(c = nexttiled(clients); c; c = nexttiled(c->next)) { | ||||||
| 			if(c == sel) | 			if(c == sel) | ||||||
| @ -230,7 +208,7 @@ settags(Client *c, Client *trans) { | |||||||
| 				ch.res_name ? ch.res_name : "", c->name); | 				ch.res_name ? ch.res_name : "", c->name); | ||||||
| 		for(i = 0; i < nrules; i++) | 		for(i = 0; i < nrules; i++) | ||||||
| 			if(regs[i].propregex && !regexec(regs[i].propregex, prop, 1, &tmp, 0)) { | 			if(regs[i].propregex && !regexec(regs[i].propregex, prop, 1, &tmp, 0)) { | ||||||
| 				c->isfloat = rule[i].isfloat; | 				c->swimming = rule[i].swimming; | ||||||
| 				for(j = 0; regs[i].tagregex && j < ntags; j++) { | 				for(j = 0; regs[i].tagregex && j < ntags; j++) { | ||||||
| 					if(!regexec(regs[i].tagregex, tags[j], 1, &tmp, 0)) { | 					if(!regexec(regs[i].tagregex, tags[j], 1, &tmp, 0)) { | ||||||
| 						matched = True; | 						matched = True; | ||||||
| @ -248,6 +226,29 @@ settags(Client *c, Client *trans) { | |||||||
| 			c->tags[i] = seltag[i]; | 			c->tags[i] = seltag[i]; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | void | ||||||
|  | swim(void) { | ||||||
|  | 	Client *c; | ||||||
|  | 
 | ||||||
|  | 	for(c = clients; c; c = c->next) { | ||||||
|  | 		if(isvisible(c)) { | ||||||
|  | 			if(c->isbanned) | ||||||
|  | 				XMoveWindow(dpy, c->win, c->x, c->y); | ||||||
|  | 			c->isbanned = False; | ||||||
|  | 			resize(c, c->x, c->y, c->w, c->h, True); | ||||||
|  | 		} | ||||||
|  | 		else { | ||||||
|  | 			c->isbanned = True; | ||||||
|  | 			XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); | ||||||
|  | 		} | ||||||
|  | 	} | ||||||
|  | 	if(!sel || !isvisible(sel)) { | ||||||
|  | 		for(c = stack; c && !isvisible(c); c = c->snext); | ||||||
|  | 		focus(c); | ||||||
|  | 	} | ||||||
|  | 	restack(); | ||||||
|  | } | ||||||
|  | 
 | ||||||
| void | void | ||||||
| tag(Arg *arg) { | tag(Arg *arg) { | ||||||
| 	unsigned int i; | 	unsigned int i; | ||||||
| @ -262,10 +263,10 @@ tag(Arg *arg) { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void | void | ||||||
| togglefloat(Arg *arg) { | toggleswimming(Arg *arg) { | ||||||
| 	if(!sel || lt->arrange == dofloat) | 	if(!sel || lt->arrange == swim) | ||||||
| 		return; | 		return; | ||||||
| 	sel->isfloat = !sel->isfloat; | 	sel->swimming = !sel->swimming; | ||||||
| 	lt->arrange(); | 	lt->arrange(); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anselm R. Garbe
						Anselm R. Garbe