mirror of git://git.suckless.org/dwm
several changes, new stuff
This commit is contained in:
parent
b1669b5c48
commit
d6e0e6e987
24
bar.c
24
bar.c
|
@ -5,22 +5,24 @@
|
||||||
|
|
||||||
#include "wm.h"
|
#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
|
void
|
||||||
draw_bar()
|
draw_bar()
|
||||||
{
|
{
|
||||||
static char buf[1024];
|
|
||||||
|
|
||||||
buf[0] = 0;
|
|
||||||
pipe_spawn(buf, sizeof(buf), dpy, (char **)status);
|
|
||||||
|
|
||||||
brush.rect = barrect;
|
brush.rect = barrect;
|
||||||
brush.rect.x = brush.rect.y = 0;
|
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) + labelheight(&brush.font);
|
||||||
|
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(&brush.font);
|
||||||
|
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,
|
XCopyArea(dpy, brush.drawable, barwin, brush.gc, 0, 0, barrect.width,
|
||||||
barrect.height, 0, 0);
|
barrect.height, 0, 0);
|
||||||
|
|
5
client.c
5
client.c
|
@ -35,6 +35,10 @@ update_name(Client *c)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
XFree(name.value);
|
XFree(name.value);
|
||||||
|
if(c == stack)
|
||||||
|
draw_bar();
|
||||||
|
else
|
||||||
|
draw_client(c);
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
@ -66,6 +70,7 @@ manage(Window w, XWindowAttributes *wa)
|
||||||
c->r[RFloat].height = wa->height;
|
c->r[RFloat].height = wa->height;
|
||||||
c->border = wa->border_width;
|
c->border = wa->border_width;
|
||||||
XSetWindowBorderWidth(dpy, c->win, 0);
|
XSetWindowBorderWidth(dpy, c->win, 0);
|
||||||
|
XSelectInput(dpy, c->win, StructureNotifyMask | PropertyChangeMask | EnterWindowMask);
|
||||||
XGetTransientForHint(dpy, c->win, &c->trans);
|
XGetTransientForHint(dpy, c->win, &c->trans);
|
||||||
if(!XGetWMNormalHints(dpy, c->win, &c->size, &msize) || !c->size.flags)
|
if(!XGetWMNormalHints(dpy, c->win, &c->size, &msize) || !c->size.flags)
|
||||||
c->size.flags = PSize;
|
c->size.flags = PSize;
|
||||||
|
|
2
config.h
2
config.h
|
@ -7,4 +7,4 @@
|
||||||
#define BGCOLOR "#000000"
|
#define BGCOLOR "#000000"
|
||||||
#define FGCOLOR "#ffaa00"
|
#define FGCOLOR "#ffaa00"
|
||||||
#define BORDERCOLOR "#000000"
|
#define BORDERCOLOR "#000000"
|
||||||
#define STATUSDELAY 1 /* milliseconds */
|
#define STATUSDELAY 10 /* milliseconds */
|
||||||
|
|
1
event.c
1
event.c
|
@ -187,7 +187,6 @@ propertynotify(XEvent *e)
|
||||||
}
|
}
|
||||||
if(ev->atom == XA_WM_NAME || ev->atom == net_atom[NetWMName]) {
|
if(ev->atom == XA_WM_NAME || ev->atom == net_atom[NetWMName]) {
|
||||||
update_name(c);
|
update_name(c);
|
||||||
/*draw_frame(c->sel);*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
2
util.c
2
util.c
|
@ -134,7 +134,7 @@ pipe_spawn(char *buf, unsigned int len, Display *dpy, char *argv[])
|
||||||
n += l;
|
n += l;
|
||||||
}
|
}
|
||||||
close(pfd[0]);
|
close(pfd[0]);
|
||||||
buf[n - 1] = 0;
|
buf[n < len ? n : len - 1] = 0;
|
||||||
}
|
}
|
||||||
wait(0);
|
wait(0);
|
||||||
}
|
}
|
||||||
|
|
16
wm.c
16
wm.c
|
@ -27,7 +27,7 @@ XRectangle rect, barrect;
|
||||||
Bool running = True;
|
Bool running = True;
|
||||||
Bool sel_screen;
|
Bool sel_screen;
|
||||||
|
|
||||||
char *bartext, tag[256];
|
char statustext[1024], tag[256];
|
||||||
int screen;
|
int screen;
|
||||||
|
|
||||||
Brush brush = {0};
|
Brush brush = {0};
|
||||||
|
@ -35,9 +35,15 @@ Client *clients = NULL;
|
||||||
Client *stack = NULL;
|
Client *stack = NULL;
|
||||||
|
|
||||||
static Bool other_wm_running;
|
static Bool other_wm_running;
|
||||||
static char version[] = "gridwm - " VERSION ", (C)opyright MMVI Anselm R. Garbe\n";
|
static const char version[] = "gridwm - " VERSION ", (C)opyright MMVI Anselm R. Garbe\n";
|
||||||
static int (*x_error_handler) (Display *, XErrorEvent *);
|
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
|
static void
|
||||||
usage()
|
usage()
|
||||||
{
|
{
|
||||||
|
@ -258,9 +264,9 @@ main(int argc, char *argv[])
|
||||||
barrect.width, barrect.height, 0, DefaultDepth(dpy, screen),
|
barrect.width, barrect.height, 0, DefaultDepth(dpy, screen),
|
||||||
CopyFromParent, DefaultVisual(dpy, screen),
|
CopyFromParent, DefaultVisual(dpy, screen),
|
||||||
CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);
|
CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);
|
||||||
bartext = NULL;
|
|
||||||
XDefineCursor(dpy, barwin, cursor[CurNormal]);
|
XDefineCursor(dpy, barwin, cursor[CurNormal]);
|
||||||
XMapRaised(dpy, barwin);
|
XMapRaised(dpy, barwin);
|
||||||
|
pipe_spawn(statustext, sizeof(statustext), dpy, (char **)status);
|
||||||
draw_bar();
|
draw_bar();
|
||||||
|
|
||||||
wa.event_mask = SubstructureRedirectMask | EnterWindowMask \
|
wa.event_mask = SubstructureRedirectMask | EnterWindowMask \
|
||||||
|
@ -282,8 +288,10 @@ main(int argc, char *argv[])
|
||||||
t = timeout;
|
t = timeout;
|
||||||
if(select(ConnectionNumber(dpy) + 1, &fds, NULL, NULL, &t) > 0)
|
if(select(ConnectionNumber(dpy) + 1, &fds, NULL, NULL, &t) > 0)
|
||||||
continue;
|
continue;
|
||||||
else if(errno != EINTR)
|
else if(errno != EINTR) {
|
||||||
|
pipe_spawn(statustext, sizeof(statustext), dpy, (char **)status);
|
||||||
draw_bar();
|
draw_bar();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
cleanup();
|
cleanup();
|
||||||
|
|
3
wm.h
3
wm.h
|
@ -55,7 +55,7 @@ extern Bool running, sel_screen, grid;
|
||||||
extern void (*handler[LASTEvent]) (XEvent *);
|
extern void (*handler[LASTEvent]) (XEvent *);
|
||||||
|
|
||||||
extern int screen;
|
extern int screen;
|
||||||
extern char *bartext, tag[256];
|
extern char statustext[1024], tag[256];
|
||||||
|
|
||||||
extern Brush brush;
|
extern Brush brush;
|
||||||
extern Client *clients, *stack;
|
extern Client *clients, *stack;
|
||||||
|
@ -74,6 +74,7 @@ extern void unmanage(Client *c);
|
||||||
extern Client *getclient(Window w);
|
extern Client *getclient(Window w);
|
||||||
extern void focus(Client *c);
|
extern void focus(Client *c);
|
||||||
extern void update_name(Client *c);
|
extern void update_name(Client *c);
|
||||||
|
extern void draw_client(Client *c);
|
||||||
|
|
||||||
/* event.c */
|
/* event.c */
|
||||||
extern unsigned int flush_events(long even_mask);
|
extern unsigned int flush_events(long even_mask);
|
||||||
|
|
Loading…
Reference in New Issue