diff --git a/client.c b/client.c index 5e7321d..d3b731b 100644 --- a/client.c +++ b/client.c @@ -11,9 +11,7 @@ #include "dwm.h" -static void floating(void); -static void tiling(void); -static void (*arrange)(void) = floating; +static void (*arrange)(void *) = floating; void max(void *aux) @@ -24,27 +22,30 @@ max(void *aux) stack->y = sy; stack->w = sw - 2 * stack->border; stack->h = sh - 2 * stack->border; + craise(stack); resize(stack); discard_events(EnterWindowMask); } -static void -floating(void) +void +floating(void *aux) { Client *c; + arrange = floating; for(c = stack; c; c = c->snext) resize(c); discard_events(EnterWindowMask); } -static void -tiling(void) +void +tiling(void *aux) { Client *c; int n, cols, rows, gw, gh, i, j; float rt, fd; + arrange = tiling; if(!clients) return; for(n = 0, c = clients; c; c = c->next, n++); @@ -75,17 +76,6 @@ tiling(void) discard_events(EnterWindowMask); } -void -toggle(void *aux) -{ - if(arrange == floating) - arrange = tiling; - else - arrange = floating; - arrange(); -} - - void sel(void *aux) { @@ -280,7 +270,7 @@ manage(Window w, XWindowAttributes *wa) GrabModeAsync, GrabModeSync, None, None); XGrabButton(dpy, Button3, Mod1Mask, c->win, False, ButtonPressMask, GrabModeAsync, GrabModeSync, None, None); - arrange(); + arrange(NULL); XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w / 2, c->h / 2); focus(c); } @@ -400,7 +390,7 @@ unmanage(Client *c) XFlush(dpy); XSetErrorHandler(error_handler); XUngrabServer(dpy); - arrange(); + arrange(NULL); if(stack) focus(stack); } diff --git a/dev.c b/dev.c index 221715e..b25d9e3 100644 --- a/dev.c +++ b/dev.c @@ -17,13 +17,16 @@ const char *term[] = { "-*-terminus-medium-*-*-*-13-*-*-*-*-*-iso10646-*",NULL }; const char *browse[] = { "firefox", NULL }; +const char *xlock[] = { "xlock", NULL }; static Key key[] = { { Mod1Mask, XK_Return, (void (*)(void *))spawn, term }, { Mod1Mask, XK_w, (void (*)(void *))spawn, browse }, + { Mod1Mask, XK_l, (void (*)(void *))spawn, xlock }, { Mod1Mask, XK_k, sel, "prev" }, { Mod1Mask, XK_j, sel, "next" }, - { Mod1Mask, XK_space, toggle, NULL }, + { Mod1Mask, XK_t, tiling, NULL }, + { Mod1Mask, XK_f, tiling, NULL }, { Mod1Mask, XK_m, max, NULL }, { Mod1Mask | ShiftMask, XK_c, ckill, NULL }, { Mod1Mask | ShiftMask, XK_q, quit, NULL }, diff --git a/dwm.h b/dwm.h index acfdcbb..1d672fd 100644 --- a/dwm.h +++ b/dwm.h @@ -100,7 +100,8 @@ extern void lower(Client *c); extern void ckill(void *aux); extern void sel(void *aux); extern void max(void *aux); -extern void toggle(void *aux); +extern void floating(void *aux); +extern void tiling(void *aux); extern void gravitate(Client *c, Bool invert); /* draw.c */ diff --git a/dwm.html b/dwm.html index 4b2f663..995c6fd 100644 --- a/dwm.html +++ b/dwm.html @@ -59,9 +59,9 @@