all repos — dwm @ 33a74489f036600bb80a3c34fcdf10e5f9dafae1

my dwm build

applied Julian's enum approach,
	however renamed theme into scheme resp. Theme into ClrScheme
Anselm R Garbe anselm@garbe.us
Wed, 19 Jun 2013 19:35:33 +0200
commit

33a74489f036600bb80a3c34fcdf10e5f9dafae1

parent

5364697914fd4272fc1a6494b4fc522d2935427a

3 files changed, 37 insertions(+), 40 deletions(-)

jump to
M drw.cdrw.c

@@ -109,9 +109,8 @@ }

void drw_clr_free(Clr *clr) { - if(!clr) - return; - free(clr); + if(clr) + free(clr); } void

@@ -121,19 +120,18 @@ drw->font = font;

} void -drw_settheme(Drw *drw, Theme *theme) { - if(!drw || !theme) - return; - drw->theme = theme; +drw_setscheme(Drw *drw, ClrScheme *scheme) { + if(drw && scheme) + drw->scheme = scheme; } void drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int empty, int invert) { int dx; - if(!drw || !drw->font || !drw->theme) + if(!drw || !drw->font || !drw->scheme) return; - XSetForeground(drw->dpy, drw->gc, invert ? drw->theme->bg->rgb : drw->theme->fg->rgb); + XSetForeground(drw->dpy, drw->gc, invert ? drw->scheme->bg->rgb : drw->scheme->fg->rgb); dx = (drw->font->ascent + drw->font->descent + 2) / 4; if(filled) XFillRectangle(drw->dpy, drw->drawable, drw->gc, x+1, y+1, dx+1, dx+1);

@@ -147,9 +145,9 @@ char buf[256];

int i, tx, ty, th, len, olen; Extnts tex; - if(!drw || !drw->theme) + if(!drw || !drw->scheme) return; - XSetForeground(drw->dpy, drw->gc, invert ? drw->theme->fg->rgb : drw->theme->bg->rgb); + XSetForeground(drw->dpy, drw->gc, invert ? drw->scheme->fg->rgb : drw->scheme->bg->rgb); XFillRectangle(drw->dpy, drw->drawable, drw->gc, x, y, w, h); if(!text || !drw->font) return;

@@ -166,7 +164,7 @@ return;

memcpy(buf, text, len); if(len < olen) for(i = len; i && i > len - 3; buf[--i] = '.'); - XSetForeground(drw->dpy, drw->gc, invert ? drw->theme->bg->rgb : drw->theme->fg->rgb); + XSetForeground(drw->dpy, drw->gc, invert ? drw->scheme->bg->rgb : drw->scheme->fg->rgb); if(drw->font->set) XmbDrawString(drw->dpy, drw->drawable, drw->font->set, drw->gc, tx, ty, buf, len); else
M drw.hdrw.h

@@ -20,7 +20,7 @@ typedef struct {

Clr *fg; Clr *bg; Clr *border; -} Theme; +} ClrScheme; typedef struct { unsigned int w, h;

@@ -29,7 +29,7 @@ int screen;

Window root; Drawable drawable; GC gc; - Theme *theme; + ClrScheme *scheme; Fnt *font; } Drw;

@@ -59,7 +59,7 @@ void drw_cur_free(Drw *drw, Cur *cursor);

/* Drawing context manipulation */ void drw_setfont(Drw *drw, Fnt *font); -void drw_settheme(Drw *drw, Theme *theme); +void drw_setscheme(Drw *drw, ClrScheme *scheme); /* Drawing functions */ void drw_rect(Drw *drw, int x, int y, unsigned int w, unsigned int h, int filled, int empty, int invert);
M dwm.cdwm.c

@@ -57,14 +57,14 @@ #define TAGMASK ((1 << LENGTH(tags)) - 1)

#define TEXTW(X) (drw_font_getexts_width(drw->font, X, strlen(X)) + drw->font->h) /* enums */ -enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ -enum { ColBorder, ColFG, ColBG, ColLast }; /* color */ +enum { CurNormal, CurResize, CurMove, CurLast }; /* cursor */ +enum { SchemeNorm, SchemeSel, SchemeLast }; /* color schemes */ enum { NetSupported, NetWMName, NetWMState, NetWMFullscreen, NetActiveWindow, NetWMWindowType, - NetWMWindowTypeDialog, NetClientList, NetLast }; /* EWMH atoms */ + NetWMWindowTypeDialog, NetClientList, NetLast }; /* EWMH atoms */ enum { WMProtocols, WMDelete, WMState, WMTakeFocus, WMLast }; /* default atoms */ enum { ClkTagBar, ClkLtSymbol, ClkStatusText, ClkWinTitle, - ClkClientWin, ClkRootWin, ClkLast }; /* clicks */ + ClkClientWin, ClkRootWin, ClkLast }; /* clicks */ typedef union { int i;

@@ -260,8 +260,7 @@ };

static Atom wmatom[WMLast], netatom[NetLast]; static Bool running = True; static Cur *cursor[CurLast]; -static Theme thmnorm[ColLast]; -static Theme thmsel[ColLast]; +static ClrScheme scheme[SchemeLast]; static Display *dpy; static Drw *drw; static Fnt *fnt;

