comparison wm.c @ 32:082c75b937b5

removed unnecessary crap
author Anselm R. Garbe <garbeam@wmii.de>
date Thu, 13 Jul 2006 01:30:55 +0200
parents 386649deb651
children e90449e03167
comparison
equal deleted inserted replaced
31:386649deb651 32:082c75b937b5
1 /* 1 /*
2 * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com> 2 * (C)opyright MMVI Anselm R. Garbe <garbeam at gmail dot com>
3 * See LICENSE file for license details. 3 * See LICENSE file for license details.
4 */ 4 */
5 5
6 #include <errno.h>
7
8 #include <stdarg.h> 6 #include <stdarg.h>
9 #include <stdio.h> 7 #include <stdio.h>
10 #include <stdlib.h> 8 #include <stdlib.h>
11
12 #include <sys/types.h>
13 #include <sys/time.h>
14 9
15 #include <X11/cursorfont.h> 10 #include <X11/cursorfont.h>
16 #include <X11/Xatom.h> 11 #include <X11/Xatom.h>
17 #include <X11/Xproto.h> 12 #include <X11/Xproto.h>
18 13
26 [Tirc] = "irc", 21 [Tirc] = "irc",
27 [Twww] = "www", 22 [Twww] = "www",
28 [Twork] = "work", 23 [Twork] = "work",
29 }; 24 };
30 25
31 /* commands */
32 static char *cmdwallpaper[] = {
33 "feh", "--bg-scale", "/home/garbeam/wallpaper/bg.jpg", NULL
34 };
35
36 static char *cmdstatus[] = {
37 "sh", "-c", "echo -n `date '+%Y-%m-%d %H:%M'`"
38 " `uptime | sed 's/.*://; s/,//g'`"
39 " `acpi | awk '{print $4}' | sed 's/,//'`", NULL
40 };
41
42 /********** CUSTOMIZE **********/ 26 /********** CUSTOMIZE **********/
43 27
44 /* X structs */ 28 /* X structs */
45 Display *dpy; 29 Display *dpy;
46 Window root, barwin; 30 Window root, barwin;
49 Bool running = True; 33 Bool running = True;
50 Bool issel; 34 Bool issel;
51 35
52 char stext[1024]; 36 char stext[1024];
53 int tsel = Tdev; /* default tag */ 37 int tsel = Tdev; /* default tag */
54 int screen, sx, sy, sw, sh, bx, by, bw, bh; 38 int screen, sx, sy, sw, sh, th;
55 39
56 Brush brush = {0}; 40 Brush brush = {0};
57 Client *clients = NULL; 41 Client *clients = NULL;
58 Client *stack = NULL; 42 Client *stack = NULL;
59 43
207 int i; 191 int i;
208 XSetWindowAttributes wa; 192 XSetWindowAttributes wa;
209 unsigned int mask; 193 unsigned int mask;
210 Window w; 194 Window w;
211 XEvent ev; 195 XEvent ev;
212 fd_set fds;
213 struct timeval t, timeout = {
214 .tv_usec = 0,
215 .tv_sec = STATUSDELAY,
216 };
217 196
218 /* command line args */ 197 /* command line args */
219 for(i = 1; (i < argc) && (argv[i][0] == '-'); i++) { 198 for(i = 1; (i < argc) && (argv[i][0] == '-'); i++) {
220 switch (argv[i][1]) { 199 switch (argv[i][1]) {
221 case 'v': 200 case 'v':
243 XFlush(dpy); 222 XFlush(dpy);
244 223
245 if(other_wm_running) 224 if(other_wm_running)
246 error("gridwm: another window manager is already running\n"); 225 error("gridwm: another window manager is already running\n");
247 226
248 spawn(dpy, cmdwallpaper);
249 sx = sy = 0; 227 sx = sy = 0;
250 sw = DisplayWidth(dpy, screen); 228 sw = DisplayWidth(dpy, screen);
251 sh = DisplayHeight(dpy, screen); 229 sh = DisplayHeight(dpy, screen);
252 issel = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask); 230 issel = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask);
253 231
273 251
274 /* style */ 252 /* style */
275 loadcolors(dpy, screen, &brush, BGCOLOR, FGCOLOR, BORDERCOLOR); 253 loadcolors(dpy, screen, &brush, BGCOLOR, FGCOLOR, BORDERCOLOR);
276 loadfont(dpy, &brush.font, FONT); 254 loadfont(dpy, &brush.font, FONT);
277 255
278 wa.override_redirect = 1; 256 th = texth(&brush.font);
279 wa.background_pixmap = ParentRelative; 257
280 wa.event_mask = ExposureMask; 258 brush.drawable = XCreatePixmap(dpy, root, sw, th, DefaultDepth(dpy, screen));
281
282 bx = by = 0;
283 bw = sw;
284 bh = texth(&brush.font);
285 barwin = XCreateWindow(dpy, root, bx, by, bw, bh, 0, DefaultDepth(dpy, screen),
286 CopyFromParent, DefaultVisual(dpy, screen),
287 CWOverrideRedirect | CWBackPixmap | CWEventMask, &wa);
288 XDefineCursor(dpy, barwin, cursor[CurNormal]);
289 XMapRaised(dpy, barwin);
290
291 brush.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen));
292 brush.gc = XCreateGC(dpy, root, 0, 0); 259 brush.gc = XCreateGC(dpy, root, 0, 0);
293
294 pipe_spawn(stext, sizeof(stext), dpy, cmdstatus);
295 draw_bar();
296 260
297 wa.event_mask = SubstructureRedirectMask | EnterWindowMask \ 261 wa.event_mask = SubstructureRedirectMask | EnterWindowMask \
298 | LeaveWindowMask; 262 | LeaveWindowMask;
299 wa.cursor = cursor[CurNormal]; 263 wa.cursor = cursor[CurNormal];
300 XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa); 264 XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
301 265
302 arrange = grid; 266 arrange = grid;
303 scan_wins(); 267 scan_wins();
304 268
305 while(running) { 269 while(running) {
306 if(XPending(dpy) > 0) { 270 XNextEvent(dpy, &ev);
307 XNextEvent(dpy, &ev); 271 if(handler[ev.type])
308 if(handler[ev.type]) 272 (handler[ev.type])(&ev); /* call handler */
309 (handler[ev.type]) (&ev); /* call handler */
310 continue;
311 }
312 FD_ZERO(&fds);
313 FD_SET(ConnectionNumber(dpy), &fds);
314 t = timeout;
315 if(select(ConnectionNumber(dpy) + 1, &fds, NULL, NULL, &t) > 0)
316 continue;
317 else if(errno != EINTR) {
318 pipe_spawn(stext, sizeof(stext), dpy, cmdstatus);
319 draw_bar();
320 }
321 } 273 }
322 274
323 cleanup(); 275 cleanup();
324 XCloseDisplay(dpy); 276 XCloseDisplay(dpy);
325 277