fixed XSync handling and finished man page
This commit is contained in:
		
							parent
							
								
									f60c597d65
								
							
						
					
					
						commit
						e6cbe9c11e
					
				
							
								
								
									
										7
									
								
								client.c
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								client.c
									
									
									
									
									
								
							| @ -49,13 +49,12 @@ focus(Client *c) | ||||
| 	Client *old = sel; | ||||
| 	XEvent ev; | ||||
| 
 | ||||
| 	XFlush(dpy); | ||||
| 	sel = c; | ||||
| 	if(old && old != c) | ||||
| 		drawtitle(old); | ||||
| 	drawtitle(c); | ||||
| 	XSetInputFocus(dpy, c->win, RevertToPointerRoot, CurrentTime); | ||||
| 	XFlush(dpy); | ||||
| 	XSync(dpy, False); | ||||
| 	while(XCheckMaskEvent(dpy, EnterWindowMask, &ev)); | ||||
| } | ||||
| 
 | ||||
| @ -303,7 +302,7 @@ resize(Client *c, Bool inc) | ||||
| 	e.above = None; | ||||
| 	e.override_redirect = False; | ||||
| 	XSendEvent(dpy, c->win, False, StructureNotifyMask, (XEvent *)&e); | ||||
| 	XFlush(dpy); | ||||
| 	XSync(dpy, False); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| @ -393,7 +392,7 @@ unmanage(Client *c) | ||||
| 
 | ||||
| 	free(c); | ||||
| 
 | ||||
| 	XFlush(dpy); | ||||
| 	XSync(dpy, False); | ||||
| 	XSetErrorHandler(xerror); | ||||
| 	XUngrabServer(dpy); | ||||
| 	arrange(NULL); | ||||
|  | ||||
							
								
								
									
										7
									
								
								draw.c
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								draw.c
									
									
									
									
									
								
							| @ -131,7 +131,7 @@ drawstatus() | ||||
| 	drawtext(stext, !istile, False); | ||||
| 
 | ||||
| 	XCopyArea(dpy, dc.drawable, barwin, dc.gc, 0, 0, bw, bh, 0, 0); | ||||
| 	XFlush(dpy); | ||||
| 	XSync(dpy, False); | ||||
| } | ||||
| 
 | ||||
| void | ||||
| @ -163,9 +163,8 @@ drawtitle(Client *c) | ||||
| 	dc.x += dc.w; | ||||
| 	dc.w = textw(c->name); | ||||
| 	drawtext(c->name, !istile, True); | ||||
| 	XCopyArea(dpy, dc.drawable, c->title, dc.gc, | ||||
| 			0, 0, c->tw, c->th, 0, 0); | ||||
| 	XFlush(dpy); | ||||
| 	XCopyArea(dpy, dc.drawable, c->title, dc.gc, 0, 0, c->tw, c->th, 0, 0); | ||||
| 	XSync(dpy, False); | ||||
| } | ||||
| 
 | ||||
| unsigned long | ||||
|  | ||||
							
								
								
									
										58
									
								
								dwm.1
									
									
									
									
									
								
							
							
						
						
									
										58
									
								
								dwm.1
									
									
									
									
									
								
							| @ -7,14 +7,60 @@ dwm \- dynamic window manager | ||||
