XCB provides libxcb-cursor  as an replacement for Xlib's libXcurosr . By looking at the source code it appears to be a full replacement with minor gap in API (particularly the API for explicitly setting a cursor theme), but functionality-wise it looks good. There are projects that already use libxcb-cursor:
Kwin for example switched ~3 years ago:
Very few changes have gone into  in recent years, from which I conclude that the library is stable.
> The xcb variant only allows to create xcb_cursor_t for the default theme and size.
mgraesslin I guess by the default you meant whatever is in the RESOURCE_MANAGER property? Thus, not having XcursorSet/GetTheme type of API?
Current usages of libXcurosr APIs in QXcbCursor:
We QLibrary::resolve() this function, but never use it, so it can be simply dropped. No replacement needed. It was added by .
XcursorGetTheme and XcursorSetTheme (libXcurosr):
Was added by  as a workaround to Gnome bug. The commit message did not elaborate on anything!!! but from looking around I see that it must have been gnome-settings-daemon  bug. See af8a40c2de0f1be5ca40ac851858f2fe8798a4ba  and 5852428ae909f8965c91bdddd02fbd21e9b6994e  in gnome-settings-daemon/plugins/xsettings/gsd-xsettings-manager.c
Gnome uses xsettings , but did not update the RESOURCE_MANAGER property. Something that many libraries depend on, including libXcursor. The fixed gnome-settings-daemon is in Ubuntu 16.04, which is the minimal supported Ubuntu version. On Unity gnome-settings-daemon is named unity-settings-daemon, but the source code is about the same. Don't know what version is on RHEL 6, so the safest would be to keep the read-from-xsettings-fallback from . But then we need to add API for setting/getting theme name in . We can bundle the  and always fallback to the bundled version at configure time when libxcb-cursor on the system is not recent enough (for example see libxkbcommon, where we automatically fallback to bundled when version requirement is not satisfied).
Can simply be replaced with xcb_cursor_load_cursor(). And from the initial testing this library swap appears to fix the bug reported in
QTBUG-30016 - "But the bug reappears as soon as I restart Qt Creator." We need to add code for listening for property changes on RESOURCE_MANAGER. I have not looked into details why libXcursor's XcursorLibraryLoadCursor would not work as expected.
Is a total nonsense and can be dropped. No replacement needed. For details see https://bugreports.qt.io/browse/QTBUG-30016?focusedCommentId=397117&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-397117 It was added by , and again with no proper explanation!!!