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 *