wnck-sys 0.1.0

libwnck ffi wrapper
Documentation
// This file was generated by gir (https://github.com/gtk-rs/gir)
// from gir-files (https://github.com/gtk-rs/gir-files)
// DO NOT EDIT

#![allow(non_camel_case_types, non_upper_case_globals, non_snake_case)]
#![allow(clippy::approx_constant, clippy::type_complexity, clippy::unreadable_literal)]
extern crate glib_sys as glib;
extern crate libc;
extern crate gobject_sys as gobject;
extern crate gtk_sys as gtk;
extern crate  gdk_sys as gdk;
extern crate gdk_pixbuf_sys as gdk_pixbuf;
#[allow(unused_imports)]
use libc::{c_int, c_char, c_uchar, c_float, c_uint, c_double,
    c_short, c_ushort, c_long, c_ulong,
    c_void, size_t, ssize_t, intptr_t, uintptr_t, time_t, FILE};

#[allow(unused_imports)]
use glib::{gboolean, gconstpointer, gpointer, GType};

// Enums
pub type WnckClientType = c_int;
pub const WNCK_CLIENT_TYPE_APPLICATION: WnckClientType = 1;
pub const WNCK_CLIENT_TYPE_PAGER: WnckClientType = 2;

pub type WnckMotionDirection = c_int;
pub const WNCK_MOTION_UP: WnckMotionDirection = -1;
pub const WNCK_MOTION_DOWN: WnckMotionDirection = -2;
pub const WNCK_MOTION_LEFT: WnckMotionDirection = -3;
pub const WNCK_MOTION_RIGHT: WnckMotionDirection = -4;

pub type WnckPagerDisplayMode = c_int;
pub const WNCK_PAGER_DISPLAY_NAME: WnckPagerDisplayMode = 0;
pub const WNCK_PAGER_DISPLAY_CONTENT: WnckPagerDisplayMode = 1;

pub type WnckTasklistGroupingType = c_int;
pub const WNCK_TASKLIST_NEVER_GROUP: WnckTasklistGroupingType = 0;
pub const WNCK_TASKLIST_AUTO_GROUP: WnckTasklistGroupingType = 1;
pub const WNCK_TASKLIST_ALWAYS_GROUP: WnckTasklistGroupingType = 2;

pub type WnckWindowGravity = c_int;
pub const WNCK_WINDOW_GRAVITY_CURRENT: WnckWindowGravity = 0;
pub const WNCK_WINDOW_GRAVITY_NORTHWEST: WnckWindowGravity = 1;
pub const WNCK_WINDOW_GRAVITY_NORTH: WnckWindowGravity = 2;
pub const WNCK_WINDOW_GRAVITY_NORTHEAST: WnckWindowGravity = 3;
pub const WNCK_WINDOW_GRAVITY_WEST: WnckWindowGravity = 4;
pub const WNCK_WINDOW_GRAVITY_CENTER: WnckWindowGravity = 5;
pub const WNCK_WINDOW_GRAVITY_EAST: WnckWindowGravity = 6;
pub const WNCK_WINDOW_GRAVITY_SOUTHWEST: WnckWindowGravity = 7;
pub const WNCK_WINDOW_GRAVITY_SOUTH: WnckWindowGravity = 8;
pub const WNCK_WINDOW_GRAVITY_SOUTHEAST: WnckWindowGravity = 9;
pub const WNCK_WINDOW_GRAVITY_STATIC: WnckWindowGravity = 10;

pub type WnckWindowType = c_int;
pub const WNCK_WINDOW_NORMAL: WnckWindowType = 0;
pub const WNCK_WINDOW_DESKTOP: WnckWindowType = 1;
pub const WNCK_WINDOW_DOCK: WnckWindowType = 2;
pub const WNCK_WINDOW_DIALOG: WnckWindowType = 3;
pub const WNCK_WINDOW_TOOLBAR: WnckWindowType = 4;
pub const WNCK_WINDOW_MENU: WnckWindowType = 5;
pub const WNCK_WINDOW_UTILITY: WnckWindowType = 6;
pub const WNCK_WINDOW_SPLASHSCREEN: WnckWindowType = 7;

pub type _WnckLayoutCorner = c_int;
pub const WNCK_LAYOUT_CORNER_TOPLEFT: _WnckLayoutCorner = 0;
pub const WNCK_LAYOUT_CORNER_TOPRIGHT: _WnckLayoutCorner = 1;
pub const WNCK_LAYOUT_CORNER_BOTTOMRIGHT: _WnckLayoutCorner = 2;
pub const WNCK_LAYOUT_CORNER_BOTTOMLEFT: _WnckLayoutCorner = 3;

pub type _WnckLayoutOrientation = c_int;
pub const WNCK_LAYOUT_ORIENTATION_HORIZONTAL: _WnckLayoutOrientation = 0;
pub const WNCK_LAYOUT_ORIENTATION_VERTICAL: _WnckLayoutOrientation = 1;

// Constants
pub const WNCK_DEFAULT_ICON_SIZE: c_int = 32;
pub const WNCK_DEFAULT_MINI_ICON_SIZE: c_int = 16;
pub const WNCK_MAJOR_VERSION: c_int = 3;
pub const WNCK_MICRO_VERSION: c_int = 0;
pub const WNCK_MINOR_VERSION: c_int = 30;

