tfixed XSync handling and finished man page - dwm - [fork] customized build of … | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit e6cbe9c11e88537d74eb094ba5844f71ee57f268 | |
parent f60c597d653bd7eab6c620fc53d732ca75f6a880 | |
Author: Anselm R. Garbe <[email protected]> | |
Date: Sat, 15 Jul 2006 18:51:44 +0200 | |
fixed XSync handling and finished man page | |
Diffstat: | |
M client.c | 7 +++---- | |
M draw.c | 7 +++---- | |
M dwm.1 | 58 ++++++++++++++++++++++++++++-… | |
M event.c | 6 +++--- | |
M main.c | 2 +- | |
5 files changed, 64 insertions(+), 16 deletions(-) | |
--- | |
diff --git a/client.c b/client.c | |
t@@ -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)); | |
} | |
t@@ -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 | |
t@@ -393,7 +392,7 @@ unmanage(Client *c) | |
free(c); | |
- XFlush(dpy); | |
+ XSync(dpy, False); | |
XSetErrorHandler(xerror); | |
XUngrabServer(dpy); | |
arrange(NULL); | |
diff --git a/draw.c b/draw.c | |
t@@ -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 | |
t@@ -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 | |
diff --git a/dwm.1 b/dwm.1 | |
t@@ -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 | |
+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 | |
t@@ -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. | |
diff --git a/event.c b/event.c | |
t@@ -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); | |
t@@ -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; | |
t@@ -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 | |
diff --git a/main.c b/main.c | |
t@@ -131,7 +131,7 @@ sendevent(Window w, Atom a, long value) | |
e.xclient.data.l[0] = value; | |
e.xclient.data.l[1] = CurrentTime; | |
XSendEvent(dpy, w, False, NoEventMask, &e); | |
- XFlush(dpy); | |
+ XSync(dpy, False); | |
} | |
void |