dispose xcb things before xcb_disconnect
handle sigint via signalfd (mostly so valgrind covers the cleanup)