dwm

my fork of dwm
Index Commits Files Refs README LICENSE
commit b5159dfd2f552696b049b95e0d368a2c33a1002a
parent 07c2659806e95499b4a258ff1961e61c541f50b3
Author: Anselm R. Garbe <arg@10kloc.org>
Date:   Wed, 23 Aug 2006 10:21:57 +0200

separated setup stuff into main.c:setup() - this makes main() more readable
Diffstat:
Mdwm.h | 20++++++++------------
Mmain.c | 181+++++++++++++++++++++++++++++++++++++++++--------------------------------------
Mview.c | 2+-
3 files changed, 104 insertions(+), 99 deletions(-)
diff --git a/dwm.h b/dwm.h
@@ -11,15 +11,10 @@
 #define MOUSEMASK        (BUTTONMASK | PointerMotionMask)
 #define PROTODELWIN        1
 
-typedef union Arg Arg;
-typedef struct Client Client;
-typedef struct DC DC;
-typedef struct Fnt Fnt;
-
-union Arg {
+typedef union {
     const char *cmd;
     int i;
-};
+} Arg;
 
 /* atoms */
 enum { NetSupported, NetWMName, NetLast };
@@ -28,18 +23,18 @@ enum { WMProtocols, WMDelete, WMLast };
 /* cursor */
 enum { CurNormal, CurResize, CurMove, CurLast };
 
-/* windowcorners */
+/* window corners */
 typedef enum { TopLeft, TopRight, BotLeft, BotRight } Corner;
 
-struct Fnt {
+typedef struct {
     int ascent;
     int descent;
     int height;
     XFontSet set;
     XFontStruct *xfont;
-};
+} Fnt;
 
-struct DC { /* draw context */
+typedef struct { /* draw context */
     int x, y, w, h;
     unsigned long bg;
     unsigned long fg;
@@ -47,8 +42,9 @@ struct DC { /* draw context */
     Drawable drawable;
     Fnt font;
     GC gc;
-};
+} DC;
 
+typedef struct Client Client;
 struct Client {
     char name[256];
     int proto;
diff --git a/main.c b/main.c
@@ -15,6 +15,22 @@
 #include <X11/Xatom.h>
 #include <X11/Xproto.h>
 
+/* extern */
+
+char stext[1024];
+Bool *seltag;
+int screen, sx, sy, sw, sh, bx, by, bw, bh, mw;
+unsigned int ntags, numlockmask;
+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;
+
 /* static */
 
 static int (*xerrorxlib)(Display *, XErrorEvent *);
@@ -62,6 +78,79 @@ scan()
         XFree(wins);
 }
 
+static void
+setup()
+{
+    int i, j;
+    unsigned int mask;
+    Window w;
+    XModifierKeymap *modmap;
+    XSetWindowAttributes wa;
+
+    /* init atoms */
+    wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
+    wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
+    netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
+    netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
+    XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32,
+            PropModeReplace, (unsigned char *) netatom, NetLast);
+
+    /* init cursors */
+    cursor[CurNormal] = XCreateFontCursor(dpy, XC_left_ptr);
+    cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing);
+    cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur);
+
+    modmap = XGetModifierMapping(dpy);
+    for (i = 0; i < 8; i++) {
+        for (j = 0; j < modmap->max_keypermod; j++) {
+            if(modmap->modifiermap[i * modmap->max_keypermod + j] == XKeysymToKeycode(dpy, XK_Num_Lock))
+                numlockmask = (1 << i);
+        }
+    }
+    XFree(modmap);
+
+    wa.event_mask = SubstructureRedirectMask | SubstructureNotifyMask | EnterWindowMask | LeaveWindowMask;
+    wa.cursor = cursor[CurNormal];
+    XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
+
+    grabkeys();
+    initrregs();
+
+    for(ntags = 0; tags[ntags]; ntags++);
+    seltag = emallocz(sizeof(Bool) * ntags);
+    seltag[0] = True;
+
+    /* style */
+    dc.bg = getcolor(BGCOLOR);
+    dc.fg = getcolor(FGCOLOR);
+    dc.border = getcolor(BORDERCOLOR);
+    setfont(FONT);
+
+    sx = sy = 0;
+    sw = DisplayWidth(dpy, screen);
+    sh = DisplayHeight(dpy, screen);
+    mw = (sw * MASTERW) / 100;
+
+    bx = by = 0;
+    bw = sw;
+    dc.h = bh = dc.font.height + 4;
+    wa.override_redirect = 1;
+    wa.background_pixmap = ParentRelative;
+    wa.event_mask = ButtonPressMask | ExposureMask;
+    barwin = XCreateWindow(dpy, root, bx, by, bw, bh, 0, DefaultDepth(dpy, screen),
+            CopyFromParent, DefaultVisual(dpy, screen),
+            CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);
+    XDefineCursor(dpy, barwin, cursor[CurNormal]);
+    XMapRaised(dpy, barwin);
+
+    dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen));
+    dc.gc = XCreateGC(dpy, root, 0, 0);
+
+    issel = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask);
+
+    strcpy(stext, "dwm-"VERSION);
+}
+
 /*
  * Startup Error handler to check if another window manager
  * is already running.
@@ -75,20 +164,6 @@ xerrorstart(Display *dsply, XErrorEvent *ee)
 
 /* extern */
 
