import sys, os # run xclient_build first, then make sure the shared object is on sys.path from _xclient_cffi import ffi, lib # ffi "knows" about the declared variables and functions from the # cdef parts of the module xclient_build created, # lib "knows" how to call the functions from the set_source parts # of the module. class XError(Exception): pass def main(): display = lib.XOpenDisplay(ffi.NULL) if display == ffi.NULL: raise XError("cannot open display") w = lib.XCreateSimpleWindow(display, lib.DefaultRootWindow(display), 10, 10, 500, 350, 0, 0, 0) lib.XMapRaised(display, w) event = ffi.new("XEvent *") lib.XNextEvent(display, event) if __name__ == '__main__': main()