Introduction
Introduction Statistics Contact Development Disclaimer Help
timplemented dynamic layout symbol stuff - dwm - [fork] customized build of dwm…
git clone git://src.adamsgaard.dk/dwm
Log
Files
Refs
README
LICENSE
---
commit e7300e0f6f10900b50d15ea3ae8949049431e38b
parent c3feffa1e25da4c39a31d7ae76637bacb0444042
Author: Anselm R Garbe <[email protected]>
Date: Wed, 16 Sep 2009 15:59:54 +0100
implemented dynamic layout symbol stuff
Diffstat:
M dwm.1 | 15 +++++++--------
M dwm.c | 37 +++++++++++++++--------------…
2 files changed, 25 insertions(+), 27 deletions(-)
---
diff --git a/dwm.1 b/dwm.1
t@@ -20,14 +20,13 @@ Windows are grouped by tags. Each window can be tagged wit…
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
diff --git a/dwm.c b/dwm.c
t@@ -121,6 +121,7 @@ typedef struct {
} Layout;
struct Monitor {
+ const char *ltsymbol;
float mfact;
int num;
int by; /* bar geometry */
t@@ -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 */
t@@ -384,6 +385,7 @@ arrange(void) {
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);
t@@ -649,13 +651,11 @@ dirtomon(int dir) {
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;
t@@ -669,15 +669,10 @@ drawbar(Monitor *m) {
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;
t@@ -1137,8 +1132,17 @@ maprequest(XEvent *e) {
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, …
}
t@@ -1431,8 +1435,6 @@ setmfact(const Arg *arg) {
void
setup(void) {
- unsigned int i;
- int w;
XSetWindowAttributes wa;
/* clean up any zombies immediately */
t@@ -1469,10 +1471,6 @@ setup(void) {
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 */
t@@ -1752,6 +1750,7 @@ updategeom(void) {
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 */
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.