mirror of
https://git.suckless.org/dwm
synced 2024-12-26 10:56:31 +00:00
several changes, new stuff
This commit is contained in:
parent
b1669b5c48
commit
d6e0e6e987
7 changed files with 34 additions and 19 deletions
24
bar.c
24
bar.c
|
@ -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) + 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,
|
||||
barrect.height, 0, 0);
|
||||
|
|
5
client.c
5
client.c
|
@ -35,6 +35,10 @@ update_name(Client *c)
|
|||
}
|
||||
}
|
||||
XFree(name.value);
|
||||
if(c == stack)
|
||||
draw_bar();
|
||||
else
|
||||
draw_client(c);
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -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 | EnterWindowMask);
|
||||
XGetTransientForHint(dpy, c->win, &c->trans);
|
||||
if(!XGetWMNormalHints(dpy, c->win, &c->size, &msize) || !c->size.flags)
|
||||
c->size.flags = PSize;
|
||||
|
|
2
config.h
2
config.h
|
@ -7,4 +7,4 @@
|
|||
#define BGCOLOR "#000000"
|
||||
#define FGCOLOR "#ffaa00"
|
||||
#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]) {
|
||||
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;
|
||||
}
|
||||
close(pfd[0]);
|
||||
buf[n - 1] = 0;
|
||||
buf[n < len ? n : len - 1] = 0;
|
||||
}
|
||||
wait(0);
|
||||
}
|
||||
|
|
16
wm.c
16
wm.c
|
@ -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};
|
||||
|
@ -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. Garbe\n";
|
||||
static const char version[] = "gridwm - " VERSION ", (C)opyright MMVI Anselm R. Garbe\n";
|
||||
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()
|
||||
{
|
||||
|
@ -258,9 +264,9 @@ main(int argc, char *argv[])
|
|||
barrect.width, barrect.height, 0, DefaultDepth(dpy, screen),
|
||||
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 \
|
||||
|
@ -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 **)status);
|
||||
draw_bar();
|
||||
}
|
||||
}
|
||||
|
||||
cleanup();
|
||||
|
|
3
wm.h
3
wm.h
|
@ -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;
|
||||
|
@ -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);
|
||||
|
|
Loading…
Reference in a new issue