Я хочу скрыть системный курсор в Xorg
Я использую xcb для написания X11-приложения для Xorg, в некоторых случаях он будет скрывать курсор (например, xbanish или unclutter). Я пробовал использовать Xfixes: он отлично работает с xlib, но не работает с xcb.
Мой код для xlib, который скрывает курсор:
#include <X11/Xlib.h>
#include <X11/extensions/Xfixes.h>
Display *conn = XOpenDisplay(NULL);
XFixesHideCursor(conn, DefaultRootWindow(conn));
Xflush(conn);
Мой код для xcb, который ничего не делает:
#include <xcb/xcb.h>
#include <xcb/xfixes.h>
xcb_connection_t *conn = xcb_connect(NULL, NULL);
xcb_screen_t *screen = xcb_setup_roots_iterator(xcb_get_setup(conn)).data;
xcb_xfixes_hide_cursor(conn, screen->root);
xcb_flush(conn);
Я хочу понять, почему код для xcb ничего не делает или просто скрывает курсор в xcb.
UPDxtrace мне ничего не дал, ошибок не видит. Но я уверен, что в xcb_xfixes_hide_cursor
есть ошибка, потому что этот код дает мне не-NULL generic_error
:
xcb_void_cookie_t cookie = xcb_xfixes_hide_cursor_checked(conn, screen->root);
xcb_generic_error_t *generic_error = xcb_request_check(conn, cookie);
На самом деле, это дает мне эту ошибку:
{
"error_code": 1,
"major_code": 138,
"minor_code": 29,
"sequence:": 2,
"full_sequence": 2
}
Я использую xcb_errors_get_name_for_minor_code
и xcb_errors_get_name_for_major_code
из xcb-util-errors, чтобы узнать что-нибудь об ошибке. Это возникает внутри xcb_xfixes_hide_cursor_checked
.
x11trace
с версией xcb? - person Sam Varshavchik   schedule 08.09.2019