tremoved TLast tag enum, now tags is simple defined as char *[] array, the rest… | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit b35575574be53a1b3be42d7037d2f432a19a3890 | |
parent 666b4563a0064dd7aa27159813124837d306f81c | |
Author: [email protected] <unknown> | |
Date: Thu, 3 Aug 2006 12:12:26 +0200 | |
removed TLast tag enum, now tags is simple defined as char *[] array, the rest … | |
Diffstat: | |
M client.c | 4 +++- | |
M config.arg.h | 52 ++++++++++++++---------------… | |
M config.default.h | 48 ++++++++++++++---------------… | |
M draw.c | 4 ++-- | |
M dwm.h | 5 +++-- | |
M event.c | 2 +- | |
M main.c | 3 +++ | |
M tag.c | 19 ++++++++++--------- | |
8 files changed, 66 insertions(+), 71 deletions(-) | |
--- | |
diff --git a/client.c b/client.c | |
t@@ -16,7 +16,7 @@ resizetitle(Client *c) | |
int i; | |
c->tw = 0; | |
- for(i = 0; i < TLast; i++) | |
+ for(i = 0; i < ntags; i++) | |
if(c->tags[i]) | |
c->tw += textw(tags[i]); | |
c->tw += textw(c->name); | |
t@@ -211,6 +211,7 @@ manage(Window w, XWindowAttributes *wa) | |
XSetWindowAttributes twa; | |
c = emallocz(sizeof(Client)); | |
+ c->tags = emallocz(ntags * sizeof(Bool)); | |
c->win = w; | |
c->x = c->tx = wa->x; | |
c->y = c->ty = wa->y; | |
t@@ -429,6 +430,7 @@ unmanage(Client *c) | |
if(!sel) | |
sel = clients; | |
} | |
+ free(c->tags); | |
free(c); | |
XSync(dpy, False); | |
diff --git a/config.arg.h b/config.arg.h | |
t@@ -3,18 +3,11 @@ | |
* See LICENSE file for license details. | |
*/ | |
-enum { Tfnord, Tdev, Tnet, Twork, Tmisc, TLast }; | |
#define TAGS \ | |
-const char *tags[TLast] = { \ | |
- [Tfnord] = "fnord", \ | |
- [Tdev] = "dev", \ | |
- [Tnet] = "net", \ | |
- [Twork] = "work", \ | |
- [Tmisc] = "misc", \ | |
-}; | |
+const char *tags[] = { "fnord", "dev", "net", "work", "misc", NULL }; | |
#define DEFMODE dotile /* dofloat */ | |
-#define DEFTAG Tdev | |
+#define DEFTAG 1 /* index */ | |
#define FONT "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso… | |
#define BGCOLOR "#0a2c2d" | |
#define FGCOLOR "#ddeeee" | |
t@@ -33,11 +26,11 @@ const char *tags[TLast] = { \ | |
const char *xlock[] = { "xlock", NULL }; \ | |
static Key key[] = { \ | |
/* modifier key function argument… | |
- { MODKEY, XK_0, view, { .… | |
- { MODKEY, XK_1, view, { .… | |
- { MODKEY, XK_2, view, { .… | |
- { MODKEY, XK_3, view, { .… | |
- { MODKEY, XK_4, view, { .… | |
+ { MODKEY, XK_0, view, { .… | |
+ { MODKEY, XK_1, view, { .… | |
+ { MODKEY, XK_2, view, { .… | |
+ { MODKEY, XK_3, view, { .… | |
+ { MODKEY, XK_4, view, { .… | |
{ MODKEY, XK_h, viewprev, { 0 } }… | |
{ MODKEY, XK_j, focusnext, { 0 } … | |
{ MODKEY, XK_k, focusprev, { 0 } … | |
t@@ -45,16 +38,16 @@ static Key key[] = { \ | |
{ MODKEY, XK_m, togglemax, { 0 } … | |
{ MODKEY, XK_space, togglemode, { 0 } }, \ | |
{ MODKEY, XK_Return, zoom, { 0 } … | |
- { MODKEY|ControlMask, XK_0, appendtag, { … | |
- { MODKEY|ControlMask, XK_1, appendtag, { … | |
- { MODKEY|ControlMask, XK_2, appendtag, { … | |
- { MODKEY|ControlMask, XK_3, appendtag, { … | |
- { MODKEY|ControlMask, XK_4, appendtag, { … | |
- { MODKEY|ShiftMask, XK_0, replacetag, { .… | |
- { MODKEY|ShiftMask, XK_1, replacetag, { .… | |
- { MODKEY|ShiftMask, XK_2, replacetag, { .… | |
- { MODKEY|ShiftMask, XK_3, replacetag, { .… | |
- { MODKEY|ShiftMask, XK_4, replacetag, { .… | |
+ { MODKEY|ControlMask, XK_0, appendtag, { … | |
+ { MODKEY|ControlMask, XK_1, appendtag, { … | |
+ { MODKEY|ControlMask, XK_2, appendtag, { … | |
+ { MODKEY|ControlMask, XK_3, appendtag, { … | |
+ { MODKEY|ControlMask, XK_4, appendtag, { … | |
+ { MODKEY|ShiftMask, XK_0, replacetag, { .… | |
+ { MODKEY|ShiftMask, XK_1, replacetag, { .… | |
+ { MODKEY|ShiftMask, XK_2, replacetag, { .… | |
+ { MODKEY|ShiftMask, XK_3, replacetag, { .… | |
+ { MODKEY|ShiftMask, XK_4, replacetag, { .… | |
{ MODKEY|ShiftMask, XK_c, killclient, { 0… | |
{ MODKEY|ShiftMask, XK_q, quit, {… | |
{ MODKEY|ShiftMask, XK_Return, spawn, { .… | |
t@@ -64,10 +57,11 @@ static Key key[] = { \ | |
}; | |
#define RULES \ | |
+ const unsigned int firefox[] = { 2 }; \ | |
static Rule rule[] = { \ | |
- /* class:instance tags isfloat *… | |
- { "Firefox.*", { [Tnet] = True }, False … | |
- { "Gimp.*", { 0 }, True}… | |
- { "MPlayer.*", { 0 }, Tr… | |
- { "Acroread.*", { 0 }, T… | |
+ /* class:instance tags isfloat */ \ | |
+ { "Firefox.*", firefox, False }, \ | |
+ { "Gimp.*", NULL, True}, \ | |
+ { "MPlayer.*", NULL, True}, \ | |
+ { "Acroread.*", NULL, True}, \ | |
}; | |
diff --git a/config.default.h b/config.default.h | |
t@@ -3,18 +3,11 @@ | |
* See LICENSE file for license details. | |
*/ | |
-enum { Tfnord, Tdev, Tnet, Twork, Tmisc, TLast }; | |
#define TAGS \ | |
-const char *tags[TLast] = { \ | |
- [Tfnord] = "fnord", \ | |
- [Tdev] = "dev", \ | |
- [Tnet] = "net", \ | |
- [Twork] = "work", \ | |
- [Tmisc] = "misc", \ | |
-}; | |
+const char *tags[] = { "0", "1", "2", "3", "4", NULL }; | |
#define DEFMODE dotile /* dofloat */ | |
-#define DEFTAG Tdev | |
+#define DEFTAG 1 /* index */ | |
#define FONT "fixed" | |
#define BGCOLOR "#666699" | |
#define FGCOLOR "#eeeeee" | |
t@@ -27,11 +20,11 @@ const char *tags[TLast] = { \ | |
const char *term[] = { "xterm", NULL }; \ | |
static Key key[] = { \ | |
/* modifier key function argument… | |
- { MODKEY, XK_0, view, { .… | |
- { MODKEY, XK_1, view, { .… | |
- { MODKEY, XK_2, view, { .… | |
- { MODKEY, XK_3, view, { .… | |
- { MODKEY, XK_4, view, { .… | |
+ { MODKEY, XK_0, view, { .… | |
+ { MODKEY, XK_1, view, { .… | |
+ { MODKEY, XK_2, view, { .… | |
+ { MODKEY, XK_3, view, { .… | |
+ { MODKEY, XK_4, view, { .… | |
{ MODKEY, XK_h, viewprev, { 0 } }… | |
{ MODKEY, XK_j, focusnext, { 0 } … | |
{ MODKEY, XK_k, focusprev, { 0 } … | |
t@@ -39,24 +32,25 @@ static Key key[] = { \ | |
{ MODKEY, XK_m, togglemax, { 0 } … | |
{ MODKEY, XK_space, togglemode, { 0 } }, \ | |
{ MODKEY, XK_Return, zoom, { 0 } … | |
- { MODKEY|ControlMask, XK_0, appendtag, { … | |
- { MODKEY|ControlMask, XK_1, appendtag, { … | |
- { MODKEY|ControlMask, XK_2, appendtag, { … | |
- { MODKEY|ControlMask, XK_3, appendtag, { … | |
- { MODKEY|ControlMask, XK_4, appendtag, { … | |
- { MODKEY|ShiftMask, XK_0, replacetag, { .… | |
- { MODKEY|ShiftMask, XK_1, replacetag, { .… | |
- { MODKEY|ShiftMask, XK_2, replacetag, { .… | |
- { MODKEY|ShiftMask, XK_3, replacetag, { .… | |
- { MODKEY|ShiftMask, XK_4, replacetag, { .… | |
+ { MODKEY|ControlMask, XK_0, appendtag, { … | |
+ { MODKEY|ControlMask, XK_1, appendtag, { … | |
+ { MODKEY|ControlMask, XK_2, appendtag, { … | |
+ { MODKEY|ControlMask, XK_3, appendtag, { … | |
+ { MODKEY|ControlMask, XK_4, appendtag, { … | |
+ { MODKEY|ShiftMask, XK_0, replacetag, { .… | |
+ { MODKEY|ShiftMask, XK_1, replacetag, { .… | |
+ { MODKEY|ShiftMask, XK_2, replacetag, { .… | |
+ { MODKEY|ShiftMask, XK_3, replacetag, { .… | |
+ { MODKEY|ShiftMask, XK_4, replacetag, { .… | |
{ MODKEY|ShiftMask, XK_c, killclient, { 0… | |
{ MODKEY|ShiftMask, XK_q, quit, {… | |
{ MODKEY|ShiftMask, XK_Return, spawn, { .… | |
}; | |
#define RULES \ | |
+ const unsigned int firefox[] = { 2 }; \ | |
static Rule rule[] = { \ | |
- /* class:instance tags isfloat *… | |
- { "Firefox.*", { [Tnet] = True }, False … | |
- { "Gimp.*", { 0 }, True}… | |
+ /* class:instance tags isfloat */ \ | |
+ { "Firefox.*", firefox, False }, \ | |
+ { "Gimp.*", NULL, True}, \ | |
}; | |
diff --git a/draw.c b/draw.c | |
t@@ -114,7 +114,7 @@ drawstatus() | |
drawtext(NULL, !istile, False); | |
dc.w = 0; | |
- for(i = 0; i < TLast; i++) { | |
+ for(i = 0; i < ntags; i++) { | |
dc.x += dc.w; | |
dc.w = textw(tags[i]); | |
if(istile) | |
t@@ -153,7 +153,7 @@ drawtitle(Client *c) | |
dc.x = dc.y = 0; | |
dc.w = 0; | |
- for(i = 0; i < TLast; i++) { | |
+ for(i = 0; i < ntags; i++) { | |
if(c->tags[i]) { | |
dc.x += dc.w; | |
dc.w = textw(tags[i]); | |
diff --git a/dwm.h b/dwm.h | |
t@@ -60,16 +60,17 @@ struct Client { | |
unsigned int border; | |
Bool isfloat; | |
Bool ismax; | |
- Bool tags[TLast]; | |
+ Bool *tags; | |
Client *next; | |
Client *prev; | |
Window win; | |
Window title; | |
}; | |
-extern const char *tags[TLast]; | |
+extern const char *tags[]; | |
extern char stext[1024]; | |
extern int tsel, screen, sx, sy, sw, sh, bx, by, bw, bh, mw; | |
+extern unsigned int ntags; | |
extern void (*handler[LASTEvent])(XEvent *); | |
extern void (*arrange)(Arg *); | |
extern Atom wmatom[WMLast], netatom[NetLast]; | |
diff --git a/event.c b/event.c | |
t@@ -105,7 +105,7 @@ buttonpress(XEvent *e) | |
switch(ev->button) { | |
default: | |
x = 0; | |
- for(a.i = 0; a.i < TLast; a.i++) { | |
+ for(a.i = 0; a.i < ntags; a.i++) { | |
x += textw(tags[a.i]); | |
if(ev->x < x) { | |
view(&a); | |
diff --git a/main.c b/main.c | |
t@@ -85,6 +85,7 @@ xerrorstart(Display *dsply, XErrorEvent *ee) | |
char stext[1024]; | |
int tsel = DEFTAG; | |
int screen, sx, sy, sw, sh, bx, by, bw, bh, mw; | |
+unsigned int ntags; | |
Atom wmatom[WMLast], netatom[NetLast]; | |
Bool running = True; | |
Bool issel = True; | |
t@@ -210,6 +211,8 @@ main(int argc, char *argv[]) | |
grabkeys(); | |
+ for(ntags = 0; tags[ntags]; ntags++); | |
+ | |
/* style */ | |
dc.bg = getcolor(BGCOLOR); | |
dc.fg = getcolor(FGCOLOR); | |
diff --git a/tag.c b/tag.c | |
t@@ -13,7 +13,7 @@ | |
typedef struct { | |
const char *pattern; | |
- Bool tags[TLast]; | |
+ const unsigned int *tags; | |
Bool isfloat; | |
} Rule; | |
t@@ -145,7 +145,7 @@ replacetag(Arg *arg) | |
if(!sel) | |
return; | |
- for(i = 0; i < TLast; i++) | |
+ for(i = 0; i < ntags; i++) | |
sel->tags[i] = False; | |
appendtag(arg); | |
} | |
t@@ -155,7 +155,7 @@ settags(Client *c) | |
{ | |
char classinst[256]; | |
static unsigned int len = sizeof(rule) / sizeof(rule[0]); | |
- unsigned int i, j; | |
+ unsigned int i, j, n; | |
regex_t regex; | |
regmatch_t tmp; | |
Bool matched = False; | |
t@@ -168,10 +168,11 @@ settags(Client *c) | |
for(i = 0; !matched && i < len; i++) { | |
if(!regcomp(®ex, rule[i].pattern, 0)) { | |
if(!regexec(®ex, classinst, 1, &tmp, 0)) { | |
- for(j = 0; j < TLast; j++) { | |
- if((c->tags[j] = rule[i].tags[… | |
- matched = True; | |
- } | |
+ n = rule[i].tags ? | |
+ sizeof(rule[i].tags) / sizeof(… | |
+ matched = n != 0; | |
+ for(j = 0; j < n; j++) | |
+ c->tags[rule[i].tags[j]] = Tru… | |
c->isfloat = rule[i].isfloat; | |
} | |
regfree(®ex); | |
t@@ -204,13 +205,13 @@ view(Arg *arg) | |
void | |
viewnext(Arg *arg) | |
{ | |
- arg->i = (tsel < TLast-1) ? tsel+1 : 0; | |
+ arg->i = (tsel < ntags-1) ? tsel+1 : 0; | |
view(arg); | |
} | |
void | |
viewprev(Arg *arg) | |
{ | |
- arg->i = (tsel > 0) ? tsel-1 : TLast-1; | |
+ arg->i = (tsel > 0) ? tsel-1 : ntags-1; | |
view(arg); | |
} |