I think your problem could lie in this definition:
XcursorImages* = object
nimage*: cint #* number of images */
images*: seq[ PXcursorImage] #* array of XcursorImage pointers */
name*: cstring #* name used to load images */
Run
a seq is a structure maintained by the Nim runtime, so a seq can't be part of
an imported C struct. Instead you probably have a pointer, pointing to the
first element of an array. Nim has to distinguish between a pointer to a single
object (ptr T), ptr UncheckedArray[T] for this.