Introduction
Introduction Statistics Contact Development Disclaimer Help
tupdated man page - dwm - [fork] customized build of dwm, the dynamic window ma…
git clone git://src.adamsgaard.dk/dwm
Log
Files
Refs
README
LICENSE
---
commit 7e597ae204ce94398f8c722e335f20d5a4a30c8a
parent c39df91ab9826ef134bc1484b0d19186790132f3
Author: Anselm R. Garbe <[email protected]>
Date: Wed, 23 Aug 2006 18:50:46 +0200
updated man page
Diffstat:
M client.c | 22 +++++++++-------------
M config.arg.h | 5 ++---
M draw.c | 96 +++++++++++++++--------------…
M dwm.1 | 8 ++++----
M dwm.h | 2 +-
M tag.c | 2 ++
M view.c | 8 ++++----
7 files changed, 69 insertions(+), 74 deletions(-)
---
diff --git a/client.c b/client.c
t@@ -28,19 +28,15 @@ resizetitle(Client *c)
{
int i;
- c->tw = 0;
- for(i = 0; i < ntags; i++)
- if(c->tags[i])
- c->tw += textw(tags[i]);
- c->tw += textw(c->name);
+ c->tw = textw(c->name);
if(c->tw > c->w)
c->tw = c->w + 2;
c->tx = c->x + c->w - c->tw + 2;
c->ty = c->y;
if(isvisible(c))
- XMoveResizeWindow(dpy, c->title, c->tx, c->ty, c->tw, c->th);
+ XMoveResizeWindow(dpy, c->twin, c->tx, c->ty, c->tw, c->th);
else
- XMoveResizeWindow(dpy, c->title, c->tx + 2 * sw, c->ty, c->tw,…
+ XMoveResizeWindow(dpy, c->twin, c->tx + 2 * sw, c->ty, c->tw, …
}
t@@ -65,7 +61,7 @@ void
ban(Client *c)
{
XMoveWindow(dpy, c->win, c->x + 2 * sw, c->y);
- XMoveWindow(dpy, c->title, c->tx + 2 * sw, c->ty);
+ XMoveWindow(dpy, c->twin, c->tx + 2 * sw, c->ty);
}
void
t@@ -106,7 +102,7 @@ getctitle(Window w)
Client *c;
for(c = clients; c; c = c->next)
- if(c->title == w)
+ if(c->twin == w)
return c;
return NULL;
}
t@@ -214,7 +210,7 @@ manage(Window w, XWindowAttributes *wa)
twa.background_pixmap = ParentRelative;
twa.event_mask = ExposureMask | EnterWindowMask;
- c->title = XCreateWindow(dpy, root, c->tx, c->ty, c->tw, c->th,
+ c->twin = XCreateWindow(dpy, root, c->tx, c->ty, c->tw, c->th,
0, DefaultDepth(dpy, screen), CopyFromParent,
DefaultVisual(dpy, screen),
CWOverrideRedirect | CWBackPixmap | CWEventMask, &twa);
t@@ -242,7 +238,7 @@ manage(Window w, XWindowAttributes *wa)
sel = c;
arrange(NULL);
XMapWindow(dpy, c->win);
- XMapWindow(dpy, c->title);
+ XMapWindow(dpy, c->twin);
if(isvisible(c))
focus(c);
}
t@@ -329,7 +325,7 @@ void
settitle(Client *c)
{
char **list = NULL;
- int n;
+ int i, n;
XTextProperty name;
name.nitems = 0;
t@@ -392,7 +388,7 @@ unmanage(Client *c)
XSetErrorHandler(xerrordummy);
XUngrabButton(dpy, AnyButton, AnyModifier, c->win);
- XDestroyWindow(dpy, c->title);
+ XDestroyWindow(dpy, c->twin);
if(c->prev)
c->prev->next = c->next;
diff --git a/config.arg.h b/config.arg.h
t@@ -7,8 +7,7 @@
const char *tags[] = { "work", "net", "fnord", NULL };
#define DEFMODE dotile /* dofloat */
-#define TFONT "-*-terminus-medium-*-*-*-12-*-*-*-*-*-is…
-#define FONT "-*-snap-*-*-*-*-*-*-*-*-*-*-*-*"
+#define FONT "-*-terminus-medium-*-*-*-12-*-*-*-*-*-iso…
#define BGCOLOR "#0d121d"
#define FGCOLOR "#eeeeee"
#define BORDERCOLOR "#3f484d"
t@@ -19,7 +18,7 @@ const char *tags[] = { "work", "net", "fnord", NULL };
static Key key[] = { \
/* modifier key function …
{ MODKEY|ShiftMask, XK_Return, spawn, \
- { .cmd = "exec uxterm +sb -bg black -fg '#eeeeee' -fn '"TFONT"…
+ { .cmd = "exec uxterm +sb -bg black -fg '#eeeeee' -fn '"FONT"'…
{ MODKEY, XK_p, spawn, \
{ .cmd = "exec `ls -lL /usr/bin /usr/X11R6/bin /usr/local/bin …
"awk 'NF>2 && $1 ~ /^[^d].*x/ {print $NF}' | sort -u |…
diff --git a/draw.c b/draw.c
t@@ -22,19 +22,9 @@ textnw(const char *text, unsigned int len)
}
static void
-drawtext(const char *text, Bool invert)
+drawborder()
{
- int x, y, w, h;
- static char buf[256];
- unsigned int len, olen;
- XGCValues gcv;
XPoint points[5];
- XRectangle r = { dc.x, dc.y, dc.w, dc.h };
-
- XSetForeground(dpy, dc.gc, invert ? dc.fg : dc.bg);
- XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1);
- XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter);
- XSetForeground(dpy, dc.gc, dc.border);
points[0].x = dc.x;
points[0].y = dc.y;
points[1].x = dc.w - 1;
t@@ -46,6 +36,23 @@ drawtext(const char *text, Bool invert)
points[4].x = 0;
points[4].y = -(dc.h - 1);
XDrawLines(dpy, dc.drawable, dc.gc, points, 5, CoordModePrevious);
+}
+
+static void
+drawtext(const char *text, Bool invert, Bool highlight)
+{
+ int x, y, w, h;
+ static char buf[256];
+ unsigned int len, olen;
+ DC tmp;
+ XGCValues gcv;
+ XRectangle r = { dc.x, dc.y, dc.w, dc.h };
+
+ XSetForeground(dpy, dc.gc, invert ? dc.fg : dc.bg);
+ XFillRectangles(dpy, dc.drawable, dc.gc, &r, 1);
+ XSetLineAttributes(dpy, dc.gc, 1, LineSolid, CapButt, JoinMiter);
+ XSetForeground(dpy, dc.gc, dc.border);
+ drawborder();
if(!text)
return;
t@@ -75,18 +82,25 @@ drawtext(const char *text, Bool invert)
if(w > dc.w)
return; /* too long */
-
gcv.foreground = invert ? dc.bg : dc.fg;
gcv.background = invert ? dc.fg : dc.bg;
if(dc.font.set) {
XChangeGC(dpy, dc.gc, GCForeground | GCBackground, &gcv);
- XmbDrawImageString(dpy, dc.drawable, dc.font.set, dc.gc,
- x, y, buf, len);
+ XmbDrawString(dpy, dc.drawable, dc.font.set, dc.gc, x, y, buf,…
}
else {
gcv.font = dc.font.xfont->fid;
XChangeGC(dpy, dc.gc, GCForeground | GCBackground | GCFont, &g…
- XDrawImageString(dpy, dc.drawable, dc.gc, x, y, buf, len);
+ XDrawString(dpy, dc.drawable, dc.gc, x, y, buf, len);
+ }
+ if(highlight) {
+ tmp = dc;
+ dc.x += 2;
+ dc.y += 2;
+ dc.w -= 4;
+ dc.h -= 4;
+ drawborder();
+ dc = tmp;
}
}
t@@ -110,36 +124,29 @@ drawstatus()
dc.x = dc.y = 0;
dc.w = bw;
- drawtext(NULL, !istile);
+ drawtext(NULL, !istile, False);
dc.w = 0;
for(i = 0; i < ntags; i++) {
dc.x += dc.w;
dc.w = textw(tags[i]);
if(istile)
- drawtext(tags[i], seltag[i]);
+ drawtext(tags[i], seltag[i], sel && sel->tags[i]);
else
- drawtext(tags[i], !seltag[i]);
+ drawtext(tags[i], !seltag[i], sel && sel->tags[i]);
}
x = dc.x + dc.w;
dc.w = textw(stext);
dc.x = bx + bw - dc.w;
- drawtext(stext, !istile);
-
- if(sel) {
- for(i = 0; i < ntags; i++)
- if(sel->tags[i]) {
- dc.w = textw(tags[i]);
- dc.x -= dc.w;
- if(dc.x < x)
- break;
- drawtext(tags[i], istile);
- }
- if(dc.x > x && (dc.x - x) > bh) {
- dc.w = dc.x - x;
- dc.x = x;
- drawtext(sel->name, istile);
- }
+ if(dc.x < x) {
+ dc.x = x;
+ dc.w = bw - x;
+ }
+ drawtext(stext, !istile, False);
+
+ if(sel && ((dc.w = dc.x - x) > bh)) {
+ dc.x = x;
+ drawtext(sel->name, istile, False);
}
XCopyArea(dpy, dc.drawable, barwin, dc.gc, 0, 0, bw, bh, 0, 0);
XSync(dpy, False);
t@@ -153,26 +160,17 @@ drawtitle(Client *c)
if(c == sel && issel) {
drawstatus();
- XUnmapWindow(dpy, c->title);
+ XUnmapWindow(dpy, c->twin);
XSetWindowBorder(dpy, c->win, dc.fg);
return;
}
XSetWindowBorder(dpy, c->win, dc.bg);
- XMapWindow(dpy, c->title);
-
- dc.y = dc.w = 0;
- dc.x = c->tw;
- for(i = 0; i < ntags; i++)
- if(c->tags[i]) {
- dc.w = textw(tags[i]);
- dc.x -= dc.w;
- drawtext(tags[i], !istile);
- }
- dc.w = dc.x;
- dc.x = 0;
- drawtext(c->name, !istile);
- XCopyArea(dpy, dc.drawable, c->title, dc.gc, 0, 0, c->tw, c->th, 0, 0);
+ XMapWindow(dpy, c->twin);
+ dc.x = dc.y = 0;
+ dc.w = c->tw;
+ drawtext(c->name, !istile, False);
+ XCopyArea(dpy, dc.drawable, c->twin, dc.gc, 0, 0, c->tw, c->th, 0, 0);
XSync(dpy, False);
}
diff --git a/dwm.1 b/dwm.1
t@@ -21,12 +21,12 @@ tags. Selecting a certain tag for viewing will display all…
tag.
.P
.B dwm
-contains a small status bar which displays all available tags, the title and t…
-tags of the focused window, and the text read from standard input.
+contains a small status bar which displays all available tags, the title
+of the focused window, and the text read from standard input. The tags of the
+focused window are highlighted.
.P
.B dwm draws a 1-pixel border around windows to indicate the focus state.
-Unfocused windows contain a small bar in front of them displaying their title
-and tags.
+Unfocused windows contain a small bar in front of them displaying their title.
.SH OPTIONS
.TP
.B \-v
diff --git a/dwm.h b/dwm.h
t@@ -60,7 +60,7 @@ struct Client {
Client *next;
Client *prev;
Window win;
- Window title;
+ Window twin;
};
extern const char *tags[];
diff --git a/tag.c b/tag.c
t@@ -141,4 +141,6 @@ toggletag(Arg *arg)
settitle(sel);
if(!isvisible(sel))
arrange(NULL);
+ else
+ drawstatus();
}
diff --git a/view.c b/view.c
t@@ -168,21 +168,21 @@ restack()
fi = 0;
mi = 2 * f;
if(sel->isfloat || arrange == dofloat) {
- wins[fi++] = sel->title;
+ wins[fi++] = sel->twin;
wins[fi++] = sel->win;
}
else {
- wins[mi++] = sel->title;
+ wins[mi++] = sel->twin;
wins[mi++] = sel->win;
}
for(c = clients; c; c = c->next)
if(isvisible(c) && c != sel) {
if(c->isfloat || arrange == dofloat) {
- wins[fi++] = c->title;
+ wins[fi++] = c->twin;
wins[fi++] = c->win;
}
else {
- wins[mi++] = c->title;
+ wins[mi++] = c->twin;
wins[mi++] = c->win;
}
}
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.