// Flags
pub type WnckWindowActions = c_uint;
pub const WNCK_WINDOW_ACTION_MOVE: WnckWindowActions = 1;
pub const WNCK_WINDOW_ACTION_RESIZE: WnckWindowActions = 2;
pub const WNCK_WINDOW_ACTION_SHADE: WnckWindowActions = 4;
pub const WNCK_WINDOW_ACTION_STICK: WnckWindowActions = 8;
pub const WNCK_WINDOW_ACTION_MAXIMIZE_HORIZONTALLY: WnckWindowActions = 16;
pub const WNCK_WINDOW_ACTION_MAXIMIZE_VERTICALLY: WnckWindowActions = 32;
pub const WNCK_WINDOW_ACTION_CHANGE_WORKSPACE: WnckWindowActions = 64;
pub const WNCK_WINDOW_ACTION_CLOSE: WnckWindowActions = 128;
pub const WNCK_WINDOW_ACTION_UNMAXIMIZE_HORIZONTALLY: WnckWindowActions = 256;
pub const WNCK_WINDOW_ACTION_UNMAXIMIZE_VERTICALLY: WnckWindowActions = 512;
pub const WNCK_WINDOW_ACTION_UNSHADE: WnckWindowActions = 1024;
pub const WNCK_WINDOW_ACTION_UNSTICK: WnckWindowActions = 2048;
pub const WNCK_WINDOW_ACTION_MINIMIZE: WnckWindowActions = 4096;
pub const WNCK_WINDOW_ACTION_UNMINIMIZE: WnckWindowActions = 8192;
pub const WNCK_WINDOW_ACTION_MAXIMIZE: WnckWindowActions = 16384;
pub const WNCK_WINDOW_ACTION_UNMAXIMIZE: WnckWindowActions = 32768;
pub const WNCK_WINDOW_ACTION_FULLSCREEN: WnckWindowActions = 65536;
pub const WNCK_WINDOW_ACTION_ABOVE: WnckWindowActions = 131072;
pub const WNCK_WINDOW_ACTION_BELOW: WnckWindowActions = 262144;

pub type WnckWindowMoveResizeMask = c_uint;
pub const WNCK_WINDOW_CHANGE_X: WnckWindowMoveResizeMask = 1;
pub const WNCK_WINDOW_CHANGE_Y: WnckWindowMoveResizeMask = 2;
pub const WNCK_WINDOW_CHANGE_WIDTH: WnckWindowMoveResizeMask = 4;
pub const WNCK_WINDOW_CHANGE_HEIGHT: WnckWindowMoveResizeMask = 8;

pub type WnckWindowState = c_uint;
pub const WNCK_WINDOW_STATE_MINIMIZED: WnckWindowState = 1;
pub const WNCK_WINDOW_STATE_MAXIMIZED_HORIZONTALLY: WnckWindowState = 2;
pub const WNCK_WINDOW_STATE_MAXIMIZED_VERTICALLY: WnckWindowState = 4;
pub const WNCK_WINDOW_STATE_SHADED: WnckWindowState = 8;
pub const WNCK_WINDOW_STATE_SKIP_PAGER: WnckWindowState = 16;
pub const WNCK_WINDOW_STATE_SKIP_TASKLIST: WnckWindowState = 32;
pub const WNCK_WINDOW_STATE_STICKY: WnckWindowState = 64;
pub const WNCK_WINDOW_STATE_HIDDEN: WnckWindowState = 128;
pub const WNCK_WINDOW_STATE_FULLSCREEN: WnckWindowState = 256;
pub const WNCK_WINDOW_STATE_DEMANDS_ATTENTION: WnckWindowState = 512;
pub const WNCK_WINDOW_STATE_URGENT: WnckWindowState = 1024;
pub const WNCK_WINDOW_STATE_ABOVE: WnckWindowState = 2048;
pub const WNCK_WINDOW_STATE_BELOW: WnckWindowState = 4096;

// Callbacks
pub type WnckLoadIconFunction = Option<unsafe extern "C" fn(*const c_char, c_int, c_uint, *mut c_void) -> *mut gdk_pixbuf::GdkPixbuf>;

// Records
#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckActionMenuClass {
    pub parent_class: gtk::GtkMenuClass,
    pub pad1: Option<unsafe extern "C" fn()>,
    pub pad2: Option<unsafe extern "C" fn()>,
    pub pad3: Option<unsafe extern "C" fn()>,
    pub pad4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for WnckActionMenuClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckActionMenuClass @ {:?}", self as *const _))
         .field("parent_class", &self.parent_class)
         .field("pad1", &self.pad1)
         .field("pad2", &self.pad2)
         .field("pad3", &self.pad3)
         .field("pad4", &self.pad4)
         .finish()
    }
}

#[repr(C)]
pub struct WnckActionMenuPrivate(c_void);

impl ::std::fmt::Debug for WnckActionMenuPrivate {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckActionMenuPrivate @ {:?}", self as *const _))
         .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckApplicationClass {
    pub parent_class: gobject::GObjectClass,
    pub name_changed: Option<unsafe extern "C" fn(*mut WnckApplication)>,
    pub icon_changed: Option<unsafe extern "C" fn(*mut WnckApplication)>,
    pub pad1: Option<unsafe extern "C" fn()>,
    pub pad2: Option<unsafe extern "C" fn()>,
    pub pad3: Option<unsafe extern "C" fn()>,
    pub pad4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for WnckApplicationClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckApplicationClass @ {:?}", self as *const _))
         .field("parent_class", &self.parent_class)
         .field("name_changed", &self.name_changed)
         .field("icon_changed", &self.icon_changed)
         .field("pad1", &self.pad1)
         .field("pad2", &self.pad2)
         .field("pad3", &self.pad3)
         .field("pad4", &self.pad4)
         .finish()
    }
}

#[repr(C)]
pub struct WnckApplicationPrivate(c_void);

