Introduction
Introduction Statistics Contact Development Disclaimer Help
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(&regex, rule[i].pattern, 0)) {
if(!regexec(&regex, 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(&regex);
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);
}
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.