volatile sig_atomic_t restart_wm = 0;
int outputs = 0;
/*int last_focus_event = FocusOut;*/
+int (*xerrorxlib)(Display *, XErrorEvent *);
int other_wm;
int ss_enabled = 0;
int xrandr_support;
void
bar_setup(struct swm_region *r)
{
- char *bar_font;
+ char *font;
xcb_screen_t *screen = get_screen(r->s->idx);
uint32_t wa[3];
if ((r->bar = calloc(1, sizeof(struct swm_bar))) == NULL)
err(1, "bar_setup: calloc: failed to allocate memory.");
- while ((bar_font = strsep(&bar_fonts, " ,")) != NULL) {
- if (*bar_font == '\0')
+ while ((font = strsep(&bar_fonts, " ,")) != NULL) {
+ if (*font == '\0')
continue;
- DNPRINTF(SWM_D_INIT, "bar_setup: try font %s\n", bar_font);
+ DNPRINTF(SWM_D_INIT, "bar_setup: try font %s\n", font);
bar_font = XftFontOpenName(display, DefaultScreen(display),
- bar_font);
+ font);
if (!bar_font) {
- warnx("unable to load font %s", bar_font);
+ warnx("unable to load font %s", font);
continue;
} else {
DNPRINTF(SWM_D_INIT, "successfully opened font %s\n",
- bar_font);
+ font);
break;
}
}
screenchange((void *)evt);
}
+xerror(Display *d, XErrorEvent *ee)
+{
+#ifdef SWM_DEBUG
+ char error_text[1024];
+ XGetErrorText(display, ee->error_code, error_text, sizeof(error_text));
+ DNPRINTF(SWM_D_MISC, "xerror: error_code: %u, error_text: %s\n",
+ ee->error_code, error_text);
+#endif
+ return -1;
+}
+
int
main(int argc, char *argv[])
{
if (!(display = XOpenDisplay(0)))
errx(1, "can not open display");
+ /* prevent xlib from exiting on an error */
+ xerrorxlib = XSetErrorHandler(xerror);
+
conn = XGetXCBConnection(display);
if (xcb_connection_has_error(conn))
errx(1, "can not get XCB connection");