impl ::std::fmt::Debug for WnckApplicationPrivate {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckApplicationPrivate @ {:?}", self as *const _))
         .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckClassGroupClass {
    pub parent_class: gobject::GObjectClass,
    pub name_changed: Option<unsafe extern "C" fn(*mut WnckClassGroup)>,
    pub icon_changed: Option<unsafe extern "C" fn(*mut WnckClassGroup)>,
    pub pad1: Option<unsafe extern "C" fn()>,
    pub pad2: Option<unsafe extern "C" fn()>,
    pub pad3: Option<unsafe extern "C" fn()>,
    pub pad4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for WnckClassGroupClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckClassGroupClass @ {:?}", self as *const _))
         .field("parent_class", &self.parent_class)
         .field("name_changed", &self.name_changed)
         .field("icon_changed", &self.icon_changed)
         .field("pad1", &self.pad1)
         .field("pad2", &self.pad2)
         .field("pad3", &self.pad3)
         .field("pad4", &self.pad4)
         .finish()
    }
}

#[repr(C)]
pub struct WnckClassGroupPrivate(c_void);

impl ::std::fmt::Debug for WnckClassGroupPrivate {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckClassGroupPrivate @ {:?}", self as *const _))
         .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckPagerClass {
    pub parent_class: gtk::GtkContainerClass,
    pub pad1: Option<unsafe extern "C" fn()>,
    pub pad2: Option<unsafe extern "C" fn()>,
    pub pad3: Option<unsafe extern "C" fn()>,
    pub pad4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for WnckPagerClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckPagerClass @ {:?}", self as *const _))
         .field("parent_class", &self.parent_class)
         .field("pad1", &self.pad1)
         .field("pad2", &self.pad2)
         .field("pad3", &self.pad3)
         .field("pad4", &self.pad4)
         .finish()
    }
}

#[repr(C)]
pub struct WnckPagerPrivate(c_void);

