all repos — dwm @ e7300e0f6f10900b50d15ea3ae8949049431e38b

my dwm build

implemented dynamic layout symbol stuff
Anselm R Garbe garbeam@gmail.com
Wed, 16 Sep 2009 15:59:54 +0100
commit

e7300e0f6f10900b50d15ea3ae8949049431e38b

parent

c3feffa1e25da4c39a31d7ae76637bacb0444042

2 files changed, 25 insertions(+), 27 deletions(-)

jump to
M dwm.1dwm.1

@@ -20,14 +20,13 @@ Windows are grouped by tags. Each window can be tagged with one or multiple

tags. Selecting certain tags displays all windows with these tags. .P Each screen contains a small status bar which displays all available tags, the -layout, the number of visible windows, the title of the focused window, and the -text read from the root window name property, if the screen is focused. A -floating window is indicated with an empty square and a maximised floating -window is indicated with a filled square before the windows title. The -selected tags are indicated with a different color. The tags of the focused -window are indicated with a filled square in the top left corner. The tags -which are applied to one or more windows are indicated with an empty square in -the top left corner. +layout, the title of the focused window, and the text read from the root window +name property, if the screen is focused. A floating window is indicated with an +empty square and a maximised floating window is indicated with a filled square +before the windows title. The selected tags are indicated with a different +color. The tags of the focused window are indicated with a filled square in the +top left corner. The tags which are applied to one or more windows are +indicated with an empty square in the top left corner. .P dwm draws a small border around windows to indicate the focus state. .SH OPTIONS
M dwm.cdwm.c

@@ -121,6 +121,7 @@ void (*arrange)(Monitor *);

} Layout; struct Monitor { + const char *ltsymbol; float mfact; int num; int by; /* bar geometry */

@@ -238,7 +239,7 @@ static void zoom(const Arg *arg);

/* variables */ static const char broken[] = "broken"; -static char stext[256], ntext[8]; +static char stext[256]; static int screen; static int sw, sh; /* X display screen geometry width, height */ static int bh, blw = 0; /* bar geometry */

@@ -384,6 +385,7 @@ for(m = mons; m; m = m->next)

showhide(m->stack); focus(NULL); for(m = mons; m; m = m->next) { + m->ltsymbol = m->lt[m->sellt]->symbol; if(m->lt[m->sellt]->arrange) m->lt[m->sellt]->arrange(m); restack(m);

@@ -649,13 +651,11 @@

void drawbar(Monitor *m) { int x; - unsigned int i, n = 0, occ = 0, urg = 0; + unsigned int i, occ = 0, urg = 0; unsigned long *col; Client *c; for(c = m->clients; c; c = c->next) { - if(ISVISIBLE(c)) - n++; occ |= c->tags; if(c->isurgent) urg |= c->tags;

@@ -669,15 +669,10 @@ drawsquare(m == selmon && selmon->sel && selmon->sel->tags & 1 << i,

occ & 1 << i, urg & 1 << i, col); dc.x += dc.w; } - if(blw > 0) { - dc.w = blw; - drawtext(m->lt[m->sellt]->symbol, dc.norm, False); - dc.x += dc.w; - } - snprintf(ntext, sizeof ntext, "%u", n); - dc.w = TEXTW(ntext); - drawtext(ntext, dc.norm, False); - x = (dc.x += dc.w); + dc.w = blw = TEXTW(m->ltsymbol); + drawtext(m->ltsymbol, dc.norm, False); + dc.x += dc.w; + x = dc.x; if(m == selmon) { /* status is only drawn on selected monitor */ dc.w = TEXTW(stext); dc.x = m->ww - dc.w;

@@ -1137,8 +1132,17 @@ }

void monocle(Monitor *m) { + static char ntext[8]; + unsigned int n = 0; Client *c; + for(c = m->clients; c; c = c->next) + if(ISVISIBLE(c)) + n++; + if(n > 0) { /* override layout symbol */ + snprintf(ntext, sizeof ntext, "[%d]", n); + m->ltsymbol = ntext; + } for(c = nexttiled(m->clients); c; c = nexttiled(c->next)) resize(c, m->wx, m->wy, m->ww - 2 * c->bw, m->wh - 2 * c->bw, False); }

@@ -1431,8 +1435,6 @@ }

void setup(void) { - unsigned int i; - int w; XSetWindowAttributes wa; /* clean up any zombies immediately */

@@ -1469,10 +1471,6 @@ XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter);

if(!dc.font.set) XSetFont(dpy, dc.gc, dc.font.xfont->fid); /* init bars */ - for(blw = i = 0; LENGTH(layouts) > 1 && i < LENGTH(layouts); i++) { - w = TEXTW(layouts[i].symbol); - blw = MAX(blw, w); - } updatebars(); updatestatus(); /* EWMH support per view */

@@ -1752,6 +1750,7 @@ m->showbar = showbar;

m->topbar = topbar; m->lt[0] = &layouts[0]; m->lt[1] = &layouts[1 % LENGTH(layouts)]; + m->ltsymbol = layouts[0].symbol; updatebarpos(m); } /* reassign left over clients of disappeared monitors */