forked from mirror/dwm
fixed XSync handling and finished man page
This commit is contained in:
parent
f60c597d65
commit
e6cbe9c11e
5 changed files with 64 additions and 16 deletions
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
|
||||
|
|
2
main.c
2
main.c
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue