tseveral changes, new stuff - dwm - [fork] customized build of dwm, the dynamic… | |
git clone git://src.adamsgaard.dk/dwm | |
Log | |
Files | |
Refs | |
README | |
LICENSE | |
--- | |
commit d6e0e6e9879c144f5d374fca0c015fd6208fc27e | |
parent b1669b5c48f71c9a7a919dbf09a1af527c62f69a | |
Author: Anselm R. Garbe <[email protected]> | |
Date: Tue, 11 Jul 2006 18:53:41 +0200 | |
several changes, new stuff | |
Diffstat: | |
M bar.c | 24 +++++++++++++----------- | |
M client.c | 5 +++++ | |
M config.h | 2 +- | |
M event.c | 1 - | |
M util.c | 2 +- | |
M wm.c | 16 ++++++++++++---- | |
M wm.h | 3 ++- | |
7 files changed, 34 insertions(+), 19 deletions(-) | |
--- | |
diff --git a/bar.c b/bar.c | |
t@@ -5,22 +5,24 @@ | |
#include "wm.h" | |
-static const char *status[] = { | |
- "sh", "-c", "echo -n `date` `uptime | sed 's/.*://; s/,//g'`" | |
- " `acpi | awk '{print $4}' | sed 's/,//'`", 0 \ | |
-}; | |
- | |
void | |
draw_bar() | |
{ | |
- static char buf[1024]; | |
- | |
- buf[0] = 0; | |
- pipe_spawn(buf, sizeof(buf), dpy, (char **)status); | |
- | |
brush.rect = barrect; | |
brush.rect.x = brush.rect.y = 0; | |
- draw(dpy, &brush, False, buf); | |
+ draw(dpy, &brush, False, NULL); | |
+ | |
+ if(stack) { | |
+ brush.rect.width = textwidth(&brush.font, stack->name) + label… | |
+ swap((void **)&brush.fg, (void **)&brush.bg); | |
+ draw(dpy, &brush, False, stack->name); | |
+ swap((void **)&brush.fg, (void **)&brush.bg); | |
+ brush.rect.x += brush.rect.width; | |
+ } | |
+ | |
+ brush.rect.width = textwidth(&brush.font, statustext) + labelheight(&b… | |
+ brush.rect.x = barrect.x + barrect.width - brush.rect.width; | |
+ draw(dpy, &brush, False, statustext); | |
XCopyArea(dpy, brush.drawable, barwin, brush.gc, 0, 0, barrect.width, | |
barrect.height, 0, 0); | |
diff --git a/client.c b/client.c | |
t@@ -35,6 +35,10 @@ update_name(Client *c) | |
} | |
} | |
XFree(name.value); | |
+ if(c == stack) | |
+ draw_bar(); | |
+ else | |
+ draw_client(c); | |
} | |
void | |
t@@ -66,6 +70,7 @@ manage(Window w, XWindowAttributes *wa) | |
c->r[RFloat].height = wa->height; | |
c->border = wa->border_width; | |
XSetWindowBorderWidth(dpy, c->win, 0); | |
+ XSelectInput(dpy, c->win, StructureNotifyMask | PropertyChangeMask | E… | |
XGetTransientForHint(dpy, c->win, &c->trans); | |
if(!XGetWMNormalHints(dpy, c->win, &c->size, &msize) || !c->size.flags) | |
c->size.flags = PSize; | |
diff --git a/config.h b/config.h | |
t@@ -7,4 +7,4 @@ | |
#define BGCOLOR "#000000" | |
#define FGCOLOR "#ffaa00" | |
#define BORDERCOLOR "#000000" | |
-#define STATUSDELAY 1 /* milliseconds */ | |
+#define STATUSDELAY 10 /* milliseconds */ | |
diff --git a/event.c b/event.c | |
t@@ -187,7 +187,6 @@ propertynotify(XEvent *e) | |
} | |
if(ev->atom == XA_WM_NAME || ev->atom == net_atom[NetWMName]) { | |
update_name(c); | |
- /*draw_frame(c->sel);*/ | |
} | |
} | |
} | |
diff --git a/util.c b/util.c | |
t@@ -134,7 +134,7 @@ pipe_spawn(char *buf, unsigned int len, Display *dpy, char… | |
n += l; | |
} | |
close(pfd[0]); | |
- buf[n - 1] = 0; | |
+ buf[n < len ? n : len - 1] = 0; | |
} | |
wait(0); | |
} | |
diff --git a/wm.c b/wm.c | |
t@@ -27,7 +27,7 @@ XRectangle rect, barrect; | |
Bool running = True; | |
Bool sel_screen; | |
-char *bartext, tag[256]; | |
+char statustext[1024], tag[256]; | |
int screen; | |
Brush brush = {0}; | |
t@@ -35,9 +35,15 @@ Client *clients = NULL; | |
Client *stack = NULL; | |
static Bool other_wm_running; | |
-static char version[] = "gridwm - " VERSION ", (C)opyright MMVI Anselm R. Garb… | |
+static const char version[] = "gridwm - " VERSION ", (C)opyright MMVI Anselm R… | |
static int (*x_error_handler) (Display *, XErrorEvent *); | |
+static const char *status[] = { | |
+ "sh", "-c", "echo -n `date '+%Y/%m/%d %H:%M'`" | |
+ " `uptime | sed 's/.*://; s/,//g'`" | |
+ " `acpi | awk '{print $4}' | sed 's/,//'`", 0 | |
+}; | |
+ | |
static void | |
usage() | |
{ | |
t@@ -258,9 +264,9 @@ main(int argc, char *argv[]) | |
barrect.width, barrect.height, 0, DefaultDepth(dpy, sc… | |
CopyFromParent, DefaultVisual(dpy, screen), | |
CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa); | |
- bartext = NULL; | |
XDefineCursor(dpy, barwin, cursor[CurNormal]); | |
XMapRaised(dpy, barwin); | |
+ pipe_spawn(statustext, sizeof(statustext), dpy, (char **)status); | |
draw_bar(); | |
wa.event_mask = SubstructureRedirectMask | EnterWindowMask \ | |
t@@ -282,8 +288,10 @@ main(int argc, char *argv[]) | |
t = timeout; | |
if(select(ConnectionNumber(dpy) + 1, &fds, NULL, NULL, &t) > 0) | |
continue; | |
- else if(errno != EINTR) | |
+ else if(errno != EINTR) { | |
+ pipe_spawn(statustext, sizeof(statustext), dpy, (char … | |
draw_bar(); | |
+ } | |
} | |
cleanup(); | |
diff --git a/wm.h b/wm.h | |
t@@ -55,7 +55,7 @@ extern Bool running, sel_screen, grid; | |
extern void (*handler[LASTEvent]) (XEvent *); | |
extern int screen; | |
-extern char *bartext, tag[256]; | |
+extern char statustext[1024], tag[256]; | |
extern Brush brush; | |
extern Client *clients, *stack; | |
t@@ -74,6 +74,7 @@ extern void unmanage(Client *c); | |
extern Client *getclient(Window w); | |
extern void focus(Client *c); | |
extern void update_name(Client *c); | |
+extern void draw_client(Client *c); | |
/* event.c */ | |
extern unsigned int flush_events(long even_mask); |