#include #include "nawm.h" #include "inform.h" Display *dpy; int screen; Window root; int error_mode = SPEW_ON_ERROR; int min_keycode, max_keycode; int have_xtest_extension, xtest_op, xtest_ev, xtest_er; int use_xtest_extension, use_cache=1; int x_error(); main(argc, argv) int argc; char **argv; { int skip_nawmrc = 0; if (!(dpy = XOpenDisplay(NULL))) { fputs ("can't open display\n", stderr); exit(1); } init_bindings(); screen = DefaultScreen(dpy); root = RootWindow(dpy, screen); XSetErrorHandler(x_error); have_xtest_extension = (False != XQueryExtension(dpy, XTestExtensionName, &xtest_op, &xtest_ev, &xtest_er)); use_xtest_extension = (have_xtest_extension && HAVE_XTEST_EXTENSION); if (have_xtest_extension) inform_user(5, "have xtest extension"); else inform_user(5, "don't have xtest extension"); init_icon(); XDisplayKeycodes(dpy, &min_keycode, &max_keycode); while (++argv, --argc) if (**argv == '-') switch(argv[0][1]) { case 0: read_config_file(stdin); skip_nawmrc = 1; break; case 'v': set_verbosity(++argv); argc--; break; #ifdef USE_CACHE case 'n': use_cache=0; break; #endif default: die("unknown flag"); } else { FILE *f = fopen(*argv, "r"); if (!f) { perror(*argv); exit(1); } read_config_file(f); skip_nawmrc = 1; } if (!skip_nawmrc) read_nawmrc(); wait_for_binding(); } die(str) char *str; { fputs(str, stderr); fputc('\n', stderr); exit(0); } int x_error (dpy, xee) Display *dpy; XErrorEvent *xee; { char temp[80]; switch (error_mode) { case IGNORE_ERRORS: return 0; case BEEP_ON_ERROR: XBell(dpy, 100); return 0; case SPEW_ON_ERROR: XGetErrorText(dpy, xee->error_code, temp, 80); fprintf (stderr, "nawm X error :%s\n", temp); /* abort(); */ return 0; } return 0; }