#include <stdio.h>
#include <X11/X.h>
#include <X11/Xlib.h>
#include <X11/Xproto.h>
int defaultErrorHandler(Display *d, XErrorEvent *ev)
{
char buffer[1000];
XGetErrorText(d,ev->error_code,buffer,1000);
printf("Error: %s\n", buffer);
return 0;
}
int
xerror(Display *dpy, XErrorEvent *ee) {
if(ee->error_code == BadWindow
|| (ee->request_code == X_SetInputFocus && ee->error_code == BadMatch)
|| (ee->request_code == X_ConfigureWindow && ee->error_code == BadMatch)
|| (ee->request_code == X_GrabKey && ee->error_code == BadAccess))
return 0;
fprintf(stderr, "xmonad: fatal error: request code=%d, error code=%d\n",
ee->request_code, ee->error_code);
return defaultErrorHandler(dpy,ee);
}
void setErrorHandler() {
XSetErrorHandler(xerror);
}