applied Markus' decouple color-scheme patch
[dwm.git] / dwm.c
diff --git a/dwm.c b/dwm.c
index b2bc9bd..3d6cc28 100644 (file)
--- a/dwm.c
+++ b/dwm.c
@@ -60,7 +60,7 @@
 
 /* enums */
 enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */
-enum { SchemeNorm, SchemeSel, SchemeLast }; /* color schemes */
+enum { SchemeNorm, SchemeSel }; /* color schemes */
 enum { NetSupported, NetWMName, NetWMState,
        NetWMFullscreen, NetActiveWindow, NetWMWindowType,
        NetWMWindowTypeDialog, NetClientList, NetLast }; /* EWMH atoms */
@@ -263,7 +263,7 @@ static void (*handler[LASTEvent]) (XEvent *) = {
 static Atom wmatom[WMLast], netatom[NetLast];
 static int running = 1;
 static Cur *cursor[CurLast];
-static Scm scheme[SchemeLast];
+static Scm *scheme;
 static Display *dpy;
 static Drw *drw;
 static Monitor *mons, *selmon;
@@ -483,7 +483,7 @@ cleanup(void)
                cleanupmon(mons);
        for (i = 0; i < CurLast; i++)
                drw_cur_free(drw, cursor[i]);
-       for (i = 0; i < SchemeLast; i++)
+       for (i = 0; i < LENGTH(colors); i++)
                free(scheme[i]);
        drw_free(drw);
        XSync(dpy, False);
@@ -717,8 +717,8 @@ drawbar(Monitor *m)
        /* draw status first so it can be overdrawn by tags later */
        if (m == selmon) { /* status is only drawn on selected monitor */
                drw_setscheme(drw, scheme[SchemeNorm]);
-               sw = TEXTW(stext) - lrpad / 2; /* no right padding so status text hugs the corner */
-               drw_text(drw, m->ww - sw, 0, sw, bh, lrpad / 2 - 2, stext, 0);
+               sw = TEXTW(stext) - lrpad + 2; /* 2px right padding */
+               drw_text(drw, m->ww - sw, 0, sw, bh, 0, stext, 0);
        }
 
        for (c = m->clients; c; c = c->next) {
@@ -1549,6 +1549,7 @@ setmfact(const Arg *arg)
 void
 setup(void)
 {
+       int i;
        XSetWindowAttributes wa;
 
        /* clean up any zombies immediately */
@@ -1561,7 +1562,7 @@ setup(void)
        root = RootWindow(dpy, screen);
        drw = drw_create(dpy, screen, root, sw, sh);
        if (!drw_fontset_create(drw, fonts, LENGTH(fonts)))
-               die("no fonts could be loaded.\n");
+               die("no fonts could be loaded.");
        lrpad = drw->fonts->h;
        bh = drw->fonts->h + 2;
        updategeom();
@@ -1583,8 +1584,9 @@ setup(void)
        cursor[CurResize] = drw_cur_create(drw, XC_sizing);
        cursor[CurMove] = drw_cur_create(drw, XC_fleur);
        /* init appearance */
-       scheme[SchemeNorm] = drw_scm_create(drw, colors[SchemeNorm], 3);
-       scheme[SchemeSel] = drw_scm_create(drw, colors[SchemeSel], 3);
+       scheme = ecalloc(LENGTH(colors), sizeof(Scm));
+       for (i = 0; i < LENGTH(colors); i++)
+               scheme[i] = drw_scm_create(drw, colors[i], 3);
        /* init bars */
        updatebars();
        updatestatus();
@@ -2101,7 +2103,7 @@ xerrordummy(Display *dpy, XErrorEvent *ee)
 int
 xerrorstart(Display *dpy, XErrorEvent *ee)
 {
-       die("dwm: another window manager is already running\n");
+       die("dwm: another window manager is already running");
        return -1;
 }
 
@@ -2123,13 +2125,13 @@ int
 main(int argc, char *argv[])
 {
        if (argc == 2 && !strcmp("-v", argv[1]))
-               die("dwm-"VERSION "\n");
+               die("dwm-"VERSION);
        else if (argc != 1)
-               die("usage: dwm [-v]\n");
+               die("usage: dwm [-v]");
        if (!setlocale(LC_CTYPE, "") || !XSupportsLocale())
                fputs("warning: no locale support\n", stderr);
        if (!(dpy = XOpenDisplay(NULL)))
-               die("dwm: cannot open display\n");
+               die("dwm: cannot open display");
        checkotherwm();
        setup();
        scan();