-char stext[1024];
-Bool *seltag;
-int screen, sx, sy, sw, sh, bx, by, bw, bh, mw;
-unsigned int ntags, numlockmask;
-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)
 {
@@ -153,12 +228,8 @@ xerror(Display *dpy, XErrorEvent *ee)
 int
 main(int argc, char *argv[])
 {
-    int i, j, xfd;
-    unsigned int mask;
+    int r, xfd;
     fd_set rd;
-    Window w;
-    XModifierKeymap *modmap;
-    XSetWindowAttributes wa;
 
     if(argc == 2 && !strncmp("-v", argv[1], 3)) {
         fputs("dwm-"VERSION", (C)opyright MMVI Anselm R. Garbe\n", stdout);
@@ -189,70 +260,8 @@ main(int argc, char *argv[])
     xerrorxlib = XSetErrorHandler(xerror);
     XSync(dpy, False);
 
-    /* init atoms */
-    wmatom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
-    wmatom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
-    netatom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
-    netatom[NetWMName] = XInternAtom(dpy, "_NET_WM_NAME", False);
-    XChangeProperty(dpy, root, netatom[NetSupported], XA_ATOM, 32,
-            PropModeReplace, (unsigned char *) netatom, NetLast);
-
-    /* init cursors */
-    cursor[CurNormal] = XCreateFontCursor(dpy, XC_left_ptr);
-    cursor[CurResize] = XCreateFontCursor(dpy, XC_sizing);
-    cursor[CurMove] = XCreateFontCursor(dpy, XC_fleur);
-
-    modmap = XGetModifierMapping(dpy);
-    for (i = 0; i < 8; i++) {
-        for (j = 0; j < modmap->max_keypermod; j++) {
-            if(modmap->modifiermap[i * modmap->max_keypermod + j] == XKeysymToKeycode(dpy, XK_Num_Lock))
-                numlockmask = (1 << i);
-        }
-    }
-    XFree(modmap);
-
-    wa.event_mask = SubstructureRedirectMask | SubstructureNotifyMask | EnterWindowMask | LeaveWindowMask;
-    wa.cursor = cursor[CurNormal];
-    XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
-
-    grabkeys();
-    initrregs();
-
-    for(ntags = 0; tags[ntags]; ntags++);
-    seltag = emallocz(sizeof(Bool) * ntags);
-    seltag[0] = True;
-
-    /* style */
-    dc.bg = getcolor(BGCOLOR);
-    dc.fg = getcolor(FGCOLOR);
-    dc.border = getcolor(BORDERCOLOR);
-    setfont(FONT);
-
-    sx = sy = 0;
-    sw = DisplayWidth(dpy, screen);
-    sh = DisplayHeight(dpy, screen);
-    mw = (sw * MASTERW) / 100;
-
-    bx = by = 0;
-    bw = sw;
-    dc.h = bh = dc.font.height + 4;
-    wa.override_redirect = 1;
-    wa.background_pixmap = ParentRelative;
-    wa.event_mask = ButtonPressMask | ExposureMask;
-    barwin = XCreateWindow(dpy, root, bx, by, bw, bh, 0, DefaultDepth(dpy, screen),
-            CopyFromParent, DefaultVisual(dpy, screen),
-            CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);
-    XDefineCursor(dpy, barwin, cursor[CurNormal]);
-    XMapRaised(dpy, barwin);
-
-    dc.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen));
-    dc.gc = XCreateGC(dpy, root, 0, 0);
-
-    strcpy(stext, "dwm-"VERSION);
+    setup();
     drawstatus();
-
-    issel = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask);
-
     scan();
 
     /* main event loop, also reads status text from stdin */
@@ -264,10 +273,10 @@ main(int argc, char *argv[])
         if(readin)
             FD_SET(STDIN_FILENO, &rd);
         FD_SET(xfd, &rd);
-        i = select(xfd + 1, &rd, NULL, NULL, NULL);
-        if((i == -1) && (errno == EINTR))
+        r = select(xfd + 1, &rd, NULL, NULL, NULL);
+        if((r == -1) && (errno == EINTR))
             continue;
-        if(i > 0) {
+        if(r > 0) {
             if(readin && FD_ISSET(STDIN_FILENO, &rd)) {
                 readin = NULL != fgets(stext, sizeof(stext), stdin);
                 if(readin)
@@ -277,7 +286,7 @@ main(int argc, char *argv[])
                 drawstatus();
             }
         }
-        else if(i < 0)
+        else if(r < 0)
             eprint("select failed\n");
         procevent();
     }
diff --git a/view.c b/view.c
@@ -195,7 +195,7 @@ restack()
 void
 togglemode(Arg *arg)
 {
-    arrange = arrange == dofloat ? dotile : dofloat;
+    arrange = (arrange == dofloat) ? dotile : dofloat;
     if(sel)
         arrange(NULL);
     else