Hello Anselm,
thanks for the new rc! Below I attach my patch to visualize
the selected client in unselected columns with a different
color. This patch also renames "selcolor" to "focuscolor"
and uses "selcolor" for the third color. Also makes wmiimenu
use its own environment variables for colors. wmiirc is
patched accordingly and uses my current colorset (red/orange/gray).
Maybe somebody likes this...
Regards,
Stefan
P.S. draw_client() has 3 if's to set/change/reset the colors
for the window to be drawn in your original code - this is
anything but optimal...
--- wmii-20060511-rc4-baikal/cmd/wm/wm.h Thu May 11 01:25:23 2006
+++ mywmii-20060511-rc4-baikal/cmd/wm/wm.h Thu May 11 11:41:06 2006
@@ -54,6 +54,7 @@
FsFdata,
FsFcolors,
FsFfont,
+ FsFfocuscolors,
FsFselcolors,
FsFnormcolors,
FsFkeys,
@@ -149,9 +150,11 @@
/* default values */
typedef struct {
+ char focuscolor[24];
char selcolor[24];
char normcolor[24];
char *font;
+ BlitzColor focus;
BlitzColor sel;
BlitzColor norm;
unsigned int border;
--- wmii-20060511-rc4-baikal/cmd/wm/wm.c Thu May 11 01:25:23 2006
+++ mywmii-20060511-rc4-baikal/cmd/wm/wm.c Thu May 11 11:49:23 2006
@@ -143,7 +143,7 @@
gcv.subwindow_mode = IncludeInferiors;
gcv.function = GXxor;
- gcv.foreground = def.sel.bg;
+ gcv.foreground = def.focus.bg;
gcv.plane_mask = AllPlanes;
gcv.graphics_exposures = False;
xorgc = XCreateGC(dpy, root, GCForeground | GCGraphicsExposures
@@ -302,7 +302,9 @@
def.border = 2;
def.colmode = Coldefault;
def.colw = 0;
- cext_strlcpy(def.selcolor, BLITZ_SELCOLORS, sizeof(def.selcolor));
+ cext_strlcpy(def.focuscolor, BLITZ_SELCOLORS, sizeof(def.focuscolor));
+ blitz_loadcolor(dpy, &def.focus, screen, def.focuscolor);
+ cext_strlcpy(def.selcolor, BLITZ_NORMCOLORS, sizeof(def.selcolor));
blitz_loadcolor(dpy, &def.sel, screen, def.selcolor);
cext_strlcpy(def.normcolor, BLITZ_NORMCOLORS, sizeof(def.normcolor));
blitz_loadcolor(dpy, &def.norm, screen, def.normcolor);
--- wmii-20060511-rc4-baikal/cmd/wm/fs.c Thu May 11 01:25:23 2006
+++ mywmii-20060511-rc4-baikal/cmd/wm/fs.c Thu May 11 11:38:29 2006
@@ -35,6 +35,7 @@
* /def/ FsDdef
* /def/border FsFborder 0..n
* /def/font FsFfont xlib font name
+ * /def/focuscolors FsFfocuscolors focused colors
* /def/selcolors FsFselcolors selected colors
* /def/normcolors FsFnormcolors normal colors
* /def/rules FsFrules rules
@@ -195,6 +196,7 @@
snprintf(buf, sizeof(buf), "%u", i3);
return buf;
break;
+ case FsFfocuscolors: return "focuscolors"; break;
case FsFselcolors: return "selcolors"; break;
case FsFnormcolors: return "normcolors"; break;
case FsFfont: return "font"; break;
@@ -296,6 +298,8 @@
return FsFgeom;
if(!strncmp(name, "colors", 7))
return FsFcolors;
+ if(!strncmp(name, "focuscolors", 10))
+ return FsFfocuscolors;
if(!strncmp(name, "selcolors", 10))
return FsFselcolors;
if(!strncmp(name, "normcolors", 11))
@@ -456,6 +460,7 @@
case FsFfont:
case FsFcolw:
case FsFrules:
+ case FsFfocuscolors:
case FsFselcolors:
case FsFnormcolors:
case FsFkeys:
@@ -608,6 +613,7 @@
}
break;
case FsFcolors:
+ case FsFfocuscolors:
case FsFselcolors:
case FsFnormcolors:
return pack_stat(stat, wqid, qsel, name, 23, IXP_DMREAD |
IXP_DMWRITE);
@@ -1035,6 +1041,8 @@
case FsDdef:
fcall->count = stat_of_name(&stat, "border", m->wqid,
m->sel);
p = ixp_pack_stat(p, &stat);
+ fcall->count += stat_of_name(&stat, "focuscolors",
m->wqid, m->sel);
+ p = ixp_pack_stat(p, &stat);
fcall->count += stat_of_name(&stat, "selcolors",
m->wqid, m->sel);
p = ixp_pack_stat(p, &stat);
fcall->count += stat_of_name(&stat, "normcolors",
m->wqid, m->sel);
@@ -1204,6 +1212,10 @@
if((fcall->count = strlen(bar.data[i1]->colstr)))
memcpy(p, bar.data[i1]->colstr, fcall->count);
break;
+ case FsFfocuscolors:
+ if((fcall->count = strlen(def.focuscolor)))
+ memcpy(p, def.focuscolor, fcall->count);
+ break;
case FsFselcolors:
if((fcall->count = strlen(def.selcolor)))
memcpy(p, def.selcolor, fcall->count);
@@ -1406,6 +1418,15 @@
blitz_loadcolor(dpy, &bar.data[i1]->color, screen,
bar.data[i1]->colstr);
draw_bar();
break;
+ case FsFfocuscolors:
+ if((fcall->count != 23) || (fcall->data[0] != '#')
+ || (fcall->data[8] != '#') || (fcall->data[16]
!= '#'))
+ return Ebadvalue;
+ memcpy(def.focuscolor, fcall->data, fcall->count);
+ def.focuscolor[fcall->count] = 0;
+ blitz_loadcolor(dpy, &def.focus, screen, def.focuscolor);
+ draw_clients();
+ break;
case FsFselcolors:
if((fcall->count != 23) || (fcall->data[0] != '#')
|| (fcall->data[8] != '#') || (fcall->data[16]
!= '#'))
--- wmii-20060511-rc4-baikal/cmd/wm/bar.c Thu May 11 01:25:23 2006
+++ mywmii-20060511-rc4-baikal/cmd/wm/bar.c Thu May 11 11:30:53 2006
@@ -46,8 +46,8 @@
b->id = id++;
b->intern = intern;
cext_strlcpy(b->name, name, sizeof(b->name));
- cext_strlcpy(b->colstr, def.selcolor, sizeof(b->colstr));
- b->color = def.sel;
+ cext_strlcpy(b->colstr, def.focuscolor, sizeof(b->colstr));
+ b->color = def.focus;
cext_vattach(vector_of_bars(&bar), b);
qsort(bar.data, bar.size, sizeof(Bar *), comp_bar_name);
qsort(bar.data, bar.size, sizeof(Bar *), comp_bar_intern);
@@ -120,7 +120,7 @@
b = bar.data[i];
if(b->intern) {
if(view.size && !strncmp(b->name, view.data[sel]->name,
sizeof(b->name)))
- b->color = def.sel;
+ b->color = def.focus;
else
b->color = def.norm;
}
--- wmii-20060511-rc4-baikal/cmd/wm/client.c Thu May 11 01:25:23 2006
+++ mywmii-20060511-rc4-baikal/cmd/wm/client.c Thu May 11 11:34:29 2006
@@ -271,9 +271,12 @@
d.gc = c->gc;
if(c == sel_client())
- d.color = def.sel;
+ d.color = def.focus;
else
- d.color = def.norm;
+ if(f->area->sel == fidx)
+ d.color = def.sel;
+ else
+ d.color = def.norm;
/* draw border */
if(def.border) {
@@ -299,19 +302,10 @@
d.rect.x = f->rect.width - d.rect.width;
d.data = buf;
- if(f->area->sel == fidx)
- d.color = def.sel;
- else
- d.color = def.norm;
blitz_drawlabel(dpy, &d);
blitz_drawborder(dpy, &d);
d.rect.x = 0;
- if(c == sel_client())
- d.color = def.sel;
- else
- d.color = def.norm;
-
/* tag bar */
d.rect.width = d.rect.height + blitz_textwidth(dpy, &blitzfont,
c->tags);
if(d.rect.width + w > f->rect.width)
--- wmii-20060511-rc4-baikal/cmd/wmiimenu.c Thu May 11 01:25:23 2006
+++ mywmii-20060511-rc4-baikal/cmd/wmiimenu.c Thu May 11 11:24:27 2006
@@ -354,11 +354,11 @@
if (!fontstr)
fontstr = strdup(BLITZ_FONT);
blitz_loadfont(dpy, &draw.font, fontstr);
- normcolstr = getenv("WMII_NORMCOLORS");
+ normcolstr = getenv("WMII_MENU_NORMCOLORS");
if (!normcolstr || strlen(normcolstr) != 23)
normcolstr = strdup(BLITZ_NORMCOLORS);
blitz_loadcolor(dpy, &normcolor, screen, normcolstr);
- selcolstr = getenv("WMII_SELCOLORS");
+ selcolstr = getenv("WMII_MENU_SELCOLORS");
if (!selcolstr || strlen(selcolstr) != 23)
selcolstr = strdup(BLITZ_SELCOLORS);
blitz_loadcolor(dpy, &selcolor, screen, selcolstr);
--- wmii-20060511-rc4-baikal/rc/wmiirc Thu May 11 01:25:23 2006
+++ mywmii-20060511-rc4-baikal/rc/wmiirc Thu May 11 11:56:06 2006
@@ -10,6 +10,13 @@
ls -lL "$@" 2>/dev/null | awk 'NF>2 && $1 ~ /^[^d].*x/ {print $NF}' |
sort -u
}
+# give wmiiwm a chance to start
+while :
+do
+ echo Start wmiirc | wmiir write /event >/dev/null 2>&1 && break
+ sleep 1
+done
+
MODKEY=Mod1
UP=k
DOWN=j
@@ -17,23 +24,19 @@
RIGHT=l
WMII_FONT='fixed'
-WMII_SELCOLORS='#ffffff #285577 #4c7899'
-WMII_NORMCOLORS='#222222 #eeeeee #666666'
+WMII_NORMCOLORS='#000000 #888888 #888888'
+WMII_FOCUSCOLORS='#ffffff #bb0000 #bb0000'
+WMII_SELCOLORS='#000000 #dd7700 #dd7700'
# dark background
#WMII_NORMCOLORS='#e0e0e0 #0a0a0a #202020'
+WMII_MENU_NORMCOLORS=$WMII_NORMCOLORS
+WMII_MENU_SELCOLORS=$WMII_FOCUSCOLORS
+export WMII_FONT WMII_NORMCOLORS WMII_FOCUSCOLORS WMII_SELCOLORS
WMII_MENU_NORMCOLORS WMII_MENU_SELCOLORS
-export WMII_FONT WMII_NORMCOLORS WMII_SELCOLORS
-
-# give wmiiwm a chance to start
-while :
-do
- echo Start wmiirc | wmiir write /event >/dev/null 2>&1 && break
- sleep 1
-done
-
# WM CONFIGURATION
xwrite /def/border 2
xwrite /def/font $WMII_FONT
+xwrite /def/focuscolors $WMII_FOCUSCOLORS
xwrite /def/selcolors $WMII_SELCOLORS
xwrite /def/normcolors $WMII_NORMCOLORS
xwrite /def/colmode default
_______________________________________________
[email protected] mailing list
http://wmii.de/cgi-bin/mailman/listinfo/wmii