#include <X11/Xatom.h>
#include <X11/Xproto.h>
-Display *dpy;
-Window root, barwin;
-Atom wmatom[WMLast], netatom[NetLast];
-Cursor cursor[CurLast];
-Bool running = True;
-Bool issel = True;
-
-int tsel = Tdev; /* default tag */
-int screen, sx, sy, sw, sh, bx, by, bw, bh, mw;
-char stext[1024];
-DC dc = {0};
-Client *clients = NULL;
-Client *sel = NULL;
+/* static */
static Bool otherwm;
static int (*xerrorxlib)(Display *, XErrorEvent *);
-/* static functions */
-
static void
cleanup()
{
while(sel) {
- resize(sel, True);
+ resize(sel, True, TopLeft);
unmanage(sel);
}
XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);
return -1;
}
-/* extern functions */
+/* extern */
+
+char stext[1024];
+int tsel = Tdev; /* default tag */
+int screen, sx, sy, sw, sh, bx, by, bw, bh, mw;
+Atom wmatom[WMLast], netatom[NetLast];
+Bool running = True;
+Bool issel = True;
+Client *clients = NULL;
+Client *sel = NULL;
+Cursor cursor[CurLast];
+Display *dpy;
+DC dc = {0};
+Window root, barwin;
int
getproto(Window w)
e.xclient.data.l[0] = value;
e.xclient.data.l[1] = CurrentTime;
XSendEvent(dpy, w, False, NoEventMask, &e);
- XFlush(dpy);
+ XSync(dpy, False);
}
void
}
/*
- * There's no way to check accesses to destroyed windows, thus
- * those cases are ignored (especially on UnmapNotify's).
- * Other types of errors call Xlib's default error handler, which
- * calls exit().
+ * There's no way to check accesses to destroyed windows, thus those cases are
+ * ignored (especially on UnmapNotify's). Other types of errors call Xlibs
+ * default error handler, which calls exit().
*/
int
xerror(Display *dpy, XErrorEvent *ee)
for(i = 1; (i < argc) && (argv[i][0] == '-'); i++) {
switch (argv[i][1]) {
- case 'v':
- fprintf(stdout, "%s",
- "dwm-"VERSION", (C)opyright MMVI Anselm R. Garbe\n");
- exit(0);
- break;
default:
eprint("usage: dwm [-v]\n");
break;
+ case 'v':
+ fputs("dwm-"VERSION", (C)opyright MMVI Anselm R. Garbe\n", stdout);
+ exit(EXIT_SUCCESS);
+ break;
}
}
XSetErrorHandler(xerrorstart);
/* this causes an error if some other WM is running */
XSelectInput(dpy, root, SubstructureRedirectMask);
- XFlush(dpy);
+ XSync(dpy, False);
if(otherwm)
eprint("dwm: another window manager is already running\n");
- XSetErrorHandler(0);
+ XSetErrorHandler(NULL);
xerrorxlib = XSetErrorHandler(xerror);
/* init atoms */
XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
strcpy(stext, "dwm-"VERSION);
+
scan();
/* main event loop, reads status text from stdin as well */