sig
  type event_mask =
      KeyPressMask
    | KeyReleaseMask
    | ButtonPressMask
    | ButtonReleaseMask
    | EnterWindowMask
    | LeaveWindowMask
    | PointerMotionMask
    | PointerMotionHintMask
    | Button1MotionMask
    | Button2MotionMask
    | Button3MotionMask
    | Button4MotionMask
    | Button5MotionMask
    | ButtonMotionMask
    | KeymapStateMask
    | ExposureMask
    | VisibilityChangeMask
    | StructureNotifyMask
    | ResizeRedirectMask
    | SubstructureNotifyMask
    | SubstructureRedirectMask
    | FocusChangeMask
    | PropertyChangeMask
    | ColormapChangeMask
    | OwnerGrabButtonMask
  type uint = int
  type 'a drawable
  type _window
  type window = Xlib._window Xlib.drawable
  type _pixmap
  type pixmap = Xlib._pixmap Xlib.drawable
  type gc
  type colormap
  type atom
  type time = int64
  type keysym = int
  type keycode = int
  type display
  external xOpenDisplay : name:string -> Xlib.display = "ml_XOpenDisplay"
  val open_display : ?name:string -> unit -> Xlib.display
  external xCloseDisplay : dpy:Xlib.display -> unit = "ml_XCloseDisplay"
  external xFlush : dpy:Xlib.display -> unit = "ml_XFlush"
  external xBell : dpy:Xlib.display -> percent:int -> unit = "ml_XBell"
  external xChangeKeyboardControl_bell_percent :
    dpy:Xlib.display -> bell_percent:int -> unit
    = "ml_XChangeKeyboardControl_bell_percent"
  external xChangeKeyboardControl_bell_pitch :
    dpy:Xlib.display -> bell_pitch:int -> unit
    = "ml_XChangeKeyboardControl_bell_pitch"
  external xChangeKeyboardControl_bell_duration :
    dpy:Xlib.display -> bell_duration:int -> unit
    = "ml_XChangeKeyboardControl_bell_duration"
  external xChangeKeyboardControl_bell :
    dpy:Xlib.display ->
    bell_percent:int -> bell_pitch:int -> bell_duration:int -> unit
    = "ml_XChangeKeyboardControl_bell"
  external xChangeKeyboardControl_key_click_percent :
    dpy:Xlib.display -> key_click_percent:int -> unit
    = "ml_XChangeKeyboardControl_key_click_percent"
  type close_mode = DestroyAll | RetainPermanent | RetainTemporary
  external xSetCloseDownMode :
    dpy:Xlib.display -> close_mode:Xlib.close_mode -> unit
    = "ml_XSetCloseDownMode"
  external xSync : dpy:Xlib.display -> discard:bool -> unit = "ml_XSync"
  external xConnectionNumber : dpy:Xlib.display -> int
    = "ml_XConnectionNumber"
  external xProtocolVersion : dpy:Xlib.display -> int = "ml_XProtocolVersion"
  external xProtocolRevision : dpy:Xlib.display -> int
    = "ml_XProtocolRevision"
  external xVendorRelease : dpy:Xlib.display -> int = "ml_XVendorRelease"
  external xServerVendor : dpy:Xlib.display -> string = "ml_XServerVendor"
  external xlibSpecificationRelease : unit -> int
    = "ml_XlibSpecificationRelease"
  external xGrabServer : dpy:Xlib.display -> unit = "ml_XGrabServer"
  external xUngrabServer : dpy:Xlib.display -> unit = "ml_XUngrabServer"
  external xUngrabPointer : dpy:Xlib.display -> time:Xlib.time -> unit
    = "ml_XUngrabPointer"
  external xUngrabKeyboard : dpy:Xlib.display -> time:Xlib.time -> unit
    = "ml_XUngrabKeyboard"
  type screen_number = private int
  external xDefaultScreen : dpy:Xlib.display -> Xlib.screen_number
    = "ml_XDefaultScreen"
  external xDisplayWidth : dpy:Xlib.display -> scr:Xlib.screen_number -> int
    = "ml_XDisplayWidth"
  external xDisplayHeight : dpy:Xlib.display -> scr:Xlib.screen_number -> int
    = "ml_XDisplayHeight"
  external xDefaultDepth : dpy:Xlib.display -> scr:Xlib.screen_number -> int
    = "ml_XDefaultDepth"
  external xListDepths :
    dpy:Xlib.display -> scr:Xlib.screen_number -> int array
    = "ml_XListDepths"
  external xDisplayPlanes : dpy:Xlib.display -> scr:Xlib.screen_number -> int
    = "ml_XDisplayPlanes"
  external xScreenCount : dpy:Xlib.display -> int = "ml_XScreenCount"
  val xScreenNumbers : dpy:Xlib.display -> Xlib.screen_number array
  type pixel_color
  external xBlackPixel :
    dpy:Xlib.display -> scr:Xlib.screen_number -> Xlib.pixel_color
    = "ml_XBlackPixel"
  external xWhitePixel :
    dpy:Xlib.display -> scr:Xlib.screen_number -> Xlib.pixel_color
    = "ml_XWhitePixel"
  type xColor
  external new_xColor : unit -> Xlib.xColor = "ml_alloc_XColor"
  external xAllocNamedColor :
    dpy:Xlib.display ->
    colormap:Xlib.colormap -> color_name:string -> Xlib.xColor * Xlib.xColor
    = "ml_XAllocNamedColor"
  external xColor_set_red : Xlib.xColor -> int -> unit = "ml_XColor_set_red"
  external xColor_set_green : Xlib.xColor -> int -> unit
    = "ml_XColor_set_green"
  external xColor_set_blue : Xlib.xColor -> int -> unit
    = "ml_XColor_set_blue"
  external xColor_set_rgb : Xlib.xColor -> r:int -> g:int -> b:int -> unit
    = "ml_XColor_set_rgb"
  type color_flags = DoRed | DoGreen | DoBlue
  external xColor_set_flags : Xlib.xColor -> Xlib.color_flags list -> unit
    = "ml_XColor_set_flags"
  external xAllocColor :
    dpy:Xlib.display -> colormap:Xlib.colormap -> Xlib.xColor -> unit
    = "ml_XAllocColor"
  external xAllocColorCells :
    dpy:Xlib.display ->
    colormap:Xlib.colormap ->
    contig:bool ->
    nplanes:Xlib.uint ->
    npixels:Xlib.uint -> Xlib.uint array * Xlib.uint array
    = "ml_XAllocColorCells"
  external xAllocColorCellsPixels :
    dpy:Xlib.display ->
    colormap:Xlib.colormap ->
    contig:bool -> npixels:Xlib.uint -> Xlib.uint array
    = "ml_XAllocColorCellsPixels"
  external xColor_pixel : Xlib.xColor -> Xlib.pixel_color = "ml_XColor_pixel"
  external xColor_set_pixel : Xlib.xColor -> Xlib.pixel_color -> unit
    = "ml_XColor_set_pixel"
  external xQueryColor :
    dpy:Xlib.display -> colormap:Xlib.colormap -> Xlib.xColor -> unit
    = "ml_XQueryColor"
  external xColor_get_red : Xlib.xColor -> int = "ml_XColor_get_red"
  external xColor_get_green : Xlib.xColor -> int = "ml_XColor_get_green"
  external xColor_get_blue : Xlib.xColor -> int = "ml_XColor_get_blue"
  external xColor_get_rgb : Xlib.xColor -> int * int * int
    = "ml_XColor_get_rgb"
  type visual
  type visualID
  external xDefaultVisual :
    dpy:Xlib.display -> scr:Xlib.screen_number -> Xlib.visual
    = "ml_XDefaultVisual"
  external visual_red_mask : visual:Xlib.visual -> int = "ml_Visual_red_mask"
  external visual_green_mask : visual:Xlib.visual -> int
    = "ml_Visual_green_mask"
  external visual_blue_mask : visual:Xlib.visual -> int
    = "ml_Visual_blue_mask"
  external visual_bits_per_rgb : visual:Xlib.visual -> int
    = "ml_Visual_bits_per_rgb"
  external visual_visualid : visual:Xlib.visual -> Xlib.visualID
    = "ml_Visual_visualid"
  external visual_map_entries : visual:Xlib.visual -> int
    = "ml_Visual_map_entries"
  type xVisualInfo
  type xVisualInfo_contents = {
    visual : Xlib.visual;
    visual_id : Xlib.visualID;
    screen_number : Xlib.screen_number;
    depth : int;
    red_mask : Xlib.uint;
    green_mask : Xlib.uint;
    blue_mask : Xlib.uint;
    colormap_size : int;
    bits_per_rgb : int;
  }
  external xVisualInfo_datas :
    visual_info:Xlib.xVisualInfo -> Xlib.xVisualInfo_contents
    = "ml_XVisualInfo_contents"
  external xFree_xVisualInfo : Xlib.xVisualInfo -> unit
    = "ml_XFree_XVisualInfo"
  type color_class =
      StaticGray
    | GrayScale
    | StaticColor
    | PseudoColor
    | TrueColor
    | DirectColor
  external new_xVisualInfo : unit -> Xlib.xVisualInfo
    = "ml_alloc_XVisualInfo"
  external xVisualInfo_set_visual : Xlib.visual -> unit
    = "ml_XVisualInfo_set_visual"
  external xVisualInfo_set_visualid : Xlib.visualID -> unit
    = "ml_XVisualInfo_set_visualid"
  external xVisualInfo_set_screen : Xlib.screen_number -> unit
    = "ml_XVisualInfo_set_screen"
  external xVisualInfo_set_depth : Xlib.uint -> unit
    = "ml_XVisualInfo_set_depth"
  external xVisualInfo_set_class : Xlib.color_class -> unit
    = "ml_XVisualInfo_set_class"
  external xVisualInfo_set_red_mask : Xlib.uint -> unit
    = "ml_XVisualInfo_set_red_mask"
  external xVisualInfo_set_green_mask : Xlib.uint -> unit
    = "ml_XVisualInfo_set_green_mask"
  external xVisualInfo_set_blue_mask : Xlib.uint -> unit
    = "ml_XVisualInfo_set_blue_mask"
  external xVisualInfo_set_colormap_size : int -> unit
    = "ml_XVisualInfo_set_colormap_size"
  external xVisualInfo_set_bits_per_rgb : int -> unit
    = "ml_XVisualInfo_set_bits_per_rgb"
  type visual_info_mask =
      VisualNoMask
    | VisualIDMask
    | VisualScreenMask
    | VisualDepthMask
    | VisualClassMask
    | VisualRedMaskMask
    | VisualGreenMaskMask
    | VisualBlueMaskMask
    | VisualColormapSizeMask
    | VisualBitsPerRGBMask
    | VisualAllMask
  external xGetVisualInfo :
    dpy:Xlib.display ->
    Xlib.visual_info_mask list ->
    template:Xlib.xVisualInfo -> Xlib.xVisualInfo array = "ml_XGetVisualInfo"
  external xMatchVisualInfo :
    dpy:Xlib.display ->
    scr:Xlib.screen_number ->
    depth:int -> color_class:Xlib.color_class -> Xlib.xVisualInfo
    = "ml_XMatchVisualInfo"
  external xDefaultColormap :
    dpy:Xlib.display -> scr:Xlib.screen_number -> Xlib.colormap
    = "ml_XDefaultColormap"
  external xDisplayCells : dpy:Xlib.display -> scr:Xlib.screen_number -> int
    = "ml_XDisplayCells"
  type colormap_alloc = AllocNone | AllocAll
  external xCreateColormap :
    dpy:Xlib.display ->
    win:Xlib.window ->
    visual:Xlib.visual -> alloc:Xlib.colormap_alloc -> Xlib.colormap
    = "ml_XCreateColormap"
  external xFreeColormap : dpy:Xlib.display -> colormap:Xlib.colormap -> unit
    = "ml_XFreeColormap"
  external xCopyColormapAndFree :
    dpy:Xlib.display -> colormap:Xlib.colormap -> Xlib.colormap
    = "ml_XCopyColormapAndFree"
  external xSetWindowColormap :
    dpy:Xlib.display -> win:Xlib.window -> colormap:Xlib.colormap -> unit
    = "ml_XSetWindowColormap"
  external xInstallColormap :
    dpy:Xlib.display -> colormap:Xlib.colormap -> unit
    = "ml_XInstallColormap"
  external xUninstallColormap :
    dpy:Xlib.display -> colormap:Xlib.colormap -> unit
    = "ml_XUninstallColormap"
  external xListInstalledColormaps :
    dpy:Xlib.display -> win:Xlib.window -> Xlib.colormap array
    = "ml_XListInstalledColormaps"
  type xSetWindowAttributes
  external new_xSetWindowAttributes : unit -> Xlib.xSetWindowAttributes
    = "ml_XSetWindowAttributes_alloc"
  type event_mask_list = Xlib.event_mask list
  type cursor
  external winAttr_set_background_pixmap :
    Xlib.xSetWindowAttributes -> background_pixmap:Xlib.pixmap -> unit
    = "ml_xSetWindowAttributes_set_background_pixmap"
  external winAttr_set_background_pixel :
    Xlib.xSetWindowAttributes -> background_pixel:Xlib.pixel_color -> unit
    = "ml_xSetWindowAttributes_set_background_pixel"
  external winAttr_set_border_pixmap :
    Xlib.xSetWindowAttributes -> border_pixmap:Xlib.pixmap -> unit
    = "ml_xSetWindowAttributes_set_border_pixmap"
  external winAttr_set_border_pixel :
    Xlib.xSetWindowAttributes -> border_pixel:Xlib.pixel_color -> unit
    = "ml_xSetWindowAttributes_set_border_pixel"
  external winAttr_set_bit_gravity :
    Xlib.xSetWindowAttributes -> bit_gravity:int -> unit
    = "ml_xSetWindowAttributes_set_bit_gravity"
  external winAttr_set_win_gravity :
    Xlib.xSetWindowAttributes -> win_gravity:int -> unit
    = "ml_xSetWindowAttributes_set_win_gravity"
  external winAttr_set_backing_store :
    Xlib.xSetWindowAttributes -> backing_store:int -> unit
    = "ml_xSetWindowAttributes_set_backing_store"
  external winAttr_set_backing_planes :
    Xlib.xSetWindowAttributes -> backing_planes:Xlib.uint -> unit
    = "ml_xSetWindowAttributes_set_backing_planes"
  external winAttr_set_backing_pixel :
    Xlib.xSetWindowAttributes -> backing_pixel:Xlib.uint -> unit
    = "ml_xSetWindowAttributes_set_backing_pixel"
  external winAttr_set_save_under :
    Xlib.xSetWindowAttributes -> save_under:bool -> unit
    = "ml_xSetWindowAttributes_set_save_under"
  external winAttr_set_event_mask :
    Xlib.xSetWindowAttributes -> event_mask:Xlib.event_mask_list -> unit
    = "ml_xSetWindowAttributes_set_event_mask"
  external winAttr_set_do_not_propagate_mask :
    Xlib.xSetWindowAttributes -> do_not_propagate_mask:int -> unit
    = "ml_xSetWindowAttributes_set_do_not_propagate_mask"
  external winAttr_set_override_redirect :
    Xlib.xSetWindowAttributes -> override_redirect:bool -> unit
    = "ml_xSetWindowAttributes_set_override_redirect"
  external winAttr_set_colormap :
    Xlib.xSetWindowAttributes -> colormap:Xlib.colormap -> unit
    = "ml_xSetWindowAttributes_set_colormap"
  external winAttr_set_cursor :
    Xlib.xSetWindowAttributes -> cursor:Xlib.cursor -> unit
    = "ml_xSetWindowAttributes_set_cursor"
  type set_win_attr = {
    attr : Xlib.xSetWindowAttributes;
    set_background_pixmap : background_pixmap:Xlib.pixmap -> unit;
    set_background_pixel : background_pixel:Xlib.pixel_color -> unit;
    set_border_pixmap : border_pixmap:Xlib.pixmap -> unit;
    set_border_pixel : border_pixel:Xlib.pixel_color -> unit;
    set_bit_gravity : bit_gravity:int -> unit;
    set_win_gravity : win_gravity:int -> unit;
    set_backing_store : backing_store:int -> unit;
    set_backing_planes : backing_planes:Xlib.uint -> unit;
    set_backing_pixel : backing_pixel:Xlib.uint -> unit;
    set_save_under : save_under:bool -> unit;
    set_event_mask : event_mask:Xlib.event_mask_list -> unit;
    set_do_not_propagate_mask : do_not_propagate_mask:int -> unit;
    set_override_redirect : override_redirect:bool -> unit;
    set_colormap : colormap:Xlib.colormap -> unit;
    set_cursor : cursor:Xlib.cursor -> unit;
  }
  val new_win_attr : unit -> Xlib.set_win_attr
  external xRootWindow :
    dpy:Xlib.display -> scr:Xlib.screen_number -> Xlib.window
    = "ml_XRootWindow"
  external xDefaultRootWindow : dpy:Xlib.display -> Xlib.window
    = "ml_XDefaultRootWindow"
  val root_win :
    dpy:Xlib.display -> ?scr:Xlib.screen_number -> unit -> Xlib.window
  external xCreateSimpleWindow :
    dpy:Xlib.display ->
    parent:Xlib.window ->
    x:int ->
    y:int ->
    width:Xlib.uint ->
    height:Xlib.uint ->
    border_width:Xlib.uint ->
    border_color:Xlib.pixel_color ->
    background:Xlib.pixel_color -> Xlib.window
    = "ml_XCreateSimpleWindow_bytecode" "ml_XCreateSimpleWindow"
  val simple_window :
    dpy:Xlib.display ->
    ?parent:Xlib.window ->
    ?x:int ->
    ?y:int ->
    ?width:Xlib.uint ->
    ?height:Xlib.uint ->
    ?border_width:Xlib.uint ->
    ?border_color:Xlib.pixel_color ->
    ?background:Xlib.pixel_color -> unit -> Xlib.window
  external xDestroyWindow : dpy:Xlib.display -> win:Xlib.window -> unit
    = "ml_XDestroyWindow"
  external xid : int -> 'a = "caml_get_xid"
  external xStoreName :
    dpy:Xlib.display -> win:Xlib.window -> name:string -> unit
    = "ml_XStoreName"
  external xFetchName : dpy:Xlib.display -> win:Xlib.window -> string
    = "ml_XFetchName"
  external xSelectInput :
    dpy:Xlib.display ->
    win:Xlib.window -> event_mask:Xlib.event_mask list -> unit
    = "ml_XSelectInput"
  external xMapWindow : dpy:Xlib.display -> win:Xlib.window -> unit
    = "ml_XMapWindow"
  external xMapSubwindows : dpy:Xlib.display -> win:Xlib.window -> unit
    = "ml_XMapSubwindows"
  external xMapRaised : dpy:Xlib.display -> win:Xlib.window -> unit
    = "ml_XMapRaised"
  external xUnmapWindow : dpy:Xlib.display -> win:Xlib.window -> unit
    = "ml_XUnmapWindow"
  type window_class = CopyFromParent | InputOutput | InputOnly
  type winattr_valuemask =
      CWBackPixmap
    | CWBackPixel
    | CWBorderPixmap
    | CWBorderPixel
    | CWBitGravity
    | CWWinGravity
    | CWBackingStore
    | CWBackingPlanes
    | CWBackingPixel
    | CWOverrideRedirect
    | CWSaveUnder
    | CWEventMask
    | CWDontPropagate
    | CWColormap
    | CWCursor
  external xCreateWindow :
    dpy:Xlib.display ->
    parent:Xlib.window ->
    x:int ->
    y:int ->
    width:Xlib.uint ->
    height:Xlib.uint ->
    border_width:Xlib.uint ->
    depth:int ->
    win_class:Xlib.window_class ->
    visual:Xlib.visual ->
    valuemask:Xlib.winattr_valuemask list ->
    attributes:Xlib.xSetWindowAttributes -> Xlib.window
    = "ml_XCreateWindow_bytecode" "ml_XCreateWindow"
  type winattr =
      BackPixmap of Xlib.pixmap
    | BackPixel of Xlib.pixel_color
    | BorderPixmap of Xlib.pixmap
    | BorderPixel of Xlib.pixel_color
    | BitGravity of int
    | WinGravity of int
    | BackingStore of int
    | BackingPlanes of Xlib.uint
    | BackingPixel of Xlib.uint
    | OverrideRedirect of bool
    | SaveUnder of bool
    | EventMask of Xlib.event_mask_list
    | DontPropagate of int
    | Colormap of Xlib.colormap
    | Cursor of Xlib.cursor
  val create_window :
    dpy:Xlib.display ->
    parent:Xlib.window ->
    x:int ->
    y:int ->
    width:Xlib.uint ->
    height:Xlib.uint ->
    border_width:Xlib.uint ->
    depth:int ->
    win_class:Xlib.window_class ->
    visual:Xlib.visual -> win_attrs:Xlib.winattr list -> Xlib.window
  external xResizeWindow :
    dpy:Xlib.display ->
    win:Xlib.window -> width:Xlib.uint -> height:Xlib.uint -> unit
    = "ml_XResizeWindow"
  external xMoveWindow :
    dpy:Xlib.display -> win:Xlib.window -> x:int -> y:int -> unit
    = "ml_XMoveWindow"
  external xMoveResizeWindow :
    dpy:Xlib.display ->
    win:Xlib.window ->
    x:int -> y:int -> width:Xlib.uint -> height:Xlib.uint -> unit
    = "ml_XMoveResizeWindow_bytecode" "ml_XMoveResizeWindow"
  external xLowerWindow : dpy:Xlib.display -> win:Xlib.window -> unit
    = "ml_XLowerWindow"
  external xRaiseWindow : dpy:Xlib.display -> win:Xlib.window -> unit
    = "ml_XRaiseWindow"
  external xQueryTree :
    dpy:Xlib.display ->
    win:Xlib.window -> Xlib.window * Xlib.window * Xlib.window array
    = "ml_XQueryTree"
  external xRestackWindows :
    dpy:Xlib.display -> win:Xlib.window array -> unit = "ml_XRestackWindows"
  external xCirculateSubwindowsDown :
    dpy:Xlib.display -> win:Xlib.window -> unit
    = "ml_XCirculateSubwindowsDown"
  external xCirculateSubwindowsUp :
    dpy:Xlib.display -> win:Xlib.window -> unit = "ml_XCirculateSubwindowsUp"
  type circulate_subwindows_direction = RaiseLowest | LowerHighest
  external xCirculateSubwindows :
    dpy:Xlib.display ->
    win:Xlib.window -> dir:Xlib.circulate_subwindows_direction -> unit
    = "ml_XCirculateSubwindows"
  type req_type = Atom of Xlib.atom | AnyPropertyType
  external xGetWindowProperty_string :
    dpy:Xlib.display ->
    win:Xlib.window ->
    property:Xlib.atom ->
    long_offset:int ->
    long_length:int ->
    delete:bool ->
    req_type:Xlib.req_type -> Xlib.atom * int * int * int * string
    = "ml_XGetWindowProperty_string_bytecode" "ml_XGetWindowProperty_string"
  external xGetWindowProperty_window :
    dpy:Xlib.display ->
    win:Xlib.window ->
    property:Xlib.atom ->
    long_offset:int ->
    long_length:int ->
    delete:bool ->
    req_type:Xlib.req_type -> Xlib.atom * int * int * int * Xlib.window
    = "ml_XGetWindowProperty_window_bytecode" "ml_XGetWindowProperty_window"
  type xScreen
  external xDefaultScreenOfDisplay : dpy:Xlib.display -> Xlib.xScreen
    = "ml_XDefaultScreenOfDisplay"
  external xScreenOfDisplay :
    dpy:Xlib.display -> scr:Xlib.screen_number -> Xlib.xScreen
    = "ml_XScreenOfDisplay"
  external xDefaultVisualOfScreen : Xlib.xScreen -> Xlib.visual
    = "ml_XDefaultVisualOfScreen"
  external xRootWindowOfScreen : Xlib.xScreen -> Xlib.window
    = "ml_XRootWindowOfScreen"
  external xBlackPixelOfScreen : Xlib.xScreen -> Xlib.pixel_color
    = "ml_XBlackPixelOfScreen"
  external xWhitePixelOfScreen : Xlib.xScreen -> Xlib.pixel_color
    = "ml_XWhitePixelOfScreen"
  external xDefaultColormapOfScreen : Xlib.xScreen -> Xlib.colormap
    = "ml_XDefaultColormapOfScreen"
  external xDefaultDepthOfScreen : Xlib.xScreen -> int
    = "ml_XDefaultDepthOfScreen"
  external xDefaultGCOfScreen : Xlib.xScreen -> Xlib.gc
    = "ml_XDefaultGCOfScreen"
  external xDisplayOfScreen : Xlib.xScreen -> Xlib.display
    = "ml_XDisplayOfScreen"
  external xWidthOfScreen : Xlib.xScreen -> int = "ml_XWidthOfScreen"
  external xHeightOfScreen : Xlib.xScreen -> int = "ml_XHeightOfScreen"
  external xScreenNumberOfScreen : Xlib.xScreen -> Xlib.screen_number
    = "ml_XScreenNumberOfScreen"
  type xWindowAttributes
  external xGetWindowAttributes :
    dpy:Xlib.display -> win:Xlib.window -> Xlib.xWindowAttributes
    = "ml_XGetWindowAttributes"
  external xWindowAttributes_x : Xlib.xWindowAttributes -> int
    = "ml_XWindowAttributes_x"
  external xWindowAttributes_y : Xlib.xWindowAttributes -> int
    = "ml_XWindowAttributes_y"
  external xWindowAttributes_width : Xlib.xWindowAttributes -> int
    = "ml_XWindowAttributes_width"
  external xWindowAttributes_height : Xlib.xWindowAttributes -> int
    = "ml_XWindowAttributes_height"
  external xWindowAttributes_depth : Xlib.xWindowAttributes -> int
    = "ml_XWindowAttributes_depth"
  external xWindowAttributes_screen : Xlib.xWindowAttributes -> Xlib.xScreen
    = "ml_XWindowAttributes_screen"
  external xWindowAttributes_border_width : Xlib.xWindowAttributes -> int
    = "ml_XWindowAttributes_border_width"
  external xWindowAttributes_colormap :
    Xlib.xWindowAttributes -> Xlib.colormap = "ml_XWindowAttributes_colormap"
  external xWindowAttributes_map_installed : Xlib.xWindowAttributes -> bool
    = "ml_XWindowAttributes_map_installed"
  type wattr = {
    wattr_x : int;
    wattr_y : int;
    wattr_width : int;
    wattr_height : int;
    wattr_depth : int;
  }
  val get_win_attrs : dpy:Xlib.display -> win:Xlib.window -> Xlib.wattr
  type wattrs = {
    winat_x : unit -> int;
    winat_y : unit -> int;
    winat_width : unit -> int;
    winat_height : unit -> int;
    winat_depth : unit -> int;
    winat_screen : unit -> Xlib.xScreen;
    winat_border_width : unit -> int;
    winat_colormap : unit -> Xlib.colormap;
    winat_map_installed : unit -> bool;
  }
  val win_attrs : dpy:Xlib.display -> win:Xlib.window -> Xlib.wattrs
  type xSizeHints
  external new_xSizeHints : unit -> Xlib.xSizeHints = "ml_alloc_XSizeHints"
  external xSizeHints_set_USPosition :
    Xlib.xSizeHints -> x:int -> y:int -> unit
    = "ml_XSizeHints_set_USPosition"
  external xSizeHints_set_USSize :
    Xlib.xSizeHints -> width:int -> height:int -> unit
    = "ml_XSizeHints_set_USSize"
  external xSizeHints_set_PPosition :
    Xlib.xSizeHints -> x:int -> y:int -> unit = "ml_XSizeHints_set_PPosition"
  external xSizeHints_set_PSize :
    Xlib.xSizeHints -> width:int -> height:int -> unit
    = "ml_XSizeHints_set_PSize"
  external xSizeHints_set_PMinSize :
    Xlib.xSizeHints -> width:int -> height:int -> unit
    = "ml_XSizeHints_set_PMinSize"
  external xSizeHints_set_PMaxSize :
    Xlib.xSizeHints -> width:int -> height:int -> unit
    = "ml_XSizeHints_set_PMaxSize"
  external xSizeHints_set_PResizeInc :
    Xlib.xSizeHints -> width_inc:int -> height_inc:int -> unit
    = "ml_XSizeHints_set_PResizeInc"
  external xSizeHints_set_PBaseSize :
    Xlib.xSizeHints -> base_width:int -> base_height:int -> unit
    = "ml_XSizeHints_set_PBaseSize"
  external xSizeHints_set_PAspect :
    Xlib.xSizeHints -> min_aspect:int * int -> max_aspect:int * int -> unit
    = "ml_XSizeHints_set_PAspect"
  external xSizeHints_set_PWinGravity :
    Xlib.xSizeHints -> win_gravity:int -> unit
    = "ml_XSizeHints_set_PWinGravity"
  external xSetNormalHints :
    dpy:Xlib.display -> win:Xlib.window -> hints:Xlib.xSizeHints -> unit
    = "ml_XSetNormalHints"
  external xSetStandardProperties :
    dpy:Xlib.display ->
    win:Xlib.window ->
    window_name:string ->
    icon_name:string ->
    icon_pixmap:Xlib.pixmap option ->
    argv:string array -> hints:Xlib.xSizeHints -> unit
    = "ml_XSetStandardProperties_bytecode" "ml_XSetStandardProperties"
  type set_size_hints = {
    hints : Xlib.xSizeHints;
    set_USPosition : x:int -> y:int -> unit;
    set_USSize : width:int -> height:int -> unit;
    set_PPosition : x:int -> y:int -> unit;
    set_PSize : width:int -> height:int -> unit;
    set_PMinSize : width:int -> height:int -> unit;
    set_PMaxSize : width:int -> height:int -> unit;
    set_PResizeInc : width_inc:int -> height_inc:int -> unit;
    set_PBaseSize : base_width:int -> base_height:int -> unit;
    set_PAspect : min_aspect:int * int -> max_aspect:int * int -> unit;
    set_PWinGravity : win_gravity:int -> unit;
  }
  val new_size_hints : unit -> Xlib.set_size_hints
  type size_hints =
      USPosition of int * int
    | USSize of int * int
    | PPosition of int * int
    | PSize of int * int
    | PMinSize of int * int
    | PMaxSize of int * int
    | PResizeInc of int * int
    | PBaseSize of int * int
    | PAspect of (int * int) * (int * int)
    | PWinGravity of int
  val set_normal_hints :
    dpy:Xlib.display -> win:Xlib.window -> hints:Xlib.size_hints list -> unit
  val set_standard_properties :
    dpy:Xlib.display ->
    win:Xlib.window ->
    window_name:string ->
    icon_name:string ->
    icon_pixmap:Xlib.pixmap option ->
    argv:string array -> hints:Xlib.size_hints list -> unit
  type 'a xEvent
  type event_type =
      KeyPress
    | KeyRelease
    | ButtonPress
    | ButtonRelease
    | MotionNotify
    | EnterNotify
    | LeaveNotify
    | FocusIn
    | FocusOut
    | KeymapNotify
    | Expose
    | GraphicsExpose
    | NoExpose
    | VisibilityNotify
    | CreateNotify
    | DestroyNotify
    | UnmapNotify
    | MapNotify
    | MapRequest
    | ReparentNotify
    | ConfigureNotify
    | ConfigureRequest
    | GravityNotify
    | ResizeRequest
    | CirculateNotify
    | CirculateRequest
    | PropertyNotify
    | SelectionClear
    | SelectionRequest
    | SelectionNotify
    | ColormapNotify
    | ClientMessage
    | MappingNotify
  type any
  type xKeyEvent
  type xButtonEvent
  type xMotionEvent
  type xCrossingEvent
  type xFocusChangeEvent
  type xExposeEvent
  type xGraphicsExposeEvent
  type xNoExposeEvent
  type xVisibilityEvent
  type xCreateWindowEvent
  type xDestroyWindowEvent
  type xUnmapEvent
  type xMapEvent
  type xMapRequestEvent
  type xReparentEvent
  type xConfigureEvent
  type xGravityEvent
  type xResizeRequestEvent
  type xConfigureRequestEvent
  type xCirculateEvent
  type xCirculateRequestEvent
  type xPropertyEvent
  type xSelectionClearEvent
  type xSelectionRequestEvent
  type xSelectionEvent
  type xColormapEvent
  type xClientMessageEvent
  type xMappingEvent
  type xErrorEvent
  type xKeymapEvent
  type xKeyPressedEvent = Xlib.xKeyEvent
  type xKeyReleasedEvent = Xlib.xKeyEvent
  type xButtonPressedEvent = Xlib.xButtonEvent
  type xButtonReleasedEvent = Xlib.xButtonEvent
  type xEnterWindowEvent = Xlib.xCrossingEvent
  type xLeaveWindowEvent = Xlib.xCrossingEvent
  type xFocusInEvent = Xlib.xFocusChangeEvent
  type xFocusOutEvent = Xlib.xFocusChangeEvent
  type event_kind =
      XKeyPressedEvent of Xlib.xKeyPressedEvent Xlib.xEvent
    | XKeyReleasedEvent of Xlib.xKeyReleasedEvent Xlib.xEvent
    | XButtonPressedEvent of Xlib.xButtonPressedEvent Xlib.xEvent
    | XButtonReleasedEvent of Xlib.xButtonReleasedEvent Xlib.xEvent
    | XMotionEvent of Xlib.xMotionEvent Xlib.xEvent
    | XCrossingEvent of Xlib.xCrossingEvent Xlib.xEvent
    | XFocusChangeEvent of Xlib.xFocusChangeEvent Xlib.xEvent
    | XExposeEvent of Xlib.xExposeEvent Xlib.xEvent
    | XGraphicsExposeEvent of Xlib.xGraphicsExposeEvent Xlib.xEvent
    | XNoExposeEvent of Xlib.xNoExposeEvent Xlib.xEvent
    | XVisibilityEvent of Xlib.xVisibilityEvent Xlib.xEvent
    | XCreateWindowEvent of Xlib.xCreateWindowEvent Xlib.xEvent
    | XDestroyWindowEvent of Xlib.xDestroyWindowEvent Xlib.xEvent
    | XUnmapEvent of Xlib.xUnmapEvent Xlib.xEvent
    | XMapEvent of Xlib.xMapEvent Xlib.xEvent
    | XMapRequestEvent of Xlib.xMapRequestEvent Xlib.xEvent
    | XReparentEvent of Xlib.xReparentEvent Xlib.xEvent
    | XConfigureEvent of Xlib.xConfigureEvent Xlib.xEvent
    | XGravityEvent of Xlib.xGravityEvent Xlib.xEvent
    | XResizeRequestEvent of Xlib.xResizeRequestEvent Xlib.xEvent
    | XConfigureRequestEvent of Xlib.xConfigureRequestEvent Xlib.xEvent
    | XCirculateEvent of Xlib.xCirculateEvent Xlib.xEvent
    | XCirculateRequestEvent of Xlib.xCirculateRequestEvent Xlib.xEvent
    | XPropertyEvent of Xlib.xPropertyEvent Xlib.xEvent
    | XSelectionClearEvent of Xlib.xSelectionClearEvent Xlib.xEvent
    | XSelectionRequestEvent of Xlib.xSelectionRequestEvent Xlib.xEvent
    | XSelectionEvent of Xlib.xSelectionEvent Xlib.xEvent
    | XColormapEvent of Xlib.xColormapEvent Xlib.xEvent
    | XClientMessageEvent of Xlib.xClientMessageEvent Xlib.xEvent
    | XMappingEvent of Xlib.xMappingEvent Xlib.xEvent
    | XErrorEvent of Xlib.xErrorEvent Xlib.xEvent
    | XKeymapEvent of Xlib.xKeymapEvent Xlib.xEvent
  external new_xEvent : unit -> Xlib.any Xlib.xEvent = "ml_alloc_XEvent"
  external xNextEvent :
    dpy:Xlib.display -> event:Xlib.any Xlib.xEvent -> unit = "ml_XNextEvent"
  external xNextEventFun : dpy:Xlib.display -> Xlib.any Xlib.xEvent
    = "ml_XNextEvent_fun"
  external xPeekEvent :
    dpy:Xlib.display -> event:Xlib.any Xlib.xEvent -> unit = "ml_XPeekEvent"
  external xMaskEvent :
    dpy:Xlib.display -> Xlib.event_mask list -> Xlib.any Xlib.xEvent -> unit
    = "ml_XMaskEvent"
  external xWindowEvent :
    dpy:Xlib.display ->
    win:Xlib.window -> Xlib.event_mask list -> 'Xlib.xEvent
    = "ml_XWindowEvent"
  external xPending : dpy:Xlib.display -> int = "ml_XPending"
  type event_mode =
      AsyncPointer
    | SyncPointer
    | AsyncKeyboard
    | SyncKeyboard
    | ReplayPointer
    | ReplayKeyboard
    | AsyncBoth
    | SyncBoth
  external xAllowEvents :
    dpy:Xlib.display -> event_mode:Xlib.event_mode -> time:Xlib.time -> unit
    = "ml_XAllowEvents"
  external xPutBackEvent : dpy:Xlib.display -> event:'Xlib.xEvent -> unit
    = "ml_XPutBackEvent"
  type queued_mode = QueuedAlready | QueuedAfterFlush | QueuedAfterReading
  external xEventsQueued : dpy:Xlib.display -> mode:Xlib.queued_mode -> int
    = "ml_XEventsQueued"
  external xCheckTypedEvent :
    dpy:Xlib.display -> Xlib.event_type -> Xlib.any Xlib.xEvent -> bool
    = "ml_XCheckTypedEvent"
  val xCheckTypedEvent_option :
    dpy:Xlib.display -> Xlib.event_type -> Xlib.any Xlib.xEvent option
  external xEventType : event:'Xlib.xEvent -> Xlib.event_type
    = "ml_XEvent_type"
  val xEventKind : event:Xlib.any Xlib.xEvent -> Xlib.event_kind
  val string_of_event_type : event_type:Xlib.event_type -> string
  val to_xMotionEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xMotionEvent Xlib.xEvent
  val to_xKeyEvent : event:Xlib.any Xlib.xEvent -> Xlib.xKeyEvent Xlib.xEvent
  val to_xKeyPressedEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xKeyPressedEvent Xlib.xEvent
  val to_xKeyReleasedEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xKeyReleasedEvent Xlib.xEvent
  val to_xButtonEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xButtonEvent Xlib.xEvent
  val to_xButtonPressedEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xButtonPressedEvent Xlib.xEvent
  val to_xButtonReleasedEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xButtonReleasedEvent Xlib.xEvent
  val to_xCrossingEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xCrossingEvent Xlib.xEvent
  val to_xEnterWindowEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xEnterWindowEvent Xlib.xEvent
  val to_xLeaveWindowEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xLeaveWindowEvent Xlib.xEvent
  val to_xFocusChangeEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xFocusChangeEvent Xlib.xEvent
  val to_xFocusInEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xFocusInEvent Xlib.xEvent
  val to_xFocusOutEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xFocusOutEvent Xlib.xEvent
  val to_xKeymapEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xKeymapEvent Xlib.xEvent
  val to_xExposeEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xExposeEvent Xlib.xEvent
  val to_xGraphicsExposeEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xGraphicsExposeEvent Xlib.xEvent
  val to_xNoExposeEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xNoExposeEvent Xlib.xEvent
  val to_xVisibilityEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xVisibilityEvent Xlib.xEvent
  val to_xCreateWindowEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xCreateWindowEvent Xlib.xEvent
  val to_xDestroyWindowEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xDestroyWindowEvent Xlib.xEvent
  val to_xUnmapEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xUnmapEvent Xlib.xEvent
  val to_xMapEvent : event:Xlib.any Xlib.xEvent -> Xlib.xMapEvent Xlib.xEvent
  val to_xMapRequestEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xMapRequestEvent Xlib.xEvent
  val to_xReparentEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xReparentEvent Xlib.xEvent
  val to_xConfigureEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xConfigureEvent Xlib.xEvent
  val to_xConfigureRequestEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xConfigureRequestEvent Xlib.xEvent
  val to_xGravityEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xGravityEvent Xlib.xEvent
  val to_xResizeRequestEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xResizeRequestEvent Xlib.xEvent
  val to_xCirculateEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xCirculateEvent Xlib.xEvent
  val to_xCirculateRequestEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xCirculateRequestEvent Xlib.xEvent
  val to_xPropertyEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xPropertyEvent Xlib.xEvent
  val to_xSelectionClearEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xSelectionClearEvent Xlib.xEvent
  val to_xSelectionRequestEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xSelectionRequestEvent Xlib.xEvent
  val to_xSelectionEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xSelectionEvent Xlib.xEvent
  val to_xColormapEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xColormapEvent Xlib.xEvent
  val to_xClientMessageEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xClientMessageEvent Xlib.xEvent
  val to_xMappingEvent :
    event:Xlib.any Xlib.xEvent -> Xlib.xMappingEvent Xlib.xEvent
  type xAnyEvent_contents = {
    xany_type : Xlib.event_type;
    xany_serial : Xlib.uint;
    xany_send_event : bool;
    xany_display : Xlib.display;
    xany_window : Xlib.window;
  }
  external xAnyEvent_datas : 'Xlib.xEvent -> Xlib.xAnyEvent_contents
    = "ml_XAnyEvent_datas"
  type logical_state =
      AnyModifier
    | Button1Mask
    | Button2Mask
    | Button3Mask
    | Button4Mask
    | Button5Mask
    | ShiftMask
    | LockMask
    | ControlMask
    | Mod1Mask
    | Mod2Mask
    | Mod3Mask
    | Mod4Mask
    | Mod5Mask
  type xKeyEvent_contents = {
    key_serial : Xlib.uint;
    key_send_event : bool;
    key_display : Xlib.display;
    key_window : Xlib.window;
    key_root : Xlib.window;
    key_subwindow : Xlib.window;
    key_time : Xlib.time;
    key_x : int;
    key_y : int;
    key_x_root : int;
    key_y_root : int;
    key_state : Xlib.logical_state list;
    key_keycode : Xlib.keycode;
    key_same_screen : bool;
  }
  external xKeyEvent_datas :
    Xlib.xKeyEvent Xlib.xEvent -> Xlib.xKeyEvent_contents
    = "ml_XKeyEvent_datas"
  type xMotionEvent_contents = {
    motion_serial : Xlib.uint;
    motion_send_event : bool;
    motion_display : Xlib.display;
    motion_window : Xlib.window;
    motion_root : Xlib.window;
    motion_subwindow : Xlib.window;
    motion_time : Xlib.time;
    motion_x : int;
    motion_y : int;
    motion_x_root : int;
    motion_y_root : int;
    motion_state : Xlib.logical_state list;
    motion_is_hint : char;
    motion_same_screen : bool;
  }
  external xMotionEvent_datas :
    Xlib.xMotionEvent Xlib.xEvent -> Xlib.xMotionEvent_contents
    = "ml_XMotionEvent_datas"
  type button = AnyButton | Button1 | Button2 | Button3 | Button4 | Button5
  type xButtonEvent_contents = {
    button_serial : Xlib.uint;
    button_send_event : bool;
    button_display : Xlib.display;
    button_window : Xlib.window;
    button_root : Xlib.window;
    button_subwindow : Xlib.window;
    button_time : Xlib.time;
    button_x : int;
    button_y : int;
    button_x_root : int;
    button_y_root : int;
    button_state : Xlib.uint;
    button : Xlib.button;
    button_same_screen : bool;
  }
  external xButtonEvent_datas :
    Xlib.xButtonEvent Xlib.xEvent -> Xlib.xButtonEvent_contents
    = "ml_XButtonEvent_datas"
  module Cross :
    sig
      type crossing_mode = NotifyNormal | NotifyGrab | NotifyUngrab
      type crossing_detail =
          NotifyAncestor
        | NotifyVirtual
        | NotifyInferior
        | NotifyNonlinear
        | NotifyNonlinearVirtual
      type crossing_state =
          Button1Mask
        | Button2Mask
        | Button3Mask
        | Button4Mask
        | Button5Mask
        | ShiftMask
        | LockMask
        | ControlMask
        | Mod1Mask
        | Mod2Mask
        | Mod3Mask
        | Mod4Mask
        | Mod5Mask
    end
  type xCrossingEvent_contents = {
    cross_window : Xlib.window;
    cross_root : Xlib.window;
    cross_subwindow : Xlib.window;
    cross_time : Xlib.time;
    cross_x : int;
    cross_y : int;
    cross_x_root : int;
    cross_y_root : int;
    cross_mode : Xlib.Cross.crossing_mode;
    cross_detail : Xlib.Cross.crossing_detail;
    cross_same_screen : bool;
    cross_focus : bool;
    cross_state : Xlib.Cross.crossing_state;
  }
  external xCrossingEvent_datas :
    Xlib.xCrossingEvent Xlib.xEvent -> Xlib.xCrossingEvent_contents
    = "ml_XCrossingEvent_datas"
  type focus_mode =
      NotifyNormal
    | NotifyGrab
    | NotifyUngrab
    | NotifyWhileGrabbed
  type focus_detail =
      NotifyAncestor
    | NotifyVirtual
    | NotifyInferior
    | NotifyNonlinear
    | NotifyNonlinearVirtual
    | NotifyPointer
    | NotifyPointerRoot
    | NotifyDetailNone
  type xFocusChangeEvent_contents = {
    focus_mode : Xlib.focus_mode;
    focus_detail : Xlib.focus_detail;
  }
  external xFocusChangeEvent_datas :
    Xlib.xFocusChangeEvent Xlib.xEvent -> Xlib.xFocusChangeEvent_contents
    = "ml_XFocusChangeEvent_datas"
  type xKeymapEvent_contents = { key_vector : string; }
  external xKeymapEvent_datas :
    Xlib.xKeymapEvent Xlib.xEvent -> Xlib.xKeymapEvent_contents
    = "ml_XKeymapEvent_datas"
  type xExposeEvent_contents = {
    expose_x : int;
    expose_y : int;
    expose_width : int;
    expose_height : int;
    expose_count : int;
  }
  external xExposeEvent_datas :
    Xlib.xExposeEvent Xlib.xEvent -> Xlib.xExposeEvent_contents
    = "ml_XExposeEvent_datas"
  type visibility_state =
      VisibilityUnobscured
    | VisibilityPartiallyObscured
    | VisibilityFullyObscured
  type xVisibilityEvent_contents = {
    visibility_state : Xlib.visibility_state;
  }
  external xVisibilityEvent_datas :
    Xlib.xVisibilityEvent Xlib.xEvent -> Xlib.xVisibilityEvent_contents
    = "ml_XVisibilityEvent_datas"
  type xDestroyWindowEvent_contents = {
    destroy_event : Xlib.window;
    destroy_window : Xlib.window;
  }
  external xDestroyWindowEvent_datas :
    Xlib.xDestroyWindowEvent Xlib.xEvent -> Xlib.xDestroyWindowEvent_contents
    = "ml_XDestroyWindowEvent_datas"
  type xReparentEvent_contents = {
    reparent_event : Xlib.window;
    reparent_window : Xlib.window;
    reparent_parent : Xlib.window;
    reparent_x : int;
    reparent_y : int;
    reparent_override_redirect : bool;
  }
  external xReparentEvent_datas :
    Xlib.xReparentEvent Xlib.xEvent -> Xlib.xReparentEvent_contents
    = "ml_XReparentEvent_datas"
  type xConfigureEvent_contents = {
    conf_x : int;
    conf_y : int;
    conf_width : int;
    conf_height : int;
    conf_border_width : int;
    conf_above : Xlib.window;
    conf_override_redirect : bool;
  }
  external xConfigureEvent_datas :
    Xlib.xConfigureEvent Xlib.xEvent -> Xlib.xConfigureEvent_contents
    = "ml_XConfigureEvent_datas"
  type xconfreq_detail = Above | Below | TopIf | BottomIf | Opposite
  type xConfigureRequestEvent_contents = {
    confreq_parent : Xlib.window;
    confreq_window : Xlib.window;
    confreq_x : int;
    confreq_y : int;
    confreq_width : int;
    confreq_height : int;
    confreq_border_width : int;
    confreq_above : Xlib.window;
    confreq_detail : Xlib.xconfreq_detail;
    confreq_value_mask : Xlib.uint;
  }
  external xConfigureRequestEvent_datas :
    Xlib.xConfigureRequestEvent Xlib.xEvent ->
    Xlib.xConfigureRequestEvent_contents = "ml_XConfigureRequestEvent_datas"
  type xResizeRequestEvent_contents = {
    resize_width : int;
    resize_height : int;
  }
  external xResizeRequestEvent_datas :
    Xlib.xResizeRequestEvent Xlib.xEvent -> Xlib.xResizeRequestEvent_contents
    = "ml_XResizeRequestEvent_datas"
  type xSelectionEvent_contents = {
    selec_requestor : Xlib.window;
    selec_selection : Xlib.atom;
    selec_target : Xlib.atom;
    selec_property : Xlib.atom option;
    selec_time : Xlib.time;
  }
  external xSelectionEvent_datas :
    Xlib.xSelectionEvent Xlib.xEvent -> Xlib.xSelectionEvent_contents
    = "ml_XSelectionEvent_datas"
  type xCreateWindowEvent_contents = {
    createwindow_serial : Xlib.uint;
    createwindow_send_event : bool;
    createwindow_display : Xlib.display;
    createwindow_parent : Xlib.window;
    createwindow_window : Xlib.window;
    createwindow_x : int;
    createwindow_y : int;
    createwindow_width : int;
    createwindow_height : int;
    createwindow_border_width : int;
    createwindow_override_redirect : bool;
  }
  external xCreateWindowEvent_datas :
    Xlib.xCreateWindowEvent Xlib.xEvent -> Xlib.xCreateWindowEvent_contents
    = "ml_XCreateWindowEvent_datas"
  type todo_contents = { todo_field : int; }
  type event_content =
      XMotionEvCnt of Xlib.xMotionEvent_contents
    | XKeyPressedEvCnt of Xlib.xKeyEvent_contents
    | XKeyReleasedEvCnt of Xlib.xKeyEvent_contents
    | XButtonPressedEvCnt of Xlib.xButtonEvent_contents
    | XButtonReleasedEvCnt of Xlib.xButtonEvent_contents
    | XCrossingEvCnt of Xlib.xCrossingEvent_contents
    | XFocusChangeEvCnt of Xlib.xFocusChangeEvent_contents
    | XKeymapEvCnt of Xlib.xKeymapEvent_contents
    | XExposeEvCnt of Xlib.xExposeEvent_contents
    | XGraphicsExposeEvCnt of Xlib.todo_contents
    | XNoExposeEvCnt of Xlib.todo_contents
    | XVisibilityEvCnt of Xlib.xVisibilityEvent_contents
    | XCreateWindowEvCnt of Xlib.xCreateWindowEvent_contents
    | XDestroyWindowEvCnt of Xlib.xDestroyWindowEvent_contents
    | XUnmapEvCnt of Xlib.todo_contents
    | XMapEvCnt of Xlib.todo_contents
    | XMapRequestEvCnt of Xlib.todo_contents
    | XReparentEvCnt of Xlib.xReparentEvent_contents
    | XConfigureEvCnt of Xlib.xConfigureEvent_contents
    | XConfigureRequestEvCnt of Xlib.xConfigureRequestEvent_contents
    | XGravityEvCnt of Xlib.todo_contents
    | XResizeRequestEvCnt of Xlib.xResizeRequestEvent_contents
    | XCirculateEvCnt of Xlib.todo_contents
    | XCirculateRequestEvCnt of Xlib.todo_contents
    | XPropertyEvCnt of Xlib.todo_contents
    | XSelectionClearEvCnt of Xlib.todo_contents
    | XSelectionRequestEvCnt of Xlib.todo_contents
    | XSelectionEvCnt of Xlib.xSelectionEvent_contents
    | XColormapEvCnt of Xlib.todo_contents
    | XClientMessageEvCnt of Xlib.todo_contents
    | XMappingEvCnt of Xlib.todo_contents
  external xSendEvent :
    dpy:Xlib.display ->
    win:Xlib.window ->
    propagate:bool ->
    event_mask:Xlib.event_mask -> Xlib.event_content -> unit
    = "ml_XSendEvent"
  external xLookupString :
    event:Xlib.xKeyEvent Xlib.xEvent -> buffer:string -> int * Xlib.keysym
    = "ml_XLookupString"
  external xLookupKeysym :
    event:Xlib.xKeyEvent Xlib.xEvent -> index:int -> Xlib.keysym
    = "ml_XLookupKeysym"
  external xKeycodeToKeysym :
    dpy:Xlib.display -> keycode:Xlib.keycode -> index:int -> Xlib.keysym
    = "ml_XKeycodeToKeysym"
  external xRefreshKeyboardMapping :
    event:Xlib.xMappingEvent Xlib.xEvent -> unit
    = "ml_XRefreshKeyboardMapping"
  external xDisplayKeycodes : dpy:Xlib.display -> Xlib.keycode * Xlib.keycode
    = "ml_XDisplayKeycodes"
  external xGetKeyboardMapping :
    dpy:Xlib.display ->
    first_keycode:Xlib.keycode ->
    keycode_count:int -> Xlib.keysym array array = "ml_XGetKeyboardMapping"
  external xChangeKeyboardMapping :
    dpy:Xlib.display ->
    first_keycode:Xlib.keycode ->
    keysyms_per_keycode:int ->
    keysyms:Xlib.keysym array -> num_codes:int -> unit
    = "ml_XChangeKeyboardMapping"
  external xChangeKeyboardMapping_single :
    dpy:Xlib.display -> keycode:Xlib.keycode -> keysym:int -> unit
    = "ml_XChangeKeyboardMapping_single" "noalloc"
  external xSetWMProtocols :
    dpy:Xlib.display ->
    win:Xlib.window -> protocols:Xlib.atom -> count:int -> unit
    = "ml_XSetWMProtocols"
  external xInternAtom :
    dpy:Xlib.display -> atom_name:string -> only_if_exists:bool -> Xlib.atom
    = "ml_XInternAtom"
  external xInternAtoms :
    dpy:Xlib.display ->
    names:string array -> only_if_exists:bool -> Xlib.atom array
    = "ml_XInternAtoms"
  external xGetAtomName : dpy:Xlib.display -> atom:Xlib.atom -> string
    = "ml_XGetAtomName"
  external xEvent_xclient_data :
    Xlib.xClientMessageEvent Xlib.xEvent -> Xlib.atom
    = "ml_XEvent_xclient_data_l_0"
  type font
  type xFontStruct
  external xLoadFont : dpy:Xlib.display -> name:string -> Xlib.font
    = "ml_XLoadFont"
  external xLoadQueryFont :
    dpy:Xlib.display -> name:string -> Xlib.xFontStruct = "ml_XLoadQueryFont"
  external xQueryFont :
    dpy:Xlib.display -> font:Xlib.font -> Xlib.xFontStruct = "ml_XQueryFont"
  external xQueryFontGC : dpy:Xlib.display -> gc:Xlib.gc -> Xlib.xFontStruct
    = "ml_XQueryFontGC"
  external xSetFont :
    dpy:Xlib.display -> gc:Xlib.gc -> font:Xlib.font -> unit = "ml_XSetFont"
  external xFontStruct_font : Xlib.xFontStruct -> Xlib.font
    = "ml_XFontStruct_get_fid"
  external xFontStruct_ascent : Xlib.xFontStruct -> int
    = "ml_XFontStruct_get_ascent"
  external xFontStruct_descent : Xlib.xFontStruct -> int
    = "ml_XFontStruct_get_descent"
  external xFontStruct_all_chars_exist : Xlib.xFontStruct -> bool
    = "ml_XFontStruct_get_all_chars_exist"
  external xFontStruct_get_height : Xlib.xFontStruct -> int * int
    = "ml_XFontStruct_get_height"
  external xTextWidth : Xlib.xFontStruct -> string -> int = "ml_XTextWidth"
  type xCharStruct = {
    lbearing : int;
    rbearing : int;
    width : int;
    ascent : int;
    descent : int;
  }
  external xFontStruct_min_bounds : Xlib.xFontStruct -> Xlib.xCharStruct
    = "ml_xFontStruct_min_bounds"
  external xFontStruct_max_bounds : Xlib.xFontStruct -> Xlib.xCharStruct
    = "ml_xFontStruct_max_bounds"
  type font_struct = {
    _font : Xlib.font;
    _ascent : int;
    _descent : int;
    all_chars_exist : bool;
    font_height : int * int;
    text_width : string -> int;
    min_bounds : Xlib.xCharStruct;
    max_bounds : Xlib.xCharStruct;
  }
  val load_font : dpy:Xlib.display -> name:string -> Xlib.font_struct
  external xSetFontPath :
    dpy:Xlib.display -> directories:string array -> unit = "ml_XSetFontPath"
  external xGetFontPath : dpy:Xlib.display -> string array
    = "ml_XGetFontPath"
  external xListFonts :
    dpy:Xlib.display -> pattern:string -> maxnames:int -> string array
    = "ml_XListFonts"
  external xDefaultGC : dpy:Xlib.display -> scr:Xlib.screen_number -> Xlib.gc
    = "ml_XDefaultGC"
  type xGCValues
  external new_xGCValues : unit -> Xlib.xGCValues = "ml_alloc_XGCValues"
  type line_style = LineSolid | LineOnOffDash | LineDoubleDash
  type cap_style = CapNotLast | CapButt | CapRound | CapProjecting
  type join_style = JoinMiter | JoinRound | JoinBevel
  type fill_style = FillSolid | FillTiled | FillStippled | FillOpaqueStippled
  type fill_rule = EvenOddRule | WindingRule
  type logop_func =
      GXclear
    | GXand
    | GXandReverse
    | GXcopy
    | GXandInverted
    | GXnoop
    | GXxor
    | GXor
    | GXnor
    | GXequiv
    | GXinvert
    | GXorReverse
    | GXcopyInverted
    | GXorInverted
    | GXnand
    | GXset
  type arc_mode = ArcChord | ArcPieSlice
  type subwindow_mode = ClipByChildren | IncludeInferiors
  external xGCValues_set_foreground :
    gcv:Xlib.xGCValues -> fg:Xlib.pixel_color -> unit
    = "ml_XGCValues_set_foreground"
  external xGCValues_set_background :
    gcv:Xlib.xGCValues -> bg:Xlib.pixel_color -> unit
    = "ml_XGCValues_set_background"
  external xGCValues_set_graphics_exposures :
    gcv:Xlib.xGCValues -> bool -> unit
    = "ml_XGCValues_set_graphics_exposures"
  external xGCValues_set_tile : gcv:Xlib.xGCValues -> Xlib.pixmap -> unit
    = "ml_XGCValues_set_tile"
  external xGCValues_set_clip_x_origin : gcv:Xlib.xGCValues -> int -> unit
    = "ml_XGCValues_set_clip_x_origin"
  external xGCValues_set_clip_y_origin : gcv:Xlib.xGCValues -> int -> unit
    = "ml_XGCValues_set_clip_y_origin"
  external xGCValues_set_ts_x_origin : gcv:Xlib.xGCValues -> int -> unit
    = "ml_XGCValues_set_ts_x_origin"
  external xGCValues_set_ts_y_origin : gcv:Xlib.xGCValues -> int -> unit
    = "ml_XGCValues_set_ts_y_origin"
  external xGCValues_set_line_style :
    gcv:Xlib.xGCValues -> Xlib.line_style -> unit
    = "ml_XGCValues_set_line_style"
  external xGCValues_set_cap_style :
    gcv:Xlib.xGCValues -> Xlib.cap_style -> unit
    = "ml_XGCValues_set_cap_style"
  external xGCValues_set_join_style :
    gcv:Xlib.xGCValues -> Xlib.join_style -> unit
    = "ml_XGCValues_set_join_style"
  external xGCValues_set_fill_style :
    gcv:Xlib.xGCValues -> Xlib.fill_style -> unit
    = "ml_XGCValues_set_fill_style"
  external xGCValues_set_fill_rule :
    gcv:Xlib.xGCValues -> Xlib.fill_rule -> unit
    = "ml_XGCValues_set_fill_rule"
  external xGCValues_set_function :
    gcv:Xlib.xGCValues -> Xlib.logop_func -> unit
    = "ml_XGCValues_set_function"
  external xGCValues_set_line_width : gcv:Xlib.xGCValues -> int -> unit
    = "ml_XGCValues_set_line_width"
  external xGCValues_set_arc_mode :
    gcv:Xlib.xGCValues -> Xlib.arc_mode -> unit = "ml_XGCValues_set_arc_mode"
  external xGCValues_set_font : gcv:Xlib.xGCValues -> Xlib.font -> unit
    = "ml_XGCValues_set_font"
  external xGCValues_set_subwindow_mode :
    gcv:Xlib.xGCValues -> Xlib.subwindow_mode -> unit
    = "ml_XGCValues_set_subwindow_mode"
  external xGCValues_get_foreground : gcv:Xlib.xGCValues -> Xlib.pixel_color
    = "ml_XGCValues_get_foreground"
  external xGCValues_get_background : gcv:Xlib.xGCValues -> Xlib.pixel_color
    = "ml_XGCValues_get_background"
  external xGCValues_get_graphics_exposures : gcv:Xlib.xGCValues -> bool
    = "ml_XGCValues_get_graphics_exposures"
  external xGCValues_get_tile : gcv:Xlib.xGCValues -> Xlib.pixmap
    = "ml_XGCValues_get_tile"
  external xGCValues_get_clip_x_origin : gcv:Xlib.xGCValues -> int
    = "ml_XGCValues_get_clip_x_origin"
  external xGCValues_get_clip_y_origin : gcv:Xlib.xGCValues -> int
    = "ml_XGCValues_get_clip_y_origin"
  external xGCValues_get_ts_x_origin : gcv:Xlib.xGCValues -> int
    = "ml_XGCValues_get_ts_x_origin"
  external xGCValues_get_ts_y_origin : gcv:Xlib.xGCValues -> int
    = "ml_XGCValues_get_ts_y_origin"
  external xGCValues_get_line_style : gcv:Xlib.xGCValues -> Xlib.line_style
    = "ml_XGCValues_get_line_style"
  external xGCValues_get_cap_style : gcv:Xlib.xGCValues -> Xlib.cap_style
    = "ml_XGCValues_get_cap_style"
  external xGCValues_get_join_style : gcv:Xlib.xGCValues -> Xlib.join_style
    = "ml_XGCValues_get_join_style"
  external xGCValues_get_fill_style : gcv:Xlib.xGCValues -> Xlib.fill_style
    = "ml_XGCValues_get_fill_style"
  external xGCValues_get_fill_rule : gcv:Xlib.xGCValues -> Xlib.fill_rule
    = "ml_XGCValues_get_fill_rule"
  external xGCValues_get_function : gcv:Xlib.xGCValues -> Xlib.logop_func
    = "ml_XGCValues_get_function"
  external xGCValues_get_line_width : gcv:Xlib.xGCValues -> int
    = "ml_XGCValues_get_line_width"
  external xGCValues_get_arc_mode : gcv:Xlib.xGCValues -> Xlib.arc_mode
    = "ml_XGCValues_get_arc_mode"
  external xGCValues_get_font : gcv:Xlib.xGCValues -> Xlib.font
    = "ml_XGCValues_get_font"
  external xGCValues_get_subwindow_mode :
    gcv:Xlib.xGCValues -> Xlib.subwindow_mode
    = "ml_XGCValues_get_subwindow_mode"
  type gc_values = {
    gcValues : Xlib.xGCValues;
    set_foreground : fg:Xlib.pixel_color -> unit;
    set_background : bg:Xlib.pixel_color -> unit;
    set_graphics_exposures : bool -> unit;
    set_tile : Xlib.pixmap -> unit;
    set_clip_x_origin : int -> unit;
    set_clip_y_origin : int -> unit;
    set_ts_x_origin : int -> unit;
    set_ts_y_origin : int -> unit;
    set_line_style : Xlib.line_style -> unit;
    set_cap_style : Xlib.cap_style -> unit;
    set_join_style : Xlib.join_style -> unit;
    set_fill_style : Xlib.fill_style -> unit;
    set_fill_rule : Xlib.fill_rule -> unit;
    set_function : Xlib.logop_func -> unit;
    set_line_width : int -> unit;
    set_arc_mode : Xlib.arc_mode -> unit;
    set_font : Xlib.font -> unit;
    set_subwindow_mode : Xlib.subwindow_mode -> unit;
    foreground : Xlib.pixel_color;
    background : Xlib.pixel_color;
    graphics_exposures : bool;
    tile : Xlib.pixmap;
    clip_x_origin : int;
    clip_y_origin : int;
    ts_x_origin : int;
    ts_y_origin : int;
    line_style : Xlib.line_style;
    cap_style : Xlib.cap_style;
    join_style : Xlib.join_style;
    fill_style : Xlib.fill_style;
    fill_rule : Xlib.fill_rule;
    logical_op : Xlib.logop_func;
    line_width : int;
    arc_mode : Xlib.arc_mode;
    gc_font : Xlib.font;
    subwindow_mode : Xlib.subwindow_mode;
  }
  val new_gc_values : unit -> Xlib.gc_values
  type gc_valuemask =
      GCFunction
    | GCPlaneMask
    | GCForeground
    | GCBackground
    | GCLineWidth
    | GCLineStyle
    | GCCapStyle
    | GCJoinStyle
    | GCFillStyle
    | GCFillRule
    | GCTile
    | GCStipple
    | GCTileStipXOrigin
    | GCTileStipYOrigin
    | GCFont
    | GCSubwindowMode
    | GCGraphicsExposures
    | GCClipXOrigin
    | GCClipYOrigin
    | GCClipMask
    | GCDashOffset
    | GCDashList
    | GCArcMode
  val xCreateGC :
    dpy:Xlib.display ->
    d:'Xlib.drawable -> Xlib.gc_valuemask list -> Xlib.xGCValues -> Xlib.gc
  external xChangeGC :
    dpy:Xlib.display ->
    gc:Xlib.gc -> Xlib.gc_valuemask list -> Xlib.xGCValues -> unit
    = "ml_XChangeGC"
  external xGetGCValues :
    dpy:Xlib.display ->
    gc:Xlib.gc -> Xlib.gc_valuemask list -> Xlib.xGCValues
    = "ml_XGetGCValues"
  external xSetLineAttributes :
    dpy:Xlib.display ->
    gc:Xlib.gc ->
    line_width:Xlib.uint ->
    line_style:Xlib.line_style ->
    cap_style:Xlib.cap_style -> join_style:Xlib.join_style -> unit
    = "ml_XSetLineAttributes_bytecode" "ml_XSetLineAttributes"
  external xSetFillStyle :
    dpy:Xlib.display -> gc:Xlib.gc -> fill_style:Xlib.fill_style -> unit
    = "ml_XSetFillStyle"
  external xSetForeground :
    dpy:Xlib.display -> gc:Xlib.gc -> fg:Xlib.pixel_color -> unit
    = "ml_XSetForeground"
  external xSetBackground :
    dpy:Xlib.display -> gc:Xlib.gc -> bg:Xlib.pixel_color -> unit
    = "ml_XSetBackground"
  external xClearWindow : dpy:Xlib.display -> win:Xlib.window -> unit
    = "ml_XClearWindow"
  external xClearArea :
    dpy:Xlib.display ->
    win:Xlib.window ->
    x:int ->
    y:int -> width:Xlib.uint -> height:Xlib.uint -> exposures:bool -> unit
    = "ml_XClearArea_bytecode" "ml_XClearArea"
  external xDrawPoint :
    dpy:Xlib.display ->
    d:'Xlib.drawable -> gc:Xlib.gc -> x:int -> y:int -> unit
    = "ml_XDrawPoint"
  type coordinate_mode = CoordModeOrigin | CoordModePrevious
  type xPoint = { pnt_x : int; pnt_y : int; }
  external xDrawPoints :
    dpy:Xlib.display ->
    d:'Xlib.drawable ->
    gc:Xlib.gc ->
    points:Xlib.xPoint array -> mode:Xlib.coordinate_mode -> unit
    = "ml_XDrawPoints"
  external xDrawLine :
    dpy:Xlib.display ->
    d:'Xlib.drawable ->
    gc:Xlib.gc -> x1:int -> y1:int -> x2:int -> y2:int -> unit
    = "ml_XDrawLine_bytecode" "ml_XDrawLine"
  external xDrawLines :
    dpy:Xlib.display ->
    d:'Xlib.drawable ->
    gc:Xlib.gc ->
    points:Xlib.xPoint array -> mode:Xlib.coordinate_mode -> unit
    = "ml_XDrawLines"
  type segment = { x1 : int; y1 : int; x2 : int; y2 : int; }
  external xDrawSegments :
    dpy:Xlib.display ->
    d:'Xlib.drawable -> gc:Xlib.gc -> segments:Xlib.segment array -> unit
    = "ml_XDrawSegments"
  external xDrawRectangle :
    dpy:Xlib.display ->
    d:'Xlib.drawable ->
    gc:Xlib.gc ->
    x:int -> y:int -> width:Xlib.uint -> height:Xlib.uint -> unit
    = "ml_XDrawRectangle_bytecode" "ml_XDrawRectangle"
  external xFillRectangle :
    dpy:Xlib.display ->
    d:'Xlib.drawable ->
    gc:Xlib.gc ->
    x:int -> y:int -> width:Xlib.uint -> height:Xlib.uint -> unit
    = "ml_XFillRectangle_bytecode" "ml_XFillRectangle"
  type x_rectangle = {
    rect_x : int;
    rect_y : int;
    rect_width : Xlib.uint;
    rect_height : Xlib.uint;
  }
  external xFillRectangles :
    dpy:Xlib.display ->
    d:'Xlib.drawable ->
    gc:Xlib.gc -> rectangles:Xlib.x_rectangle array -> unit
    = "ml_XFillRectangles"
  external xDrawRectangles :
    dpy:Xlib.display ->
    d:'Xlib.drawable ->
    gc:Xlib.gc -> rectangles:Xlib.x_rectangle array -> unit
    = "ml_XDrawRectangles"
  external xDrawArc :
    dpy:Xlib.display ->
    d:'Xlib.drawable ->
    gc:Xlib.gc ->
    x:int ->
    y:int ->
    width:Xlib.uint -> height:Xlib.uint -> angle1:int -> angle2:int -> unit
    = "ml_XDrawArc_bytecode" "ml_XDrawArc"
  external xFillArc :
    dpy:Xlib.display ->
    d:'Xlib.drawable ->
    gc:Xlib.gc ->
    x:int ->
    y:int ->
    width:Xlib.uint -> height:Xlib.uint -> angle1:int -> angle2:int -> unit
    = "ml_XFillArc_bytecode" "ml_XFillArc"
  type x_arc = {
    arc_x : int;
    arc_y : int;
    arc_width : Xlib.uint;
    arc_height : Xlib.uint;
    arc_angle1 : int;
    arc_angle2 : int;
  }
  external xDrawArcs :
    dpy:Xlib.display ->
    d:'Xlib.drawable -> gc:Xlib.gc -> arcs:Xlib.x_arc array -> unit
    = "ml_XDrawArcs"
  external xFillArcs :
    dpy:Xlib.display ->
    d:'Xlib.drawable -> gc:Xlib.gc -> arcs:Xlib.x_arc array -> unit
    = "ml_XFillArcs"
  type shape_kind = Complex | Nonconvex | Convex
  external xFillPolygon :
    dpy:Xlib.display ->
    d:'Xlib.drawable ->
    gc:Xlib.gc ->
    points:Xlib.xPoint array ->
    shape:Xlib.shape_kind -> mode:Xlib.coordinate_mode -> unit
    = "ml_XFillPolygon_bytecode" "ml_XFillPolygon"
  external xDrawString :
    dpy:Xlib.display ->
    d:'Xlib.drawable -> gc:Xlib.gc -> x:int -> y:int -> str:string -> unit
    = "ml_XDrawString_bytecode" "ml_XDrawString"
  external xDrawImageString :
    dpy:Xlib.display ->
    d:'Xlib.drawable -> gc:Xlib.gc -> x:int -> y:int -> str:string -> unit
    = "ml_XDrawImageString_bytecode" "ml_XDrawImageString"
  type xChar2b
  external new_xChar2b : char * char -> Xlib.xChar2b = "ml_alloc_XChar2b"
  type xChar2b_string
  external new_xChar2b_string : (char * char) array -> Xlib.xChar2b_string
    = "ml_alloc_XChar2b_string"
  external xDrawImageString16 :
    dpy:Xlib.display ->
    d:'Xlib.drawable ->
    gc:Xlib.gc -> x:int -> y:int -> str16:Xlib.xChar2b_string -> unit
    = "ml_XDrawImageString16_bytecode" "ml_XDrawImageString16"
  external xDrawString16 :
    dpy:Xlib.display ->
    d:'Xlib.drawable ->
    gc:Xlib.gc -> x:int -> y:int -> str16:Xlib.xChar2b_string -> unit
    = "ml_XDrawString16_bytecode" "ml_XDrawString16"
  external xCopyArea :
    dpy:Xlib.display ->
    src:'Xlib.drawable ->
    dest:'Xlib.drawable ->
    gc:Xlib.gc ->
    src_x:int ->
    src_y:int ->
    width:Xlib.uint -> height:Xlib.uint -> dest_x:int -> dest_y:int -> unit
    = "ml_XCopyArea_bytecode" "ml_XCopyArea"
  external xCreatePixmap :
    dpy:Xlib.display ->
    d:'Xlib.drawable ->
    width:Xlib.uint -> height:Xlib.uint -> depth:Xlib.uint -> Xlib.pixmap
    = "ml_XCreatePixmap"
  external xCreateBitmapFromData :
    dpy:Xlib.display ->
    d:'Xlib.drawable ->
    data:string -> width:Xlib.uint -> height:Xlib.uint -> Xlib.pixmap
    = "ml_XCreateBitmapFromData"
  external xCreatePixmapCursor :
    dpy:Xlib.display ->
    source:Xlib.pixmap ->
    mask:Xlib.pixmap ->
    foreground:Xlib.xColor ->
    background:Xlib.xColor -> x:Xlib.uint -> y:Xlib.uint -> Xlib.cursor
    = "ml_XCreatePixmapCursor_bytecode" "ml_XCreatePixmapCursor"
  external xFreePixmap : dpy:Xlib.display -> Xlib.pixmap -> unit
    = "ml_XFreePixmap"
  external xQueryBestTile :
    dpy:Xlib.display ->
    d:'Xlib.drawable ->
    width:Xlib.uint -> height:Xlib.uint -> Xlib.uint * Xlib.uint
    = "ml_XQueryBestTile"
  type xPixmapFormatValues = {
    pxm_depth : int;
    bits_per_pixel : int;
    scanline_pad : int;
  }
  external xListPixmapFormats :
    dpy:Xlib.display -> Xlib.xPixmapFormatValues array
    = "ml_XListPixmapFormats"
  external xBitmapUnit : dpy:Xlib.display -> int = "ml_XBitmapUnit"
  external xBitmapPad : dpy:Xlib.display -> int = "ml_XBitmapPad"
  type byte_order = LSBFirst | MSBFirst
  external xImageByteOrder : dpy:Xlib.display -> Xlib.byte_order
    = "ml_XImageByteOrder"
  type ximage_format = XYBitmap | XYPixmap | ZPixmap
  type xImage
  external xCreateImage :
    dpy:Xlib.display ->
    visual:Xlib.visual ->
    depth:int ->
    fmt:Xlib.ximage_format ->
    offset:int ->
    data:'->
    width:Xlib.uint ->
    height:Xlib.uint -> bitmap_pad:int -> bytes_per_line:int -> Xlib.xImage
    = "ml_XCreateImage_bytecode" "ml_XCreateImage"
  external xDestroyImage : image:Xlib.xImage -> unit = "ml_XDestroyImage"
  external xSubImage :
    image:Xlib.xImage ->
    x:int -> y:int -> width:Xlib.uint -> height:Xlib.uint -> Xlib.xImage
    = "ml_XSubImage"
  external xAllPlanes : unit -> Xlib.uint = "ml_XAllPlanes"
  external xGetImage :
    dpy:Xlib.display ->
    d:'Xlib.drawable ->
    x:int ->
    y:int ->
    width:Xlib.uint ->
    height:Xlib.uint ->
    plane_mask:Xlib.uint -> fmt:Xlib.ximage_format -> Xlib.xImage
    = "ml_XGetImage_bytecode" "ml_XGetImage"
  type image_data =
      (int, Bigarray.int8_unsigned_elt, Bigarray.c_layout)
      Bigarray.Genarray.t
  external xImage_data_ba : image:Xlib.xImage -> Xlib.image_data
    = "ml_XImage_data_ba"
  external xImage_data_str : image:Xlib.xImage -> string
    = "ml_XImage_data_str"
  external xGetPixel :
    image:Xlib.xImage -> x:int -> y:int -> Xlib.pixel_color = "ml_XGetPixel"
  external xPutPixel :
    image:Xlib.xImage -> x:int -> y:int -> pixel:Xlib.pixel_color -> unit
    = "ml_XPutPixel"
  external xAddPixel : image:Xlib.xImage -> v:int -> unit = "ml_XAddPixel"
  external xPutImage :
    dpy:Xlib.display ->
    d:'Xlib.drawable ->
    gc:Xlib.gc ->
    image:Xlib.xImage ->
    src_x:int ->
    src_y:int ->
    dest_x:int -> dest_y:int -> width:Xlib.uint -> height:Xlib.uint -> unit
    = "ml_XPutImage_bytecode" "ml_XPutImage"
  external xAutoRepeatOff : dpy:Xlib.display -> unit = "ml_XAutoRepeatOff"
  external xAutoRepeatOn : dpy:Xlib.display -> unit = "ml_XAutoRepeatOn"
  external xQueryKeymap : dpy:Xlib.display -> string = "ml_XQueryKeymap"
  external xQueryPointer :
    dpy:Xlib.display ->
    win:Xlib.window ->
    Xlib.window * int * int * (Xlib.window * int * int) option *
    Xlib.logical_state list = "ml_XQueryPointer"
  module Got :
    sig type auto_repeat_mode = AutoRepeatModeOff | AutoRepeatModeOn end
  module Set :
    sig
      type auto_repeat_mode =
          AutoRepeatModeOff
        | AutoRepeatModeOn
        | AutoRepeatModeDefault
    end
  type xKeyboardState = {
    key_click_percent : int;
    bell_percent : int;
    bell_pitch : Xlib.uint;
    bell_duration : Xlib.uint;
    led_mask : Xlib.uint;
    global_auto_repeat : Xlib.Got.auto_repeat_mode;
    auto_repeats : string;
  }
  external xGetKeyboardControl : dpy:Xlib.display -> Xlib.xKeyboardState
    = "ml_XGetKeyboardControl"
  type screensaver_mode = ScreenSaverActive | ScreenSaverReset
  external xForceScreenSaver :
    dpy:Xlib.display -> mode:Xlib.screensaver_mode -> unit
    = "ml_XForceScreenSaver"
  type prefer_blanking =
      DontPreferBlanking
    | PreferBlanking
    | DefaultBlanking
  type allow_exposures =
      DontAllowExposures
    | AllowExposures
    | DefaultExposures
  type screensaver_values = {
    timeout : int;
    interval : int;
    prefer_blanking : Xlib.prefer_blanking;
    allow_exposures : Xlib.allow_exposures;
  }
  external xGetScreenSaver : dpy:Xlib.display -> Xlib.screensaver_values
    = "ml_XGetScreenSaver"
  external xSetScreenSaver :
    dpy:Xlib.display ->
    timeout:int ->
    interval:int ->
    prefer_blanking:Xlib.prefer_blanking ->
    allow_exposures:Xlib.allow_exposures -> unit = "ml_XSetScreenSaver"
  external xActivateScreenSaver : dpy:Xlib.display -> unit
    = "ml_XActivateScreenSaver"
  external xResetScreenSaver : dpy:Xlib.display -> unit
    = "ml_XResetScreenSaver"
  type xID
  type xErrorEvent_contents = {
    error_display : Xlib.display;
    error_resourceid : Xlib.xID;
    error_serial : Xlib.uint;
    error_error_code : char;
    error_request_code : char;
    error_minor_code : char;
  }
  external xErrorEvent_datas :
    Xlib.xErrorEvent Xlib.xEvent -> Xlib.xErrorEvent_contents
    = "ml_XErrorEvent_datas"
  val xSetErrorHandler :
    cb:(dpy:Xlib.display -> event:Xlib.xErrorEvent Xlib.xEvent -> unit) ->
    unit
  type cursor_shape =
      XC_X_cursor
    | XC_arrow
    | XC_based_arrow_down
    | XC_based_arrow_up
    | XC_boat
    | XC_bogosity
    | XC_bottom_left_corner
    | XC_bottom_right_corner
    | XC_bottom_side
    | XC_bottom_tee
    | XC_box_spiral
    | XC_center_ptr
    | XC_circle
    | XC_clock
    | XC_coffee_mug
    | XC_cross
    | XC_cross_reverse
    | XC_crosshair
    | XC_diamond_cross
    | XC_dot
    | XC_dotbox
    | XC_double_arrow
    | XC_draft_large
    | XC_draft_small
    | XC_draped_box
    | XC_exchange
    | XC_fleur
    | XC_gobbler
    | XC_gumby
    | XC_hand1
    | XC_hand2
    | XC_heart
    | XC_icon
    | XC_iron_cross
    | XC_left_ptr
    | XC_left_side
    | XC_left_tee
    | XC_leftbutton
    | XC_ll_angle
    | XC_lr_angle
    | XC_man
    | XC_middlebutton
    | XC_mouse
    | XC_pencil
    | XC_pirate
    | XC_plus
    | XC_question_arrow
    | XC_right_ptr
    | XC_right_side
    | XC_right_tee
    | XC_rightbutton
    | XC_rtl_logo
    | XC_sailboat
    | XC_sb_down_arrow
    | XC_sb_h_double_arrow
    | XC_sb_left_arrow
    | XC_sb_right_arrow
    | XC_sb_up_arrow
    | XC_sb_v_double_arrow
    | XC_shuttle
    | XC_sizing
    | XC_spider
    | XC_spraycan
    | XC_star
    | XC_target
    | XC_tcross
    | XC_top_left_arrow
    | XC_top_left_corner
    | XC_top_right_corner
    | XC_top_side
    | XC_top_tee
    | XC_trek
    | XC_ul_angle
    | XC_umbrella
    | XC_ur_angle
    | XC_watch
    | XC_xterm
  external xCreateFontCursor :
    dpy:Xlib.display -> shape:Xlib.cursor_shape -> Xlib.cursor
    = "ml_XCreateFontCursor"
  external xDefineCursor :
    dpy:Xlib.display -> win:Xlib.window -> cursor:Xlib.cursor -> unit
    = "ml_XDefineCursor"
  external xRecolorCursor :
    dpy:Xlib.display ->
    cursor:Xlib.cursor ->
    foreground:Xlib.xColor -> background:Xlib.xColor -> unit
    = "ml_XRecolorCursor"
  external xChangePointerControl :
    dpy:Xlib.display ->
    do_accel:bool ->
    do_threshold:bool ->
    accel_numerator:int -> accel_denominator:int -> threshold:int -> unit
    = "ml_XChangePointerControl_bytecode" "ml_XChangePointerControl"
  external xGetPointerControl : dpy:Xlib.display -> int * int * int
    = "ml_XGetPointerControl"
  external xReparentWindow :
    dpy:Xlib.display ->
    win:Xlib.window -> parent:Xlib.window -> x:int -> y:int -> unit
    = "ml_XReparentWindow"
  type change_mode = SetModeInsert | SetModeDelete
  external xChangeSaveSet :
    dpy:Xlib.display -> win:Xlib.window -> mode:Xlib.change_mode -> unit
    = "ml_XChangeSaveSet"
  external xAddToSaveSet : dpy:Xlib.display -> win:Xlib.window -> unit
    = "ml_XAddToSaveSet"
  external xRemoveFromSaveSet : dpy:Xlib.display -> win:Xlib.window -> unit
    = "ml_XRemoveFromSaveSet"
  external xKillClient : dpy:Xlib.display -> resource:Xlib.window -> unit
    = "ml_XKillClient"
  external xInitThreads : unit -> unit = "ml_XInitThreads"
  external xLockDisplay : dpy:Xlib.display -> unit = "ml_XLockDisplay"
  external xUnlockDisplay : dpy:Xlib.display -> unit = "ml_XUnlockDisplay"
  external xIconifyWindow :
    dpy:Xlib.display -> win:Xlib.window -> scr:Xlib.screen_number -> unit
    = "ml_XIconifyWindow"
  external xWithdrawWindow :
    dpy:Xlib.display -> win:Xlib.window -> scr:Xlib.screen_number -> unit
    = "ml_XWithdrawWindow"
  external xGetCommand : dpy:Xlib.display -> win:Xlib.window -> string array
    = "ml_XGetCommand"
end