| .SH DESCRIPTION | ||||
| .SS Overview | ||||
| .B dwm | ||||
| is a dynamic window manager for X11. | ||||
| is a dynamic window manager for X11. It consists of a small status bar at the | ||||
| top of the screen and arranges windows in either a tiled or floating mode. | ||||
| .P | ||||
| If  | ||||
| .B dwm | ||||
| is in tiled mode, it consists of two columns. The left master column | ||||
| contains only one window per time, the right column contains all other windows  | ||||
| in a stack. In tiled mode | ||||
| .B dwm | ||||
| .B don't | ||||
| handles incremental resizals, some terminal programs like | ||||
| .B xterm | ||||
| may not work correctly with this in tiled mode. | ||||
| .P | ||||
| If | ||||
| .B dwm | ||||
| is in floating mode, it arranges all windows with the reqyested geometry and | ||||
| allows the user to move or resize them. Some windows, like | ||||
| dialog windows, are treated floating even if | ||||
| .B dwm | ||||
| is in tiled mode. In floating mode | ||||
| .B dwm | ||||
| handles incremental resizals. | ||||
| .P | ||||
| Windows are grouped by tags. You can view all windows with a specific tag per | ||||
| time.  However, each window is allowed to contain more than one tag, which | ||||
| allows to make windows visible in all views. | ||||
| .P | ||||
| .B dwm | ||||
| reads from | ||||
| .I stdin | ||||
| to display status text, if written. | ||||
| .P | ||||
| .B dwm | ||||
| draws 1-pixel borders around windows to indicate the focus state and save as | ||||
| much screen real estate as possible. Unfocused windows contain a small bar | ||||
| in front of the window indicating the tags and the window title. | ||||
| .SS Options | ||||
| .TP | ||||
| .B \-v | ||||
| prints version information to stdout, then exits. | ||||
| .SS Status text | ||||
| prints version information to | ||||
| .I stdout | ||||
| , then exits. | ||||
| .SS Customization | ||||
| .B dwm | ||||
| reads from stdin to display status text if provided. | ||||
| is customized through editing its source code. It is assumed that | ||||
| dwm users are high experienced users who know how a window manager works | ||||
| and who are able to patch | ||||
| .B dwm | ||||
| for their needs. This keeps | ||||
| .B dwm | ||||
| fast, secure and simple, because it does not process any input data, except | ||||
| window properties and the status text read from | ||||
| .I stdin . | ||||
| .SS Default Key Bindings | ||||
| .TP 16 | ||||
| .I Key	 | ||||
| @ -96,3 +142,7 @@ Lowers current | ||||
| Resizes current | ||||
| .B window | ||||
| while dragging | ||||
| .SH BUGS | ||||
| Some terminal programs do not behave correctly in tiled mode, because | ||||
| incremental resizals are ignored to use maximum screen real estate. You can | ||||
| patch the code to fix this. | ||||
|  | ||||
							
								
								
									
										6
									
								
								event.c
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								event.c
									
									
									
									
									
								
							| @ -73,7 +73,7 @@ movemouse(Client *c) | ||||
| 			handler[Expose](&ev); | ||||
| 			break; | ||||
| 		case MotionNotify: | ||||
| 			XFlush(dpy); | ||||
| 			XSync(dpy, False); | ||||
| 			c->x = ocx + (ev.xmotion.x - x1); | ||||
| 			c->y = ocy + (ev.xmotion.y - y1); | ||||
| 			resize(c, False); | ||||
| @ -105,7 +105,7 @@ resizemouse(Client *c) | ||||
| 			handler[Expose](&ev); | ||||
| 			break; | ||||
| 		case MotionNotify: | ||||
| 			XFlush(dpy); | ||||
| 			XSync(dpy, False); | ||||
| 			c->w = abs(ocx - ev.xmotion.x); | ||||
| 			c->h = abs(ocy - ev.xmotion.y); | ||||
| 			c->x = (ocx <= ev.xmotion.x) ? ocx : ocx - c->w; | ||||
| @ -191,7 +191,7 @@ configurerequest(XEvent *e) | ||||
| 	ev->value_mask &= ~CWStackMode; | ||||
| 	ev->value_mask |= CWBorderWidth; | ||||
| 	XConfigureWindow(dpy, ev->window, ev->value_mask, &wc); | ||||
| 	XFlush(dpy); | ||||
| 	XSync(dpy, False); | ||||
| } | ||||
| 
 | ||||
| static void | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Anselm R. Garbe
						Anselm R. Garbe