about summary refs log tree commit diff stats
path: root/wm.c
diff options
context:
space:
mode:
Diffstat (limited to 'wm.c')
-rw-r--r--wm.c51
1 files changed, 34 insertions, 17 deletions
diff --git a/wm.c b/wm.c
index ed40a8b..1c9e1f9 100644
--- a/wm.c
+++ b/wm.c
@@ -18,15 +18,39 @@
 
 #include "wm.h"
 
+/********** CUSTOMIZE **********/
+
+char *tags[TLast] = {
+	[Tscratch] = "scratch",
+	[Tdev] = "dev",
+	[Tirc] = "irc",
+	[Twww] = "www",
+	[Twork] = "work",
+};
+
+/* commands */
+static char *cmdwallpaper[] = {
+	"feh", "--bg-scale", "/home/garbeam/wallpaper/bg.jpg", NULL
+};
+
+static char *cmdstatus[] = {
+	"sh", "-c", "echo -n `date '+%Y-%m-%d %H:%M'`" 
+	" `uptime | sed 's/.*://; s/,//g'`"
+	" `acpi | awk '{print $4}' | sed 's/,//'`", NULL
+};
+
+/********** CUSTOMIZE **********/
+
 /* X structs */
 Display *dpy;
 Window root, barwin;
 Atom wm_atom[WMLast], net_atom[NetLast];
 Cursor cursor[CurLast];
 Bool running = True;
-Bool sel_screen;
+Bool issel;
 
-char statustext[1024], tag[256];
+char stext[1024];
+int tsel = Tdev; /* default tag */
 int screen, sx, sy, sw, sh, bx, by, bw, bh;
 
 Brush brush = {0};
@@ -34,21 +58,12 @@ Client *clients = NULL;
 Client *stack = NULL;
 
 static Bool other_wm_running;
-static const char version[] = "gridwm - " VERSION ", (C)opyright MMVI Anselm R. Garbe\n";
+static const char version[] =
+	"gridwm - " VERSION ", (C)opyright MMVI Anselm R. Garbe\n";
 static int (*x_error_handler) (Display *, XErrorEvent *);
 
-static const char *status[] = {
-	"sh", "-c", "echo -n `date '+%Y-%m-%d %H:%M'`" 
-	" `uptime | sed 's/.*://; s/,//g'`"
-	" `acpi | awk '{print $4}' | sed 's/,//'`", 0
-};
-
 static void
-usage()
-{
-	fputs("usage: gridwm [-v]\n", stderr);
-	exit(1);
-}
+usage() {	error("usage: gridwm [-v]\n"); }
 
 static void
 scan_wins()
@@ -230,10 +245,11 @@ main(int argc, char *argv[])
 	if(other_wm_running)
 		error("gridwm: another window manager is already running\n");
 
+	spawn(dpy, cmdwallpaper);
 	sx = sy = 0;
 	sw = DisplayWidth(dpy, screen);
 	sh = DisplayHeight(dpy, screen);
-	sel_screen = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask);
+	issel = XQueryPointer(dpy, root, &w, &w, &i, &i, &i, &i, &mask);
 
 	XSetErrorHandler(0);
 	x_error_handler = XSetErrorHandler(error_handler);
@@ -275,7 +291,7 @@ main(int argc, char *argv[])
 	brush.drawable = XCreatePixmap(dpy, root, sw, bh, DefaultDepth(dpy, screen));
 	brush.gc = XCreateGC(dpy, root, 0, 0);
 
-	pipe_spawn(statustext, sizeof(statustext), dpy, (char **)status);
+	pipe_spawn(stext, sizeof(stext), dpy, cmdstatus);
 	draw_bar();
 
 	wa.event_mask = SubstructureRedirectMask | EnterWindowMask \
@@ -283,6 +299,7 @@ main(int argc, char *argv[])
 	wa.cursor = cursor[CurNormal];
 	XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);
 
+	arrange = grid;
 	scan_wins();
 
 	while(running) {
@@ -298,7 +315,7 @@ main(int argc, char *argv[])
 		if(select(ConnectionNumber(dpy) + 1, &fds, NULL, NULL, &t) > 0)
 			continue;
 		else if(errno != EINTR) {
-			pipe_spawn(statustext, sizeof(statustext), dpy, (char **)status);
+			pipe_spawn(stext, sizeof(stext), dpy, cmdstatus);
 			draw_bar();
 		}
 	}
> push dword [esi+4] ; eax push dword [esi+8] ; ecx push dword [esi+12] ; edx push dword [esi+16] ; ebx push dword [esi+24] ; ebp push dword [esi+28] ; esi push dword [esi+32] ; edi push dword [esi+48] ; ds push dword [esi+50] ; es push dword [esi+52] ; fs push dword [esi+54] ; gs mov al, 0x20 out 0x20, al mov eax, [esi+56] mov cr3, eax pop gs pop fs pop es pop ds pop edi pop esi pop ebp pop ebx pop edx pop ecx pop eax iret