Cursor cursor[CurLast];
XRectangle rect, barrect;
Bool running = True;
-Client *client = NULL;
+Bool sel_screen;
char *bartext, tag[256];
-int screen, sel_screen;
+int screen;
-/* draw structs */
Brush brush = {0};
-
-enum { WM_PROTOCOL_DELWIN = 1 };
+Client *clients = NULL;
+Client *stack = NULL;
static Bool other_wm_running;
-static int (*x_error_handler) (Display *, XErrorEvent *);
static char version[] = "gridwm - " VERSION ", (C)opyright MMVI Anselm R. Garbe\n";
+static int (*x_error_handler) (Display *, XErrorEvent *);
static void
usage()
if(wa.override_redirect || XGetTransientForHint(dpy, wins[i], &d1))
continue;
if(wa.map_state == IsViewable)
- manage(create_client(wins[i], &wa));
+ manage(wins[i], &wa);
}
}
if(wins)
status = XGetWindowProperty(dpy, w, a, 0L, l, False, t, &real, &format,
&res, &extra, prop);
- if(status != Success || *prop == NULL) {
+ if(status != Success || *prop == 0) {
return 0;
}
- if(res == 0)
+ if(res == 0) {
free((void *) *prop);
+ }
return res;
}
return protos;
}
+void
+send_message(Window w, Atom a, long value)
+{
+ XEvent e;
+
+ e.type = ClientMessage;
+ e.xclient.window = w;
+ e.xclient.message_type = a;
+ e.xclient.format = 32;
+ e.xclient.data.l[0] = value;
+ e.xclient.data.l[1] = CurrentTime;
+ XSendEvent(dpy, w, False, NoEventMask, &e);
+ XFlush(dpy);
+}
+
/*
* There's no way to check accesses to destroyed windows, thus
* those cases are ignored (especially on UnmapNotify's).
* Other types of errors call Xlib's default error handler, which
* calls exit().
*/
-static int
+int
error_handler(Display *dpy, XErrorEvent *error)
{
if(error->error_code == BadWindow
x_error_handler = XSetErrorHandler(error_handler);
/* init atoms */
- wm_atom[WMState] = XInternAtom(dpy, "WM_STATE", False);
wm_atom[WMProtocols] = XInternAtom(dpy, "WM_PROTOCOLS", False);
wm_atom[WMDelete] = XInternAtom(dpy, "WM_DELETE_WINDOW", False);
net_atom[NetSupported] = XInternAtom(dpy, "_NET_SUPPORTED", False);
XMapRaised(dpy, barwin);
draw_bar();
- wa.event_mask = SubstructureRedirectMask | EnterWindowMask | LeaveWindowMask;
+ wa.event_mask = SubstructureRedirectMask | EnterWindowMask \
+ | LeaveWindowMask;
wa.cursor = cursor[CurNormal];
XChangeWindowAttributes(dpy, root, CWEventMask | CWCursor, &wa);