impl ::std::fmt::Debug for WnckPagerPrivate {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckPagerPrivate @ {:?}", self as *const _))
         .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckResourceUsage {
    pub total_bytes_estimate: c_ulong,
    pub pixmap_bytes: c_ulong,
    pub n_pixmaps: c_uint,
    pub n_windows: c_uint,
    pub n_gcs: c_uint,
    pub n_pictures: c_uint,
    pub n_glyphsets: c_uint,
    pub n_fonts: c_uint,
    pub n_colormap_entries: c_uint,
    pub n_passive_grabs: c_uint,
    pub n_cursors: c_uint,
    pub n_other: c_uint,
    pub pad1: c_uint,
    pub pad2: c_uint,
    pub pad3: c_uint,
    pub pad4: c_uint,
    pub pad5: c_uint,
    pub pad6: c_uint,
    pub pad7: c_uint,
    pub pad8: c_uint,
    pub pad9: c_uint,
}

impl ::std::fmt::Debug for WnckResourceUsage {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckResourceUsage @ {:?}", self as *const _))
         .field("total_bytes_estimate", &self.total_bytes_estimate)
         .field("pixmap_bytes", &self.pixmap_bytes)
         .field("n_pixmaps", &self.n_pixmaps)
         .field("n_windows", &self.n_windows)
         .field("n_gcs", &self.n_gcs)
         .field("n_pictures", &self.n_pictures)
         .field("n_glyphsets", &self.n_glyphsets)
         .field("n_fonts", &self.n_fonts)
         .field("n_colormap_entries", &self.n_colormap_entries)
         .field("n_passive_grabs", &self.n_passive_grabs)
         .field("n_cursors", &self.n_cursors)
         .field("n_other", &self.n_other)
         .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckScreenClass {
    pub parent_class: gobject::GObjectClass,
    pub active_window_changed: Option<unsafe extern "C" fn(*mut WnckScreen, *mut WnckWindow)>,
    pub active_workspace_changed: Option<unsafe extern "C" fn(*mut WnckScreen, *mut WnckWorkspace)>,
    pub window_stacking_changed: Option<unsafe extern "C" fn(*mut WnckScreen)>,
    pub window_opened: Option<unsafe extern "C" fn(*mut WnckScreen, *mut WnckWindow)>,
    pub window_closed: Option<unsafe extern "C" fn(*mut WnckScreen, *mut WnckWindow)>,
    pub workspace_created: Option<unsafe extern "C" fn(*mut WnckScreen, *mut WnckWorkspace)>,
    pub workspace_destroyed: Option<unsafe extern "C" fn(*mut WnckScreen, *mut WnckWorkspace)>,
    pub application_opened: Option<unsafe extern "C" fn(*mut WnckScreen, *mut WnckApplication)>,
    pub application_closed: Option<unsafe extern "C" fn(*mut WnckScreen, *mut WnckApplication)>,
    pub background_changed: Option<unsafe extern "C" fn(*mut WnckScreen)>,
    pub class_group_opened: Option<unsafe extern "C" fn(*mut WnckScreen, *mut WnckClassGroup)>,
    pub class_group_closed: Option<unsafe extern "C" fn(*mut WnckScreen, *mut WnckClassGroup)>,
    pub showing_desktop_changed: Option<unsafe extern "C" fn(*mut WnckScreen)>,
    pub viewports_changed: Option<unsafe extern "C" fn(*mut WnckScreen)>,
    pub window_manager_changed: Option<unsafe extern "C" fn(*mut WnckScreen)>,
    pub pad2: Option<unsafe extern "C" fn()>,
    pub pad3: Option<unsafe extern "C" fn()>,
    pub pad4: Option<unsafe extern "C" fn()>,
    pub pad5: Option<unsafe extern "C" fn()>,
    pub pad6: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for WnckScreenClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckScreenClass @ {:?}", self as *const _))
         .field("parent_class", &self.parent_class)
         .field("active_window_changed", &self.active_window_changed)
         .field("active_workspace_changed", &self.active_workspace_changed)
         .field("window_stacking_changed", &self.window_stacking_changed)
         .field("window_opened", &self.window_opened)
         .field("window_closed", &self.window_closed)
         .field("workspace_created", &self.workspace_created)
         .field("workspace_destroyed", &self.workspace_destroyed)
         .field("application_opened", &self.application_opened)
         .field("application_closed", &self.application_closed)
         .field("background_changed", &self.background_changed)
         .field("class_group_opened", &self.class_group_opened)
         .field("class_group_closed", &self.class_group_closed)
         .field("showing_desktop_changed", &self.showing_desktop_changed)
         .field("viewports_changed", &self.viewports_changed)
         .field("window_manager_changed", &self.window_manager_changed)
         .field("pad2", &self.pad2)
         .field("pad3", &self.pad3)
         .field("pad4", &self.pad4)
         .field("pad5", &self.pad5)
         .field("pad6", &self.pad6)
         .finish()
    }
}

#[repr(C)]
pub struct WnckScreenPrivate(c_void);

impl ::std::fmt::Debug for WnckScreenPrivate {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckScreenPrivate @ {:?}", self as *const _))
         .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckSelectorClass {
    pub parent_class: gtk::GtkMenuBarClass,
    pub pad1: Option<unsafe extern "C" fn()>,
    pub pad2: Option<unsafe extern "C" fn()>,
    pub pad3: Option<unsafe extern "C" fn()>,
    pub pad4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for WnckSelectorClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckSelectorClass @ {:?}", self as *const _))
         .field("parent_class", &self.parent_class)
         .field("pad1", &self.pad1)
         .field("pad2", &self.pad2)
         .field("pad3", &self.pad3)
         .field("pad4", &self.pad4)
         .finish()
    }
}

#[repr(C)]
pub struct WnckSelectorPrivate(c_void);

impl ::std::fmt::Debug for WnckSelectorPrivate {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckSelectorPrivate @ {:?}", self as *const _))
         .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckTasklistClass {
    pub parent_class: gtk::GtkContainerClass,
    pub pad1: Option<unsafe extern "C" fn()>,
    pub pad2: Option<unsafe extern "C" fn()>,
    pub pad3: Option<unsafe extern "C" fn()>,
    pub pad4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for WnckTasklistClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckTasklistClass @ {:?}", self as *const _))
         .field("parent_class", &self.parent_class)
         .field("pad1", &self.pad1)
         .field("pad2", &self.pad2)
         .field("pad3", &self.pad3)
         .field("pad4", &self.pad4)
         .finish()
    }
}

#[repr(C)]
pub struct WnckTasklistPrivate(c_void);

impl ::std::fmt::Debug for WnckTasklistPrivate {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckTasklistPrivate @ {:?}", self as *const _))
         .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckWindowClass {
    pub parent_class: gobject::GObjectClass,
    pub name_changed: Option<unsafe extern "C" fn(*mut WnckWindow)>,
    pub state_changed: Option<unsafe extern "C" fn(*mut WnckWindow, WnckWindowState, WnckWindowState)>,
    pub workspace_changed: Option<unsafe extern "C" fn(*mut WnckWindow)>,
    pub icon_changed: Option<unsafe extern "C" fn(*mut WnckWindow)>,
    pub actions_changed: Option<unsafe extern "C" fn(*mut WnckWindow, WnckWindowActions, WnckWindowActions)>,
    pub geometry_changed: Option<unsafe extern "C" fn(*mut WnckWindow)>,
    pub class_changed: Option<unsafe extern "C" fn(*mut WnckWindow)>,
    pub role_changed: Option<unsafe extern "C" fn(*mut WnckWindow)>,
    pub type_changed: Option<unsafe extern "C" fn(*mut WnckWindow)>,
    pub pad1: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for WnckWindowClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckWindowClass @ {:?}", self as *const _))
         .field("parent_class", &self.parent_class)
         .field("name_changed", &self.name_changed)
         .field("state_changed", &self.state_changed)
         .field("workspace_changed", &self.workspace_changed)
         .field("icon_changed", &self.icon_changed)
         .field("actions_changed", &self.actions_changed)
         .field("geometry_changed", &self.geometry_changed)
         .field("class_changed", &self.class_changed)
         .field("role_changed", &self.role_changed)
         .field("type_changed", &self.type_changed)
         .field("pad1", &self.pad1)
         .finish()
    }
}

#[repr(C)]
pub struct WnckWindowPrivate(c_void);

impl ::std::fmt::Debug for WnckWindowPrivate {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckWindowPrivate @ {:?}", self as *const _))
         .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckWorkspaceClass {
    pub parent_class: gobject::GObjectClass,
    pub name_changed: Option<unsafe extern "C" fn(*mut WnckWorkspace)>,
    pub pad1: Option<unsafe extern "C" fn()>,
    pub pad2: Option<unsafe extern "C" fn()>,
    pub pad3: Option<unsafe extern "C" fn()>,
    pub pad4: Option<unsafe extern "C" fn()>,
}

impl ::std::fmt::Debug for WnckWorkspaceClass {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckWorkspaceClass @ {:?}", self as *const _))
         .field("parent_class", &self.parent_class)
         .field("name_changed", &self.name_changed)
         .field("pad1", &self.pad1)
         .field("pad2", &self.pad2)
         .field("pad3", &self.pad3)
         .field("pad4", &self.pad4)
         .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckWorkspaceLayout {
    pub rows: c_int,
    pub cols: c_int,
    pub grid: *mut c_int,
    pub grid_area: c_int,
    pub current_row: c_int,
    pub current_col: c_int,
}

impl ::std::fmt::Debug for WnckWorkspaceLayout {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckWorkspaceLayout @ {:?}", self as *const _))
         .field("rows", &self.rows)
         .field("cols", &self.cols)
         .field("grid", &self.grid)
         .field("grid_area", &self.grid_area)
         .field("current_row", &self.current_row)
         .field("current_col", &self.current_col)
         .finish()
    }
}

#[repr(C)]
pub struct WnckWorkspacePrivate(c_void);

impl ::std::fmt::Debug for WnckWorkspacePrivate {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckWorkspacePrivate @ {:?}", self as *const _))
         .finish()
    }
}

// Classes
#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckActionMenu {
    pub parent_instance: gtk::GtkMenu,
    pub priv_: *mut WnckActionMenuPrivate,
}

