Cygwin X server accepts xfixes version 5.0 but doesn't handle xcb_xfixes_hide_cursor

Frank Eske
Thu Oct 15 19:31:55 GMT 2020

I'm building an XCB-based application that uses xcb_xfixes_hide_cursor. The
X server reports back version 5.0 in xcb_fixes_query_version_reply and
accepts xcb_xfixes_hide_cursor requests, but does not hide the cursor. When
omitting the xcb_fixes_query_version operation, the xcb_xfixes_hide_cursor
is (properly) rejected. Compiling and running the same program under
Fedora, the cursor is hidden when running natively. When running an ssh
remote xterm to Fedora, the hide_cursor again does nothing.

The associated X11/extensions/Xfixes.h XFixesHideCursor() works
identically. It fails to do anything but does not report any error

When testing this on Fedora, I also noticed that xterm hides the cursor in
exactly the same manner I want for my application, and doesn't on Cygwin
(where it always remains visible.) That is, typing hides the cursor and
cursor movement shows it again. This should eliminate the need for a test
case which, because of all the ancillary setup needed, would be quite large.

Possibly the simplest fix would be to properly report back the version of
Xfixes you actually support, document that restriction at least in the
include file, and reject the Xfixes extension requests you don't handle. As
an aside, almost every other X feature I've tried to use has worked
identically on Cygwin and Fedora, usage bugs included.

Note that there is probably a work-around for this missing function by
creating a blank cursor and using that instead of hide_cursor.

More information about the Cygwin mailing list