removed client title bar
This commit is contained in:
		
							parent
							
								
									ae0b4fdd92
								
							
						
					
					
						commit
						6c5dc7017c
					
				
							
								
								
									
										50
									
								
								client.c
									
									
									
									
									
								
							
							
						
						
									
										50
									
								
								client.c
									
									
									
									
									
								
							| @ -60,12 +60,6 @@ xerrordummy(Display *dsply, XErrorEvent *ee) { | |||||||
| 
 | 
 | ||||||
| /* extern functions */ | /* extern functions */ | ||||||
| 
 | 
 | ||||||
| void |  | ||||||
| ban(Client *c) { |  | ||||||
| 	XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); |  | ||||||
| 	XMoveWindow(dpy, c->twin, c->tx + 2 * sw, c->ty); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void | void | ||||||
| configure(Client *c) { | configure(Client *c) { | ||||||
| 	XEvent synev; | 	XEvent synev; | ||||||
| @ -121,16 +115,6 @@ getclient(Window w) { | |||||||
| 	return NULL; | 	return NULL; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| Client * |  | ||||||
| getctitle(Window w) { |  | ||||||
| 	Client *c; |  | ||||||
| 
 |  | ||||||
| 	for(c = clients; c; c = c->next) |  | ||||||
| 		if(c->twin == w) |  | ||||||
| 			return c; |  | ||||||
| 	return NULL; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void | void | ||||||
| killclient(Arg *arg) { | killclient(Arg *arg) { | ||||||
| 	if(!sel) | 	if(!sel) | ||||||
| @ -145,17 +129,15 @@ void | |||||||
| manage(Window w, XWindowAttributes *wa) { | manage(Window w, XWindowAttributes *wa) { | ||||||
| 	Client *c; | 	Client *c; | ||||||
| 	Window trans; | 	Window trans; | ||||||
| 	XSetWindowAttributes twa; |  | ||||||
| 
 | 
 | ||||||
| 	c = emallocz(sizeof(Client)); | 	c = emallocz(sizeof(Client)); | ||||||
| 	c->tags = emallocz(ntags * sizeof(Bool)); | 	c->tags = emallocz(ntags * sizeof(Bool)); | ||||||
| 	c->win = w; | 	c->win = w; | ||||||
| 	c->border = 0; | 	c->border = 0; | ||||||
| 	c->x = c->tx = wa->x; | 	c->x = wa->x; | ||||||
| 	c->y = c->ty = wa->y; | 	c->y = wa->y; | ||||||
| 	c->w = c->tw = wa->width; | 	c->w = wa->width; | ||||||
| 	c->h = wa->height; | 	c->h = wa->height; | ||||||
| 	c->th = bh; |  | ||||||
| 	updatesizehints(c); | 	updatesizehints(c); | ||||||
| 	if(c->x + c->w + 2 * BORDERPX > sw) | 	if(c->x + c->w + 2 * BORDERPX > sw) | ||||||
| 		c->x = sw - c->w - 2 * BORDERPX; | 		c->x = sw - c->w - 2 * BORDERPX; | ||||||
| @ -169,27 +151,18 @@ manage(Window w, XWindowAttributes *wa) { | |||||||
| 	XSelectInput(dpy, c->win, | 	XSelectInput(dpy, c->win, | ||||||
| 		StructureNotifyMask | PropertyChangeMask | EnterWindowMask); | 		StructureNotifyMask | PropertyChangeMask | EnterWindowMask); | ||||||
| 	XGetTransientForHint(dpy, c->win, &trans); | 	XGetTransientForHint(dpy, c->win, &trans); | ||||||
| 	twa.override_redirect = 1; |  | ||||||
| 	twa.background_pixmap = ParentRelative; |  | ||||||
| 	twa.event_mask = ExposureMask | EnterWindowMask; |  | ||||||
| 	c->twin = XCreateWindow(dpy, root, c->tx, c->ty, c->tw, c->th, |  | ||||||
| 			0, DefaultDepth(dpy, screen), CopyFromParent, |  | ||||||
| 			DefaultVisual(dpy, screen), |  | ||||||
| 			CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa); |  | ||||||
| 	grabbuttons(c, False); | 	grabbuttons(c, False); | ||||||
| 	updatetitle(c); | 	updatetitle(c); | ||||||
| 	settags(c, getclient(trans)); | 	settags(c, getclient(trans)); | ||||||
| 	if(!c->isfloat) | 	if(!c->isfloat) | ||||||
| 		c->isfloat = trans || c->isfixed; | 		c->isfloat = trans || c->isfixed; | ||||||
| 	resizetitle(c); |  | ||||||
| 	if(clients) | 	if(clients) | ||||||
| 		clients->prev = c; | 		clients->prev = c; | ||||||
| 	c->next = clients; | 	c->next = clients; | ||||||
| 	c->snext = stack; | 	c->snext = stack; | ||||||
| 	stack = clients = c; | 	stack = clients = c; | ||||||
| 	ban(c); | 	XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); | ||||||
| 	XMapWindow(dpy, c->win); | 	XMapWindow(dpy, c->win); | ||||||
| 	XMapWindow(dpy, c->twin); |  | ||||||
| 	if(isvisible(c)) | 	if(isvisible(c)) | ||||||
| 		focus(c); | 		focus(c); | ||||||
| 	arrange(); | 	arrange(); | ||||||
| @ -228,7 +201,6 @@ resize(Client *c, Bool sizehints, Corner sticky) { | |||||||
| 		c->x = sw - c->w; | 		c->x = sw - c->w; | ||||||
| 	if(c->y > sh) | 	if(c->y > sh) | ||||||
| 		c->y = sh - c->h; | 		c->y = sh - c->h; | ||||||
| 	resizetitle(c); |  | ||||||
| 	wc.x = c->x; | 	wc.x = c->x; | ||||||
| 	wc.y = c->y; | 	wc.y = c->y; | ||||||
| 	wc.width = c->w; | 	wc.width = c->w; | ||||||
| @ -242,19 +214,6 @@ resize(Client *c, Bool sizehints, Corner sticky) { | |||||||
| 	XSync(dpy, False); | 	XSync(dpy, False); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| void |  | ||||||
| resizetitle(Client *c) { |  | ||||||
| 	c->tw = textw(c->name); |  | ||||||
| 	if(c->tw > c->w) |  | ||||||
| 		c->tw = c->w + 2 * BORDERPX; |  | ||||||
| 	c->tx = c->x + c->w - c->tw + 2 * BORDERPX; |  | ||||||
| 	c->ty = c->y; |  | ||||||
| 	if(isvisible(c)) |  | ||||||
| 		XMoveResizeWindow(dpy, c->twin, c->tx, c->ty, c->tw, c->th); |  | ||||||
| 	else |  | ||||||
| 		XMoveResizeWindow(dpy, c->twin, c->tx + 2 * sw, c->ty, c->tw, c->th); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| void | void | ||||||
| updatesizehints(Client *c) { | updatesizehints(Client *c) { | ||||||
| 	long msize; | 	long msize; | ||||||
| @ -331,7 +290,6 @@ unmanage(Client *c) { | |||||||
| 		focus(nc); | 		focus(nc); | ||||||
| 	} | 	} | ||||||
| 	XUngrabButton(dpy, AnyButton, AnyModifier, c->win); | 	XUngrabButton(dpy, AnyButton, AnyModifier, c->win); | ||||||
| 	XDestroyWindow(dpy, c->twin); |  | ||||||
| 	free(c->tags); | 	free(c->tags); | ||||||
| 	free(c); | 	free(c); | ||||||
| 	XSync(dpy, False); | 	XSync(dpy, False); | ||||||
|  | |||||||
							
								
								
									
										6
									
								
								draw.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								draw.c
									
									
									
									
									
								
							| @ -141,16 +141,10 @@ void | |||||||
| drawclient(Client *c) { | drawclient(Client *c) { | ||||||
| 	if(c == sel && issel) { | 	if(c == sel && issel) { | ||||||
| 		drawstatus(); | 		drawstatus(); | ||||||
| 		XUnmapWindow(dpy, c->twin); |  | ||||||
| 		XSetWindowBorder(dpy, c->win, dc.sel[ColBG]); | 		XSetWindowBorder(dpy, c->win, dc.sel[ColBG]); | ||||||
| 		return; | 		return; | ||||||
| 	} | 	} | ||||||
| 	XSetWindowBorder(dpy, c->win, dc.norm[ColBG]); | 	XSetWindowBorder(dpy, c->win, dc.norm[ColBG]); | ||||||
| 	XMapWindow(dpy, c->twin); |  | ||||||
| 	dc.x = dc.y = 0; |  | ||||||
| 	dc.w = c->tw; |  | ||||||
| 	drawtext(c->name, dc.norm, False, False); |  | ||||||
| 	XCopyArea(dpy, dc.drawable, c->twin, dc.gc, 0, 0, c->tw, c->th, 0, 0); |  | ||||||
| 	XSync(dpy, False); | 	XSync(dpy, False); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | |||||||
							
								
								
									
										1
									
								
								dwm.1
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								dwm.1
									
									
									
									
									
								
							| @ -26,7 +26,6 @@ which are applied to one or more windows are indicated with an empty square in | |||||||
| the top left corner. | the top left corner. | ||||||
| .P | .P | ||||||
| dwm draws a 1-pixel border around windows to indicate the focus state. | dwm draws a 1-pixel border around windows to indicate the focus state. | ||||||
| Unfocused windows contain a small bar in front of them displaying their title. |  | ||||||
| .SH OPTIONS | .SH OPTIONS | ||||||
| .TP | .TP | ||||||
| .B \-v | .B \-v | ||||||
|  | |||||||
							
								
								
									
										5
									
								
								dwm.h
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								dwm.h
									
									
									
									
									
								
							| @ -78,7 +78,6 @@ struct Client { | |||||||
| 	int proto; | 	int proto; | ||||||
| 	int x, y, w, h; | 	int x, y, w, h; | ||||||
| 	int rx, ry, rw, rh; /* revert geometry */ | 	int rx, ry, rw, rh; /* revert geometry */ | ||||||
| 	int tx, ty, tw, th; /* title window geometry */ |  | ||||||
| 	int basew, baseh, incw, inch, maxw, maxh, minw, minh; | 	int basew, baseh, incw, inch, maxw, maxh, minw, minh; | ||||||
| 	long flags;  | 	long flags;  | ||||||
| 	unsigned int border; | 	unsigned int border; | ||||||
| @ -88,7 +87,6 @@ struct Client { | |||||||
| 	Client *prev; | 	Client *prev; | ||||||
| 	Client *snext; | 	Client *snext; | ||||||
| 	Window win; | 	Window win; | ||||||
| 	Window twin; |  | ||||||
| }; | }; | ||||||
| 
 | 
 | ||||||
| extern const char *tags[];			/* all tags */ | extern const char *tags[];			/* all tags */ | ||||||
| @ -110,15 +108,12 @@ extern Display *dpy; | |||||||
| extern Window root, barwin; | extern Window root, barwin; | ||||||
| 
 | 
 | ||||||
| /* client.c */ | /* client.c */ | ||||||
| extern void ban(Client *c);			/* ban c from screen */ |  | ||||||
| extern void configure(Client *c);		/* send synthetic configure event */ | extern void configure(Client *c);		/* send synthetic configure event */ | ||||||
| extern void focus(Client *c);			/* focus c, c may be NULL */ | extern void focus(Client *c);			/* focus c, c may be NULL */ | ||||||
| extern Client *getclient(Window w);		/* return client of w */ | extern Client *getclient(Window w);		/* return client of w */ | ||||||
| extern Client *getctitle(Window w);		/* return client of title window */ |  | ||||||
| extern void killclient(Arg *arg);		/* kill c nicely */ | extern void killclient(Arg *arg);		/* kill c nicely */ | ||||||
| extern void manage(Window w, XWindowAttributes *wa);	/* manage new client */ | extern void manage(Window w, XWindowAttributes *wa);	/* manage new client */ | ||||||
| extern void resize(Client *c, Bool sizehints, Corner sticky); /* resize c*/ | extern void resize(Client *c, Bool sizehints, Corner sticky); /* resize c*/ | ||||||
| extern void resizetitle(Client *c);		/* resizes c->twin correctly */ |  | ||||||
| extern void updatesizehints(Client *c);		/* update the size hint variables of c */ | extern void updatesizehints(Client *c);		/* update the size hint variables of c */ | ||||||
| extern void updatetitle(Client *c);		/* update the name of c */ | extern void updatetitle(Client *c);		/* update the name of c */ | ||||||
| extern void unmanage(Client *c);		/* destroy c */ | extern void unmanage(Client *c);		/* destroy c */ | ||||||
|  | |||||||
							
								
								
									
										7
									
								
								event.c
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								event.c
									
									
									
									
									
								
							| @ -196,7 +196,7 @@ configurerequest(XEvent *e) { | |||||||
| 		if(c->isfloat) { | 		if(c->isfloat) { | ||||||
| 			resize(c, False, TopLeft); | 			resize(c, False, TopLeft); | ||||||
| 			if(!isvisible(c)) | 			if(!isvisible(c)) | ||||||
| 				ban(c); | 				XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); | ||||||
| 		} | 		} | ||||||
| 		else | 		else | ||||||
| 			arrange(); | 			arrange(); | ||||||
| @ -230,7 +230,7 @@ enternotify(XEvent *e) { | |||||||
| 
 | 
 | ||||||
| 	if(ev->mode != NotifyNormal || ev->detail == NotifyInferior) | 	if(ev->mode != NotifyNormal || ev->detail == NotifyInferior) | ||||||
| 		return; | 		return; | ||||||
| 	if(((c = getclient(ev->window)) || (c = getctitle(ev->window))) && isvisible(c)) | 	if((c = getclient(ev->window)) && isvisible(c)) | ||||||
| 		focus(c); | 		focus(c); | ||||||
| 	else if(ev->window == root) { | 	else if(ev->window == root) { | ||||||
| 		issel = True; | 		issel = True; | ||||||
| @ -247,8 +247,6 @@ expose(XEvent *e) { | |||||||
| 	if(ev->count == 0) { | 	if(ev->count == 0) { | ||||||
| 		if(barwin == ev->window) | 		if(barwin == ev->window) | ||||||
| 			drawstatus(); | 			drawstatus(); | ||||||
| 		else if((c = getctitle(ev->window))) |  | ||||||
| 			drawclient(c); |  | ||||||
| 	} | 	} | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| @ -331,7 +329,6 @@ propertynotify(XEvent *e) { | |||||||
| 		} | 		} | ||||||
| 		if(ev->atom == XA_WM_NAME || ev->atom == netatom[NetWMName]) { | 		if(ev->atom == XA_WM_NAME || ev->atom == netatom[NetWMName]) { | ||||||
| 			updatetitle(c); | 			updatetitle(c); | ||||||
| 			resizetitle(c); |  | ||||||
| 			drawclient(c); | 			drawclient(c); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | |||||||
							
								
								
									
										14
									
								
								view.c
									
									
									
									
									
								
							
							
						
						
									
										14
									
								
								view.c
									
									
									
									
									
								
							| @ -59,7 +59,7 @@ dofloat(void) { | |||||||
| 			resize(c, True, TopLeft); | 			resize(c, True, TopLeft); | ||||||
| 		} | 		} | ||||||
| 		else | 		else | ||||||
| 			ban(c); | 			XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); | ||||||
| 	} | 	} | ||||||
| 	if(!sel || !isvisible(sel)) { | 	if(!sel || !isvisible(sel)) { | ||||||
| 		for(c = stack; c && !isvisible(c); c = c->snext); | 		for(c = stack; c && !isvisible(c); c = c->snext); | ||||||
| @ -109,8 +109,7 @@ dotile(void) { | |||||||
| 			i++; | 			i++; | ||||||
| 		} | 		} | ||||||
| 		else | 		else | ||||||
| 			ban(c); | 			XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y); | ||||||
| 
 |  | ||||||
| 	if(!sel || !isvisible(sel)) { | 	if(!sel || !isvisible(sel)) { | ||||||
| 		for(c = stack; c && !isvisible(c); c = c->snext); | 		for(c = stack; c && !isvisible(c); c = c->snext); | ||||||
| 		focus(c); | 		focus(c); | ||||||
| @ -191,19 +190,14 @@ restack(void) { | |||||||
| 		drawstatus(); | 		drawstatus(); | ||||||
| 		return; | 		return; | ||||||
| 	} | 	} | ||||||
| 	if(sel->isfloat || arrange == dofloat) { | 	if(sel->isfloat || arrange == dofloat) | ||||||
| 		XRaiseWindow(dpy, sel->win); | 		XRaiseWindow(dpy, sel->win); | ||||||
| 		XRaiseWindow(dpy, sel->twin); |  | ||||||
| 	} |  | ||||||
| 	if(arrange != dofloat) { | 	if(arrange != dofloat) { | ||||||
| 		if(!sel->isfloat) { | 		if(!sel->isfloat) | ||||||
| 			XLowerWindow(dpy, sel->twin); |  | ||||||
| 			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) | ||||||
| 				continue; | 				continue; | ||||||
| 			XLowerWindow(dpy, c->twin); |  | ||||||
| 			XLowerWindow(dpy, c->win); | 			XLowerWindow(dpy, c->win); | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user