-#include "wm.h"
-
-void (*arrange)(void *aux);
-
-void
-max(void *aux)
-{
- if(!stack)
- return;
- stack->x = sx;
- stack->y = sy;
- stack->w = sw - 2 * stack->border;
- stack->h = sh - 2 * stack->border;
- resize(stack);
- discard_events(EnterWindowMask);
-}
-
-void
-floating(void *aux)
-{
- Client *c;
-
- arrange = floating;
- for(c = stack; c; c = c->snext)
- resize(c);
- discard_events(EnterWindowMask);
-}
-
-void
-grid(void *aux)
-{
- Client *c;
- int n, cols, rows, gw, gh, i, j;
- float rt, fd;
-
- arrange = grid;
- if(!clients)
- return;
- for(n = 0, c = clients; c; c = c->next, n++);
- rt = sqrt(n);
- if(modff(rt, &fd) < 0.5)
- rows = floor(rt);
- else
- rows = ceil(rt);
- if(rows * rows < n)
- cols = rows + 1;
- else
- cols = rows;
-
- gw = (sw - 2) / cols;
- gh = (sh - 2) / rows;
-
- for(i = j = 0, c = clients; c; c = c->next) {
- c->x = i * gw;
- c->y = j * gh;
- c->w = gw;
- c->h = gh;
- resize(c);
- if(++i == cols) {
- j++;
- i = 0;
- }
- }
- discard_events(EnterWindowMask);
-}
-
-void
-sel(void *aux)
-{
- const char *arg = aux;
- Client *c = NULL;
-
- if(!arg || !stack)
- return;
- if(!strncmp(arg, "next", 5))
- c = stack->snext ? stack->snext : stack;
- else if(!strncmp(arg, "prev", 5))
- for(c = stack; c && c->snext; c = c->snext);
- if(!c)
- c = stack;
- craise(c);
- focus(c);
-}