@@ -476,12 +475,12 @@ drw_cur_free(drw, cursor[CurNormal]);

drw_cur_free(drw, cursor[CurResize]); drw_cur_free(drw, cursor[CurMove]); drw_font_free(dpy, fnt); - drw_clr_free(thmnorm->border); - drw_clr_free(thmnorm->bg); - drw_clr_free(thmnorm->fg); - drw_clr_free(thmsel->border); - drw_clr_free(thmsel->bg); - drw_clr_free(thmsel->fg); + drw_clr_free(scheme[SchemeNorm].border); + drw_clr_free(scheme[SchemeNorm].bg); + drw_clr_free(scheme[SchemeNorm].fg); + drw_clr_free(scheme[SchemeSel].border); + drw_clr_free(scheme[SchemeSel].bg); + drw_clr_free(scheme[SchemeSel].fg); drw_free(drw); XSync(dpy, False); XSetInputFocus(dpy, PointerRoot, RevertToPointerRoot, CurrentTime);

@@ -705,14 +704,14 @@ }

x = 0; for(i = 0; i < LENGTH(tags); i++) { w = TEXTW(tags[i]); - drw_settheme(drw, m->tagset[m->seltags] & 1 << i ? thmsel : thmnorm); + drw_setscheme(drw, m->tagset[m->seltags] & 1 << i ? &scheme[SchemeSel] : &scheme[SchemeNorm]); drw_text(drw, x, 0, w, bh, tags[i], urg & 1 << i); drw_rect(drw, x, 0, w, bh, m == selmon && selmon->sel && selmon->sel->tags & 1 << i, occ & 1 << i, urg & 1 << i); x += w; } w = blw = TEXTW(m->ltsymbol); - drw_settheme(drw, thmnorm); + drw_setscheme(drw, &scheme[SchemeNorm]); drw_text(drw, x, 0, w, bh, m->ltsymbol, 0); x += w; xx = x;

@@ -730,12 +729,12 @@ x = m->ww;

if((w = x - xx) > bh) { x = xx; if(m->sel) { - drw_settheme(drw, m == selmon ? thmsel : thmnorm); + drw_setscheme(drw, m == selmon ? &scheme[SchemeSel] : &scheme[SchemeNorm]); drw_text(drw, x, 0, w, bh, m->sel->name, 0); drw_rect(drw, x, 0, w, bh, m->sel->isfixed, m->sel->isfloating, 0); } else { - drw_settheme(drw, thmnorm); + drw_setscheme(drw, &scheme[SchemeNorm]); drw_text(drw, x, 0, w, bh, NULL, 0); } }

@@ -793,7 +792,7 @@ clearurgent(c);

detachstack(c); attachstack(c); grabbuttons(c, True); - XSetWindowBorder(dpy, c->win, thmsel->border->rgb); + XSetWindowBorder(dpy, c->win, scheme[SchemeSel].border->rgb); setfocus(c); } else {

@@ -1041,7 +1040,7 @@ c->bw = borderpx;

wc.border_width = c->bw; XConfigureWindow(dpy, w, CWBorderWidth, &wc); - XSetWindowBorder(dpy, w, thmnorm->border->rgb); + XSetWindowBorder(dpy, w, scheme[SchemeNorm].border->rgb); configure(c); /* propagates border_width, if size doesn't change */ updatewindowtype(c); updatesizehints(c);

@@ -1523,12 +1522,12 @@ cursor[CurNormal] = drw_cur_create(drw, XC_left_ptr);

cursor[CurResize] = drw_cur_create(drw, XC_sizing); cursor[CurMove] = drw_cur_create(drw, XC_fleur); /* init appearance */ - thmnorm->border = drw_clr_create(drw, normbordercolor); - thmnorm->bg = drw_clr_create(drw, normbgcolor); - thmnorm->fg = drw_clr_create(drw, normfgcolor); - thmsel->border = drw_clr_create(drw, selbordercolor); - thmsel->bg = drw_clr_create(drw, selbgcolor); - thmsel->fg = drw_clr_create(drw, selfgcolor); + scheme[SchemeNorm].border = drw_clr_create(drw, normbordercolor); + scheme[SchemeNorm].bg = drw_clr_create(drw, normbgcolor); + scheme[SchemeNorm].fg = drw_clr_create(drw, normfgcolor); + scheme[SchemeSel].border = drw_clr_create(drw, selbordercolor); + scheme[SchemeSel].bg = drw_clr_create(drw, selbgcolor); + scheme[SchemeSel].fg = drw_clr_create(drw, selfgcolor); /* init bars */ updatebars(); updatestatus();

@@ -1674,7 +1673,7 @@ unfocus(Client *c, Bool setfocus) {

if(!c) return; grabbuttons(c, False); - XSetWindowBorder(dpy, c->win, thmnorm->border->rgb); + XSetWindowBorder(dpy, c->win, scheme[SchemeNorm].border->rgb); if(setfocus) { XSetInputFocus(dpy, root, RevertToPointerRoot, CurrentTime); XDeleteProperty(dpy, root, netatom[NetActiveWindow]);