all repos — dwm @ e6cbe9c11e88537d74eb094ba5844f71ee57f268

my dwm build

fixed XSync handling and finished man page
Anselm R. Garbe garbeam@wmii.de
Sat, 15 Jul 2006 18:51:44 +0200
commit

e6cbe9c11e88537d74eb094ba5844f71ee57f268

parent

f60c597d653bd7eab6c620fc53d732ca75f6a880

5 files changed, 64 insertions(+), 16 deletions(-)

jump to
M client.cclient.c

@@ -49,13 +49,12 @@ {

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 @@ e.border_width = c->border;

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 @@ sel = sel->revert ? sel->revert : clients;

free(c); - XFlush(dpy); + XSync(dpy, False); XSetErrorHandler(xerror); XUngrabServer(dpy); arrange(NULL);
M draw.cdraw.c

@@ -131,7 +131,7 @@ dc.x = bx + bw - dc.w;

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 @@ }

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
M dwm.1dwm.1

@@ -7,14 +7,60 @@ .RB [ \-v ]

.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 +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 -reads from stdin to display status text if provided. +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 @@ .B Mod1-Button3

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.
M event.cevent.c

@@ -73,7 +73,7 @@ case Expose:

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 @@ case Expose:

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 @@ wc.stack_mode = Above;

ev->value_mask &= ~CWStackMode; ev->value_mask |= CWBorderWidth; XConfigureWindow(dpy, ev->window, ev->value_mask, &wc); - XFlush(dpy); + XSync(dpy, False); } static void
M main.cmain.c

@@ -131,7 +131,7 @@ e.xclient.format = 32;

e.xclient.data.l[0] = value; e.xclient.data.l[1] = CurrentTime; XSendEvent(dpy, w, False, NoEventMask, &e); - XFlush(dpy); + XSync(dpy, False); } void