forked from mirror/dwm
some more additions/fixes
This commit is contained in:
parent
896f08d7d5
commit
2a0fc84c4a
5 changed files with 32 additions and 3 deletions
13
client.c
13
client.c
|
@ -93,6 +93,7 @@ focus(Client *c)
|
||||||
}
|
}
|
||||||
XUnmapWindow(dpy, c->title);
|
XUnmapWindow(dpy, c->title);
|
||||||
draw_bar();
|
draw_bar();
|
||||||
|
discard_events(EnterWindowMask);
|
||||||
XFlush(dpy);
|
XFlush(dpy);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -116,7 +117,7 @@ manage(Window w, XWindowAttributes *wa)
|
||||||
XGetTransientForHint(dpy, c->win, &c->trans);
|
XGetTransientForHint(dpy, c->win, &c->trans);
|
||||||
twa.override_redirect = 1;
|
twa.override_redirect = 1;
|
||||||
twa.background_pixmap = ParentRelative;
|
twa.background_pixmap = ParentRelative;
|
||||||
twa.event_mask = SubstructureNotifyMask | ExposureMask;
|
twa.event_mask = ExposureMask;
|
||||||
|
|
||||||
c->title = XCreateWindow(dpy, root, c->tx, c->ty, c->tw, c->th,
|
c->title = XCreateWindow(dpy, root, c->tx, c->ty, c->tw, c->th,
|
||||||
0, DefaultDepth(dpy, screen), CopyFromParent,
|
0, DefaultDepth(dpy, screen), CopyFromParent,
|
||||||
|
@ -191,11 +192,19 @@ unmanage(Client *c)
|
||||||
XFlush(dpy);
|
XFlush(dpy);
|
||||||
XSetErrorHandler(error_handler);
|
XSetErrorHandler(error_handler);
|
||||||
XUngrabServer(dpy);
|
XUngrabServer(dpy);
|
||||||
discard_events(EnterWindowMask);
|
|
||||||
if(stack)
|
if(stack)
|
||||||
focus(stack);
|
focus(stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Client *
|
||||||
|
gettitle(Window w)
|
||||||
|
{
|
||||||
|
Client *c;
|
||||||
|
for(c = clients; c; c = c->next)
|
||||||
|
if(c->title == w)
|
||||||
|
return c;
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
Client *
|
Client *
|
||||||
getclient(Window w)
|
getclient(Window w)
|
||||||
|
|
16
cmd.c
16
cmd.c
|
@ -19,6 +19,22 @@ quit(void *aux)
|
||||||
running = False;
|
running = False;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
sel(void *aux)
|
||||||
|
{
|
||||||
|
const char *arg = aux;
|
||||||
|
Client *c;
|
||||||
|
|
||||||
|
if(!arg || !stack)
|
||||||
|
return;
|
||||||
|
if(!strncmp(arg, "next", 5))
|
||||||
|
focus(stack->snext ? stack->snext : stack);
|
||||||
|
else if(!strncmp(arg, "prev", 5)) {
|
||||||
|
for(c = stack; c && c->snext; c = c->snext);
|
||||||
|
focus(c ? c : stack);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
kill(void *aux)
|
kill(void *aux)
|
||||||
{
|
{
|
||||||
|
|
2
event.c
2
event.c
|
@ -146,7 +146,7 @@ expose(XEvent *e)
|
||||||
Client *c;
|
Client *c;
|
||||||
|
|
||||||
if(ev->count == 0) {
|
if(ev->count == 0) {
|
||||||
if((c = getclient(ev->window)))
|
if((c = gettitle(ev->window)))
|
||||||
draw_client(c);
|
draw_client(c);
|
||||||
else if(ev->window == barwin)
|
else if(ev->window == barwin)
|
||||||
draw_bar();
|
draw_bar();
|
||||||
|
|
2
kb.c
2
kb.c
|
@ -19,6 +19,8 @@ static const char *proglist[] = {
|
||||||
static Key key[] = {
|
static Key key[] = {
|
||||||
{ Mod1Mask, XK_Return, run, term },
|
{ Mod1Mask, XK_Return, run, term },
|
||||||
{ Mod1Mask, XK_p, run, proglist },
|
{ Mod1Mask, XK_p, run, proglist },
|
||||||
|
{ Mod1Mask, XK_k, sel, "prev"},
|
||||||
|
{ Mod1Mask, XK_j, sel, "next"},
|
||||||
{ Mod1Mask | ShiftMask, XK_c, kill, NULL},
|
{ Mod1Mask | ShiftMask, XK_c, kill, NULL},
|
||||||
{ Mod1Mask | ShiftMask, XK_q, quit, NULL},
|
{ Mod1Mask | ShiftMask, XK_q, quit, NULL},
|
||||||
};
|
};
|
||||||
|
|
2
wm.h
2
wm.h
|
@ -63,6 +63,7 @@ extern void draw_bar();
|
||||||
extern void run(void *aux);
|
extern void run(void *aux);
|
||||||
extern void quit(void *aux);
|
extern void quit(void *aux);
|
||||||
extern void kill(void *aux);
|
extern void kill(void *aux);
|
||||||
|
extern void sel(void *aux);
|
||||||
|
|
||||||
/* client.c */
|
/* client.c */
|
||||||
extern void manage(Window w, XWindowAttributes *wa);
|
extern void manage(Window w, XWindowAttributes *wa);
|
||||||
|
@ -73,6 +74,7 @@ extern void update_name(Client *c);
|
||||||
extern void draw_client(Client *c);
|
extern void draw_client(Client *c);
|
||||||
extern void resize(Client *c);
|
extern void resize(Client *c);
|
||||||
extern void update_size(Client *c);
|
extern void update_size(Client *c);
|
||||||
|
extern Client *gettitle(Window w);
|
||||||
|
|
||||||
/* event.c */
|
/* event.c */
|
||||||
extern unsigned int discard_events(long even_mask);
|
extern unsigned int discard_events(long even_mask);
|
||||||
|
|
Loading…
Reference in a new issue