-/* (C)opyright MMVI-MMVII Anselm R. Garbe <garbeam at gmail dot com>
- * See LICENSE file for license details.
- */
-
+/* © 2006-2007 Anselm R. Garbe <garbeam at gmail dot com>
+ * © 2006-2007 Sander van Dijk <a dot h dot vandijk at gmail dot com>
+ * See LICENSE file for license details. */
#include "dwm.h"
#include <errno.h>
#include <locale.h>
int screen, sx, sy, sw, sh, wax, way, waw, wah;
unsigned int bh, ntags, numlockmask;
Atom wmatom[WMLast], netatom[NetLast];
-Bool running = True;
Bool *seltag;
Bool selscreen = True;
Client *clients = NULL;
static int (*xerrorxlib)(Display *, XErrorEvent *);
static Bool otherwm, readin;
+static Bool running = True;
static void
cleanup(void) {
}
static unsigned long
-getcolor(const char *colstr) {
+initcolor(const char *colstr) {
Colormap cmap = DefaultColormap(dpy, screen);
XColor color;
}
static void
-scan(void) {
- unsigned int i, num;
- Window *wins, d1, d2;
- XWindowAttributes wa;
-
- wins = NULL;
- if(XQueryTree(dpy, root, &d1, &d2, &wins, &num)) {
- for(i = 0; i < num; i++) {
- if(!XGetWindowAttributes(dpy, wins[i], &wa)
- || wa.override_redirect || XGetTransientForHint(dpy, wins[i], &d1))
- continue;
- if(wa.map_state == IsViewable)
- manage(wins[i], &wa);
- }
- }
- if(wins)
- XFree(wins);
-}
-
-static void
-setfont(const char *fontstr) {
+initfont(const char *fontstr) {
char *def, **missing;
int i, n;
dc.font.height = dc.font.ascent + dc.font.descent;
}
+static void
+scan(void) {
+ unsigned int i, num;
+ Window *wins, d1, d2;
+ XWindowAttributes wa;
+
+ wins = NULL;
+ if(XQueryTree(dpy, root, &d1, &d2, &wins, &num)) {
+ for(i = 0; i < num; i++) {
+ if(!XGetWindowAttributes(dpy, wins[i], &wa)
+ || wa.override_redirect || XGetTransientForHint(dpy, wins[i], &d1))
+ continue;
+ if(wa.map_state == IsViewable)
+ manage(wins[i], &wa);
+ }
+ }
+ if(wins)
+ XFree(wins);
+}
+
static void
setup(void) {
int i, j;
seltag = emallocz(sizeof(Bool) * ntags);
seltag[0] = True;
/* style */
- dc.norm[ColBorder] = getcolor(NORMBORDERCOLOR);
- dc.norm[ColBG] = getcolor(NORMBGCOLOR);
- dc.norm[ColFG] = getcolor(NORMFGCOLOR);
- dc.sel[ColBorder] = getcolor(SELBORDERCOLOR);
- dc.sel[ColBG] = getcolor(SELBGCOLOR);
- dc.sel[ColFG] = getcolor(SELFGCOLOR);
- setfont(FONT);
+ dc.norm[ColBorder] = initcolor(NORMBORDERCOLOR);
+ dc.norm[ColBG] = initcolor(NORMBGCOLOR);
+ dc.norm[ColFG] = initcolor(NORMFGCOLOR);
+ dc.sel[ColBorder] = initcolor(SELBORDERCOLOR);
+ dc.sel[ColBG] = initcolor(SELBGCOLOR);
+ dc.sel[ColFG] = initcolor(SELFGCOLOR);
+ initfont(FONT);
/* geometry */
sx = sy = 0;
sw = DisplayWidth(dpy, screen);
dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen));
dc.gc = XCreateGC(dpy, root, 0, 0);
XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter);
+ if(!dc.font.set)
+ XSetFont(dpy, dc.gc, dc.font.xfont->fid);
/* multihead support */
selscreen = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask);
}
/* extern */
void
-sendevent(Window w, Atom a, long value) {
- XEvent e;
-
- e.type = ClientMessage;
- e.xclient.window = w;
- e.xclient.message_type = a;
- e.xclient.format = 32;
- e.xclient.data.l[0] = value;
- e.xclient.data.l[1] = CurrentTime;
- XSendEvent(dpy, w, False, NoEventMask, &e);
- XSync(dpy, False);
-}
-
-void
-quit(Arg *arg) {
+quit(const char *arg) {
readin = running = False;
}
XEvent ev;
if(argc == 2 && !strncmp("-v", argv[1], 3))
- eprint("dwm-"VERSION", (C)opyright MMVI-MMVII Anselm R. Garbe\n");
+ eprint("dwm-"VERSION", © 2004-2007 Anselm R. Garbe, Sander van Dijk\n");
else if(argc != 1)
eprint("usage: dwm [-v]\n");
setlocale(LC_CTYPE, "");
}
drawstatus();
}
- if(FD_ISSET(xfd, &rd))
- while(XPending(dpy)) {
- XNextEvent(dpy, &ev);
- if(handler[ev.type])
- (handler[ev.type])(&ev); /* call handler */
- }
+ while(XPending(dpy)) {
+ XNextEvent(dpy, &ev);
+ if(handler[ev.type])
+ (handler[ev.type])(&ev); /* call handler */
+ }
}
cleanup();
XCloseDisplay(dpy);