Mercurial > dwm-meillo
comparison client.c @ 46:58307ad56ec1
added xlock command (I need it regularly)
author | Anselm R. Garbe <garbeam@wmii.de> |
---|---|
date | Thu, 13 Jul 2006 12:19:10 +0200 |
parents | 7943c72e34eb |
children | 466591c2f967 |
comparison
equal
deleted
inserted
replaced
45:7943c72e34eb | 46:58307ad56ec1 |
---|---|
9 #include <X11/Xatom.h> | 9 #include <X11/Xatom.h> |
10 #include <X11/Xutil.h> | 10 #include <X11/Xutil.h> |
11 | 11 |
12 #include "dwm.h" | 12 #include "dwm.h" |
13 | 13 |
14 static void floating(void); | 14 static void (*arrange)(void *) = floating; |
15 static void tiling(void); | |
16 static void (*arrange)(void) = floating; | |
17 | 15 |
18 void | 16 void |
19 max(void *aux) | 17 max(void *aux) |
20 { | 18 { |
21 if(!stack) | 19 if(!stack) |
22 return; | 20 return; |
23 stack->x = sx; | 21 stack->x = sx; |
24 stack->y = sy; | 22 stack->y = sy; |
25 stack->w = sw - 2 * stack->border; | 23 stack->w = sw - 2 * stack->border; |
26 stack->h = sh - 2 * stack->border; | 24 stack->h = sh - 2 * stack->border; |
25 craise(stack); | |
27 resize(stack); | 26 resize(stack); |
28 discard_events(EnterWindowMask); | 27 discard_events(EnterWindowMask); |
29 } | 28 } |
30 | 29 |
31 static void | 30 void |
32 floating(void) | 31 floating(void *aux) |
33 { | 32 { |
34 Client *c; | 33 Client *c; |
35 | 34 |
35 arrange = floating; | |
36 for(c = stack; c; c = c->snext) | 36 for(c = stack; c; c = c->snext) |
37 resize(c); | 37 resize(c); |
38 discard_events(EnterWindowMask); | 38 discard_events(EnterWindowMask); |
39 } | 39 } |
40 | 40 |
41 static void | 41 void |
42 tiling(void) | 42 tiling(void *aux) |
43 { | 43 { |
44 Client *c; | 44 Client *c; |
45 int n, cols, rows, gw, gh, i, j; | 45 int n, cols, rows, gw, gh, i, j; |
46 float rt, fd; | 46 float rt, fd; |
47 | 47 |
48 arrange = tiling; | |
48 if(!clients) | 49 if(!clients) |
49 return; | 50 return; |
50 for(n = 0, c = clients; c; c = c->next, n++); | 51 for(n = 0, c = clients; c; c = c->next, n++); |
51 rt = sqrt(n); | 52 rt = sqrt(n); |
52 if(modff(rt, &fd) < 0.5) | 53 if(modff(rt, &fd) < 0.5) |
72 i = 0; | 73 i = 0; |
73 } | 74 } |
74 } | 75 } |
75 discard_events(EnterWindowMask); | 76 discard_events(EnterWindowMask); |
76 } | 77 } |
77 | |
78 void | |
79 toggle(void *aux) | |
80 { | |
81 if(arrange == floating) | |
82 arrange = tiling; | |
83 else | |
84 arrange = floating; | |
85 arrange(); | |
86 } | |
87 | |
88 | 78 |
89 void | 79 void |
90 sel(void *aux) | 80 sel(void *aux) |
91 { | 81 { |
92 const char *arg = aux; | 82 const char *arg = aux; |
278 GrabModeAsync, GrabModeSync, None, None); | 268 GrabModeAsync, GrabModeSync, None, None); |
279 XGrabButton(dpy, Button2, Mod1Mask, c->win, False, ButtonPressMask, | 269 XGrabButton(dpy, Button2, Mod1Mask, c->win, False, ButtonPressMask, |
280 GrabModeAsync, GrabModeSync, None, None); | 270 GrabModeAsync, GrabModeSync, None, None); |
281 XGrabButton(dpy, Button3, Mod1Mask, c->win, False, ButtonPressMask, | 271 XGrabButton(dpy, Button3, Mod1Mask, c->win, False, ButtonPressMask, |
282 GrabModeAsync, GrabModeSync, None, None); | 272 GrabModeAsync, GrabModeSync, None, None); |
283 arrange(); | 273 arrange(NULL); |
284 XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w / 2, c->h / 2); | 274 XWarpPointer(dpy, None, c->win, 0, 0, 0, 0, c->w / 2, c->h / 2); |
285 focus(c); | 275 focus(c); |
286 } | 276 } |
287 | 277 |
288 void | 278 void |
398 free(c); | 388 free(c); |
399 | 389 |
400 XFlush(dpy); | 390 XFlush(dpy); |
401 XSetErrorHandler(error_handler); | 391 XSetErrorHandler(error_handler); |
402 XUngrabServer(dpy); | 392 XUngrabServer(dpy); |
403 arrange(); | 393 arrange(NULL); |
404 if(stack) | 394 if(stack) |
405 focus(stack); | 395 focus(stack); |
406 } | 396 } |
407 | 397 |
408 Client * | 398 Client * |