impl ::std::fmt::Debug for WnckActionMenu {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckActionMenu @ {:?}", self as *const _))
         .field("parent_instance", &self.parent_instance)
         .field("priv_", &self.priv_)
         .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckApplication {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut WnckApplicationPrivate,
}

impl ::std::fmt::Debug for WnckApplication {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckApplication @ {:?}", self as *const _))
         .field("parent_instance", &self.parent_instance)
         .field("priv_", &self.priv_)
         .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckClassGroup {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut WnckClassGroupPrivate,
}

impl ::std::fmt::Debug for WnckClassGroup {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckClassGroup @ {:?}", self as *const _))
         .field("parent_instance", &self.parent_instance)
         .field("priv_", &self.priv_)
         .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckPager {
    pub parent_instance: gtk::GtkContainer,
    pub priv_: *mut WnckPagerPrivate,
}

impl ::std::fmt::Debug for WnckPager {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckPager @ {:?}", self as *const _))
         .field("parent_instance", &self.parent_instance)
         .field("priv_", &self.priv_)
         .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckScreen {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut WnckScreenPrivate,
}

impl ::std::fmt::Debug for WnckScreen {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckScreen @ {:?}", self as *const _))
         .field("parent_instance", &self.parent_instance)
         .field("priv_", &self.priv_)
         .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckSelector {
    pub parent_instance: gtk::GtkMenuBar,
    pub priv_: *mut WnckSelectorPrivate,
}

impl ::std::fmt::Debug for WnckSelector {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckSelector @ {:?}", self as *const _))
         .field("parent_instance", &self.parent_instance)
         .field("priv_", &self.priv_)
         .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckTasklist {
    pub parent_instance: gtk::GtkContainer,
    pub priv_: *mut WnckTasklistPrivate,
}

impl ::std::fmt::Debug for WnckTasklist {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckTasklist @ {:?}", self as *const _))
         .field("parent_instance", &self.parent_instance)
         .field("priv_", &self.priv_)
         .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckWindow {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut WnckWindowPrivate,
}

impl ::std::fmt::Debug for WnckWindow {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckWindow @ {:?}", self as *const _))
         .field("parent_instance", &self.parent_instance)
         .field("priv_", &self.priv_)
         .finish()
    }
}

#[repr(C)]
#[derive(Copy, Clone)]
pub struct WnckWorkspace {
    pub parent_instance: gobject::GObject,
    pub priv_: *mut WnckWorkspacePrivate,
}

impl ::std::fmt::Debug for WnckWorkspace {
    fn fmt(&self, f: &mut ::std::fmt::Formatter) -> ::std::fmt::Result {
        f.debug_struct(&format!("WnckWorkspace @ {:?}", self as *const _))
         .field("parent_instance", &self.parent_instance)
         .field("priv_", &self.priv_)
         .finish()
    }
}

extern "C" {

    //=========================================================================
    // WnckClientType
    //=========================================================================
    pub fn wnck_client_type_get_type() -> GType;

    //=========================================================================
    // WnckMotionDirection
    //=========================================================================
    pub fn wnck_motion_direction_get_type() -> GType;

    //=========================================================================
    // WnckPagerDisplayMode
    //=========================================================================
    pub fn wnck_pager_display_mode_get_type() -> GType;

    //=========================================================================
    // WnckTasklistGroupingType
    //=========================================================================
    pub fn wnck_tasklist_grouping_type_get_type() -> GType;

    //=========================================================================
    // WnckWindowGravity
    //=========================================================================
    pub fn wnck_window_gravity_get_type() -> GType;

    //=========================================================================
    // WnckWindowType
    //=========================================================================
    pub fn wnck_window_type_get_type() -> GType;

    //=========================================================================
    // WnckWindowActions
    //=========================================================================
    pub fn wnck_window_actions_get_type() -> GType;

    //=========================================================================
    // WnckWindowMoveResizeMask
    //=========================================================================
    pub fn wnck_window_move_resize_mask_get_type() -> GType;

    //=========================================================================
    // WnckWindowState
    //=========================================================================
    pub fn wnck_window_state_get_type() -> GType;

    //=========================================================================
    // WnckActionMenu
    //=========================================================================
    pub fn wnck_action_menu_get_type() -> GType;
    pub fn wnck_action_menu_new(window: *mut WnckWindow) -> *mut gtk::GtkWidget;

    //=========================================================================
    // WnckApplication
    //=========================================================================
    pub fn wnck_application_get_type() -> GType;
    pub fn wnck_application_get(xwindow: c_ulong) -> *mut WnckApplication;
    pub fn wnck_application_get_icon(app: *mut WnckApplication) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn wnck_application_get_icon_is_fallback(app: *mut WnckApplication) -> gboolean;
    pub fn wnck_application_get_icon_name(app: *mut WnckApplication) -> *const c_char;
    pub fn wnck_application_get_mini_icon(app: *mut WnckApplication) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn wnck_application_get_n_windows(app: *mut WnckApplication) -> c_int;
    pub fn wnck_application_get_name(app: *mut WnckApplication) -> *const c_char;
    pub fn wnck_application_get_pid(app: *mut WnckApplication) -> c_int;
    pub fn wnck_application_get_startup_id(app: *mut WnckApplication) -> *const c_char;
    pub fn wnck_application_get_windows(app: *mut WnckApplication) -> *mut glib::GList;
    pub fn wnck_application_get_xid(app: *mut WnckApplication) -> c_ulong;

    //=========================================================================
    // WnckClassGroup
    //=========================================================================
    pub fn wnck_class_group_get_type() -> GType;
    pub fn wnck_class_group_get(id: *const c_char) -> *mut WnckClassGroup;
    pub fn wnck_class_group_get_icon(class_group: *mut WnckClassGroup) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn wnck_class_group_get_id(class_group: *mut WnckClassGroup) -> *const c_char;
    pub fn wnck_class_group_get_mini_icon(class_group: *mut WnckClassGroup) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn wnck_class_group_get_name(class_group: *mut WnckClassGroup) -> *const c_char;
    pub fn wnck_class_group_get_res_class(class_group: *mut WnckClassGroup) -> *const c_char;
    pub fn wnck_class_group_get_windows(class_group: *mut WnckClassGroup) -> *mut glib::GList;

    //=========================================================================
    // WnckPager
    //=========================================================================
    pub fn wnck_pager_get_type() -> GType;
    pub fn wnck_pager_new() -> *mut gtk::GtkWidget;
    #[cfg(any(feature = "v3_24", feature = "dox"))]
    pub fn wnck_pager_get_wrap_on_scroll(pager: *mut WnckPager) -> gboolean;
    pub fn wnck_pager_set_display_mode(pager: *mut WnckPager, mode: WnckPagerDisplayMode);
    pub fn wnck_pager_set_n_rows(pager: *mut WnckPager, n_rows: c_int) -> gboolean;
    pub fn wnck_pager_set_orientation(pager: *mut WnckPager, orientation: gtk::GtkOrientation) -> gboolean;
    pub fn wnck_pager_set_shadow_type(pager: *mut WnckPager, shadow_type: gtk::GtkShadowType);
    pub fn wnck_pager_set_show_all(pager: *mut WnckPager, show_all_workspaces: gboolean);
    #[cfg(any(feature = "v3_24", feature = "dox"))]
    pub fn wnck_pager_set_wrap_on_scroll(pager: *mut WnckPager, wrap_on_scroll: gboolean);

    //=========================================================================
    // WnckScreen
    //=========================================================================
    pub fn wnck_screen_get_type() -> GType;
    pub fn wnck_screen_free_workspace_layout(layout: *mut WnckWorkspaceLayout);
    pub fn wnck_screen_get(index: c_int) -> *mut WnckScreen;
    pub fn wnck_screen_get_default() -> *mut WnckScreen;
    pub fn wnck_screen_get_for_root(root_window_id: c_ulong) -> *mut WnckScreen;
    pub fn wnck_screen_calc_workspace_layout(screen: *mut WnckScreen, num_workspaces: c_int, space_index: c_int, layout: *mut WnckWorkspaceLayout);
    pub fn wnck_screen_change_workspace_count(screen: *mut WnckScreen, count: c_int);
    pub fn wnck_screen_force_update(screen: *mut WnckScreen);
    pub fn wnck_screen_get_active_window(screen: *mut WnckScreen) -> *mut WnckWindow;
    pub fn wnck_screen_get_active_workspace(screen: *mut WnckScreen) -> *mut WnckWorkspace;
    pub fn wnck_screen_get_background_pixmap(screen: *mut WnckScreen) -> c_ulong;
    pub fn wnck_screen_get_height(screen: *mut WnckScreen) -> c_int;
    pub fn wnck_screen_get_number(screen: *mut WnckScreen) -> c_int;
    pub fn wnck_screen_get_previously_active_window(screen: *mut WnckScreen) -> *mut WnckWindow;
    pub fn wnck_screen_get_showing_desktop(screen: *mut WnckScreen) -> gboolean;
    pub fn wnck_screen_get_width(screen: *mut WnckScreen) -> c_int;
    pub fn wnck_screen_get_window_manager_name(screen: *mut WnckScreen) -> *const c_char;
    pub fn wnck_screen_get_windows(screen: *mut WnckScreen) -> *mut glib::GList;
    pub fn wnck_screen_get_windows_stacked(screen: *mut WnckScreen) -> *mut glib::GList;
    pub fn wnck_screen_get_workspace(screen: *mut WnckScreen, workspace: c_int) -> *mut WnckWorkspace;
    pub fn wnck_screen_get_workspace_count(screen: *mut WnckScreen) -> c_int;
    pub fn wnck_screen_get_workspaces(screen: *mut WnckScreen) -> *mut glib::GList;
    pub fn wnck_screen_move_viewport(screen: *mut WnckScreen, x: c_int, y: c_int);
    pub fn wnck_screen_net_wm_supports(screen: *mut WnckScreen, atom: *const c_char) -> gboolean;
    pub fn wnck_screen_release_workspace_layout(screen: *mut WnckScreen, current_token: c_int);
    pub fn wnck_screen_toggle_showing_desktop(screen: *mut WnckScreen, show: gboolean);
    pub fn wnck_screen_try_set_workspace_layout(screen: *mut WnckScreen, current_token: c_int, rows: c_int, columns: c_int) -> c_int;

    //=========================================================================
    // WnckSelector
    //=========================================================================
    pub fn wnck_selector_get_type() -> GType;
    pub fn wnck_selector_new() -> *mut gtk_sys::GtkWidget;

    //=========================================================================
    // WnckTasklist
    //=========================================================================
    pub fn wnck_tasklist_get_type() -> GType;
    pub fn wnck_tasklist_new() -> *mut gtk_sys::GtkWidget;
    #[cfg(any(feature = "v3_24", feature = "dox"))]
    pub fn wnck_tasklist_get_scroll_enabled(tasklist: *mut WnckTasklist) -> gboolean;
    pub fn wnck_tasklist_get_size_hint_list(tasklist: *mut WnckTasklist, n_elements: *mut c_int) -> *const c_int;
    pub fn wnck_tasklist_set_button_relief(tasklist: *mut WnckTasklist, relief: gtk_sys::GtkReliefStyle);
    pub fn wnck_tasklist_set_grouping(tasklist: *mut WnckTasklist, grouping: WnckTasklistGroupingType);
    pub fn wnck_tasklist_set_grouping_limit(tasklist: *mut WnckTasklist, limit: c_int);
    pub fn wnck_tasklist_set_icon_loader(tasklist: *mut WnckTasklist, load_icon_func: WnckLoadIconFunction, data: *mut c_void, free_data_func: glib_sys::GDestroyNotify);
    pub fn wnck_tasklist_set_include_all_workspaces(tasklist: *mut WnckTasklist, include_all_workspaces: gboolean);
    pub fn wnck_tasklist_set_middle_click_close(tasklist: *mut WnckTasklist, middle_click_close: gboolean);
    pub fn wnck_tasklist_set_orientation(tasklist: *mut WnckTasklist, orient: gtk_sys::GtkOrientation);
    #[cfg(any(feature = "v3_24", feature = "dox"))]
    pub fn wnck_tasklist_set_scroll_enabled(tasklist: *mut WnckTasklist, scroll_enabled: gboolean);
    pub fn wnck_tasklist_set_switch_workspace_on_unminimize(tasklist: *mut WnckTasklist, switch_workspace_on_unminimize: gboolean);

    //=========================================================================
    // WnckWindow
    //=========================================================================
    pub fn wnck_window_get_type() -> GType;
    pub fn wnck_window_get(xwindow: c_ulong) -> *mut WnckWindow;
    pub fn wnck_window_activate(window: *mut WnckWindow, timestamp: u32);
    pub fn wnck_window_activate_transient(window: *mut WnckWindow, timestamp: u32);
    pub fn wnck_window_close(window: *mut WnckWindow, timestamp: u32);
    pub fn wnck_window_get_actions(window: *mut WnckWindow) -> WnckWindowActions;
    pub fn wnck_window_get_application(window: *mut WnckWindow) -> *mut WnckApplication;
    pub fn wnck_window_get_class_group(window: *mut WnckWindow) -> *mut WnckClassGroup;
    pub fn wnck_window_get_class_group_name(window: *mut WnckWindow) -> *const c_char;
    pub fn wnck_window_get_class_instance_name(window: *mut WnckWindow) -> *const c_char;
    pub fn wnck_window_get_client_window_geometry(window: *mut WnckWindow, xp: *mut c_int, yp: *mut c_int, widthp: *mut c_int, heightp: *mut c_int);
    pub fn wnck_window_get_geometry(window: *mut WnckWindow, xp: *mut c_int, yp: *mut c_int, widthp: *mut c_int, heightp: *mut c_int);
    pub fn wnck_window_get_group_leader(window: *mut WnckWindow) -> c_ulong;
    pub fn wnck_window_get_icon(window: *mut WnckWindow) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn wnck_window_get_icon_is_fallback(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_get_icon_name(window: *mut WnckWindow) -> *const c_char;
    pub fn wnck_window_get_mini_icon(window: *mut WnckWindow) -> *mut gdk_pixbuf::GdkPixbuf;
    pub fn wnck_window_get_name(window: *mut WnckWindow) -> *const c_char;
    pub fn wnck_window_get_pid(window: *mut WnckWindow) -> c_int;
    pub fn wnck_window_get_role(window: *mut WnckWindow) -> *const c_char;
    pub fn wnck_window_get_screen(window: *mut WnckWindow) -> *mut WnckScreen;
    pub fn wnck_window_get_session_id(window: *mut WnckWindow) -> *const c_char;
    pub fn wnck_window_get_session_id_utf8(window: *mut WnckWindow) -> *const c_char;
    pub fn wnck_window_get_sort_order(window: *mut WnckWindow) -> c_int;
    pub fn wnck_window_get_state(window: *mut WnckWindow) -> WnckWindowState;
    pub fn wnck_window_get_transient(window: *mut WnckWindow) -> *mut WnckWindow;
    pub fn wnck_window_get_window_type(window: *mut WnckWindow) -> WnckWindowType;
    pub fn wnck_window_get_workspace(window: *mut WnckWindow) -> *mut WnckWorkspace;
    pub fn wnck_window_get_xid(window: *mut WnckWindow) -> c_ulong;
    pub fn wnck_window_has_icon_name(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_has_name(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_is_above(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_is_active(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_is_below(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_is_fullscreen(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_is_in_viewport(window: *mut WnckWindow, workspace: *mut WnckWorkspace) -> gboolean;
    pub fn wnck_window_is_maximized(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_is_maximized_horizontally(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_is_maximized_vertically(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_is_minimized(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_is_most_recently_activated(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_is_on_workspace(window: *mut WnckWindow, workspace: *mut WnckWorkspace) -> gboolean;
    pub fn wnck_window_is_pinned(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_is_shaded(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_is_skip_pager(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_is_skip_tasklist(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_is_sticky(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_is_visible_on_workspace(window: *mut WnckWindow, workspace: *mut WnckWorkspace) -> gboolean;
    pub fn wnck_window_keyboard_move(window: *mut WnckWindow);
    pub fn wnck_window_keyboard_size(window: *mut WnckWindow);
    pub fn wnck_window_make_above(window: *mut WnckWindow);
    pub fn wnck_window_make_below(window: *mut WnckWindow);
    pub fn wnck_window_maximize(window: *mut WnckWindow);
    pub fn wnck_window_maximize_horizontally(window: *mut WnckWindow);
    pub fn wnck_window_maximize_vertically(window: *mut WnckWindow);
    pub fn wnck_window_minimize(window: *mut WnckWindow);
    pub fn wnck_window_move_to_workspace(window: *mut WnckWindow, space: *mut WnckWorkspace);
    pub fn wnck_window_needs_attention(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_or_transient_needs_attention(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_pin(window: *mut WnckWindow);
    pub fn wnck_window_set_fullscreen(window: *mut WnckWindow, fullscreen: gboolean);
    pub fn wnck_window_set_geometry(window: *mut WnckWindow, gravity: WnckWindowGravity, geometry_mask: WnckWindowMoveResizeMask, x: c_int, y: c_int, width: c_int, height: c_int);
    pub fn wnck_window_set_icon_geometry(window: *mut WnckWindow, x: c_int, y: c_int, width: c_int, height: c_int);
    pub fn wnck_window_set_skip_pager(window: *mut WnckWindow, skip: gboolean);
    pub fn wnck_window_set_skip_tasklist(window: *mut WnckWindow, skip: gboolean);
    pub fn wnck_window_set_sort_order(window: *mut WnckWindow, order: c_int);
    pub fn wnck_window_set_window_type(window: *mut WnckWindow, wintype: WnckWindowType);
    pub fn wnck_window_shade(window: *mut WnckWindow);
    pub fn wnck_window_stick(window: *mut WnckWindow);
    pub fn wnck_window_transient_is_most_recently_activated(window: *mut WnckWindow) -> gboolean;
    pub fn wnck_window_unmake_above(window: *mut WnckWindow);
    pub fn wnck_window_unmake_below(window: *mut WnckWindow);
    pub fn wnck_window_unmaximize(window: *mut WnckWindow);
    pub fn wnck_window_unmaximize_horizontally(window: *mut WnckWindow);
    pub fn wnck_window_unmaximize_vertically(window: *mut WnckWindow);
    pub fn wnck_window_unminimize(window: *mut WnckWindow, timestamp: u32);
    pub fn wnck_window_unpin(window: *mut WnckWindow);
    pub fn wnck_window_unshade(window: *mut WnckWindow);
    pub fn wnck_window_unstick(window: *mut WnckWindow);

    //=========================================================================
    // WnckWorkspace
    //=========================================================================
    pub fn wnck_workspace_get_type() -> GType;
    pub fn wnck_workspace_activate(space: *mut WnckWorkspace, timestamp: u32);
    pub fn wnck_workspace_change_name(space: *mut WnckWorkspace, name: *const c_char);
    pub fn wnck_workspace_get_height(space: *mut WnckWorkspace) -> c_int;
    pub fn wnck_workspace_get_layout_column(space: *mut WnckWorkspace) -> c_int;
    pub fn wnck_workspace_get_layout_row(space: *mut WnckWorkspace) -> c_int;
    pub fn wnck_workspace_get_name(space: *mut WnckWorkspace) -> *const c_char;
    pub fn wnck_workspace_get_neighbor(space: *mut WnckWorkspace, direction: WnckMotionDirection) -> *mut WnckWorkspace;
    pub fn wnck_workspace_get_number(space: *mut WnckWorkspace) -> c_int;
    pub fn wnck_workspace_get_screen(space: *mut WnckWorkspace) -> *mut WnckScreen;
    pub fn wnck_workspace_get_viewport_x(space: *mut WnckWorkspace) -> c_int;
    pub fn wnck_workspace_get_viewport_y(space: *mut WnckWorkspace) -> c_int;
    pub fn wnck_workspace_get_width(space: *mut WnckWorkspace) -> c_int;
    pub fn wnck_workspace_is_virtual(space: *mut WnckWorkspace) -> gboolean;

    //=========================================================================
    // Other functions
    //=========================================================================
    pub fn wnck_pid_read_resource_usage(gdk_display: *mut gdk_sys::GdkDisplay, pid: c_ulong, usage: *mut WnckResourceUsage);
    pub fn wnck_set_client_type(ewmh_sourceindication_client_type: WnckClientType);
    pub fn wnck_set_default_icon_size(size: size_t);
    pub fn wnck_set_default_mini_icon_size(size: size_t);
    pub fn wnck_shutdown();
    pub fn wnck_xid_read_resource_usage(gdk_display: *mut gdk_sys::GdkDisplay, xid: c_ulong, usage: *mut WnckResourceUsage);

}