sig
  val cast : 'Gobject.obj -> Gtk.window Gtk.obj
  module P :
    sig
      val title : ([> `window ], string) Gobject.property
      val accept_focus : ([> `window ], bool) Gobject.property
      val allow_grow : ([> `window ], bool) Gobject.property
      val allow_shrink : ([> `window ], bool) Gobject.property
      val decorated : ([> `window ], bool) Gobject.property
      val default_height : ([> `window ], int) Gobject.property
      val default_width : ([> `window ], int) Gobject.property
      val deletable : ([> `window ], bool) Gobject.property
      val destroy_with_parent : ([> `window ], bool) Gobject.property
      val focus_on_map : ([> `window ], bool) Gobject.property
      val gravity : ([> `window ], GdkEnums.gravity) Gobject.property
      val has_toplevel_focus : ([> `window ], bool) Gobject.property
      val icon : ([> `window ], GdkPixbuf.pixbuf option) Gobject.property
      val icon_name : ([> `window ], string) Gobject.property
      val is_active : ([> `window ], bool) Gobject.property
      val modal : ([> `window ], bool) Gobject.property
      val window_position :
        ([> `window ], GtkEnums.window_position) Gobject.property
      val opacity : ([> `window ], float) Gobject.property
      val resizable : ([> `window ], bool) Gobject.property
      val role : ([> `window ], string) Gobject.property
      val screen : ([> `window ], Gdk.screen) Gobject.property
      val skip_pager_hint : ([> `window ], bool) Gobject.property
      val skip_taskbar_hint : ([> `window ], bool) Gobject.property
      val startup_id : ([> `window ], string) Gobject.property
      val transient_for :
        ([> `window ], Gtk.window Gtk.obj option) Gobject.property
      val kind : ([> `window ], GtkEnums.window_type) Gobject.property
      val type_hint :
        ([> `window ], GdkEnums.window_type_hint) Gobject.property
      val urgency_hint : ([> `window ], bool) Gobject.property
    end
  module S :
    sig
      val activate_default : ([> `window ], unit -> unit) GtkSignal.t
      val activate_focus : ([> `window ], unit -> unit) GtkSignal.t
      val frame_event : ([> `window ], GdkEvent.any -> unit) GtkSignal.t
      val keys_changed : ([> `window ], unit -> unit) GtkSignal.t
      val move_focus :
        ([> `window ], GtkEnums.direction_type -> unit) GtkSignal.t
      val set_focus :
        ([> `window ], Gtk.widget Gtk.obj option -> unit) GtkSignal.t
    end
  val create :
    ?kind:GtkEnums.window_type ->
    Gtk.window Gobject.param list -> Gtk.window Gtk.obj
  external present : [> `window ] Gtk.obj -> unit = "ml_gtk_window_present"
  external iconify : [> `window ] Gtk.obj -> unit = "ml_gtk_window_iconify"
  external deiconify : [> `window ] Gtk.obj -> unit
    = "ml_gtk_window_deiconify"
  external stick : [> `window ] Gtk.obj -> unit = "ml_gtk_window_stick"
  external unstick : [> `window ] Gtk.obj -> unit = "ml_gtk_window_unstick"
  external maximize : [> `window ] Gtk.obj -> unit = "ml_gtk_window_maximize"
  external unmaximize : [> `window ] Gtk.obj -> unit
    = "ml_gtk_window_unmaximize"
  external fullscreen : [> `window ] Gtk.obj -> unit
    = "ml_gtk_window_fullscreen"
  external unfullscreen : [> `window ] Gtk.obj -> unit
    = "ml_gtk_window_unfullscreen"
  external set_decorated : [> `window ] Gtk.obj -> bool -> unit
    = "ml_gtk_window_set_decorated"
  external set_mnemonic_modifier :
    [> `window ] Gtk.obj -> Gdk.Tags.modifier list -> unit
    = "ml_gtk_window_set_mnemonic_modifier"
  external move : [> `window ] Gtk.obj -> x:int -> y:int -> unit
    = "ml_gtk_window_move"
  external parse_geometry : [> `window ] Gtk.obj -> string -> bool
    = "ml_gtk_window_parse_geometry"
  external reshow_with_initial_size : [> `window ] Gtk.obj -> unit
    = "ml_gtk_window_reshow_with_initial_size"
  external resize : [> `window ] Gtk.obj -> width:int -> height:int -> unit
    = "ml_gtk_window_resize"
  external set_role : [> `window ] Gtk.obj -> string -> unit
    = "ml_gtk_window_set_role"
  external get_role : [> `window ] Gtk.obj -> string
    = "ml_gtk_window_get_role"
  val make_params :
    cont:(([> `window ] as 'a) Gobject.param list -> 'b) ->
    'Gobject.param list ->
    ?title:string ->
    ?allow_grow:bool ->
    ?allow_shrink:bool ->
    ?decorated:bool ->
    ?deletable:bool ->
    ?focus_on_map:bool ->
    ?icon:GdkPixbuf.pixbuf ->
    ?icon_name:string ->
    ?modal:bool ->
    ?position:GtkEnums.window_position ->
    ?resizable:bool ->
    ?screen:Gdk.screen ->
    ?type_hint:GdkEnums.window_type_hint -> ?urgency_hint:bool -> 'b
  external set_wmclass :
    [> `window ] Gtk.obj -> name:string -> clas:string -> unit
    = "ml_gtk_window_set_wmclass"
  external get_wmclass_name : [> `window ] Gtk.obj -> string
    = "ml_gtk_window_get_wmclass_name"
  external get_wmclass_class : [> `window ] Gtk.obj -> string
    = "ml_gtk_window_get_wmclass_class"
  external add_accel_group : [> `window ] Gtk.obj -> Gtk.accel_group -> unit
    = "ml_gtk_window_add_accel_group"
  external remove_accel_group :
    [> `window ] Gtk.obj -> Gtk.accel_group -> unit
    = "ml_gtk_window_remove_accel_group"
  external activate_focus : [> `window ] Gtk.obj -> bool
    = "ml_gtk_window_activate_focus"
  external activate_default : [> `window ] Gtk.obj -> bool
    = "ml_gtk_window_activate_default"
  external set_geometry_hints :
    [> `window ] Gtk.obj ->
    ?pos:bool ->
    ?min_size:int * int ->
    ?max_size:int * int ->
    ?base_size:int * int ->
    ?aspect:float * float ->
    ?resize_inc:int * int ->
    ?win_gravity:Gdk.Tags.gravity ->
    ?user_pos:bool -> ?user_size:bool -> [> `widget ] Gtk.obj -> unit
    = "ml_gtk_window_set_geometry_hints_bc"
    "ml_gtk_window_set_geometry_hints"
  external list_toplevels : unit -> Gtk.window Gtk.obj list
    = "ml_gtk_window_list_toplevels"
  external add_mnemonic :
    [> `window ] Gtk.obj -> Gdk.keysym -> [> `widget ] Gtk.obj -> unit
    = "ml_gtk_window_add_mnemonic"
  external remove_mnemonic :
    [> `window ] Gtk.obj -> Gdk.keysym -> [> `widget ] Gtk.obj -> unit
    = "ml_gtk_window_remove_mnemonic"
  external activate_mnemonic :
    [> `window ] Gtk.obj ->
    ?modi:Gdk.Tags.modifier list -> Gdk.keysym -> unit
    = "ml_gtk_window_mnemonic_activate"
  external get_focus : [> `window ] Gtk.obj -> Gtk.widget Gtk.obj
    = "ml_gtk_window_get_focus"
  external set_focus : [> `window ] Gtk.obj -> [> `widget ] Gtk.obj -> unit
    = "ml_gtk_window_set_focus"
  external set_default : [> `window ] Gtk.obj -> [> `widget ] Gtk.obj -> unit
    = "ml_gtk_window_set_default"
  val set_wmclass :
    ?name:string -> ?clas:string -> [> `window ] Gtk.obj -> unit
end