/* wm.c generated by valac 0.32.1, the Vala compiler
 * generated from wm.vala, do not modify */

/*
 * This file is part of budgie-desktop
 *
 * Copyright (C) 2015-2016 Ikey Doherty <ikey@solus-project.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 */

#include <glib.h>
#include <glib-object.h>
#include <stdlib.h>
#include <string.h>
#include <clutter/clutter.h>
#include <meta/boxes.h>
#include <gio/gio.h>
#include <float.h>
#include <math.h>
#include <meta/meta-plugin.h>
#include <meta/meta-background-group.h>
#include <gtk/gtk.h>
#include <meta/meta-window-actor.h>
#include <meta/window.h>
#include <meta/workspace.h>
#include <glib/gstdio.h>
#include <meta/meta-background.h>
#include <meta/display.h>
#include <meta/screen.h>
#include <meta/keybindings.h>
#include <meta/main.h>
#include <cogl/cogl.h>
#include <meta/compositor-mutter.h>
#include <meta/prefs.h>
#include <meta/common.h>
#include <gdk/gdk.h>
#include <gio/gdesktopappinfo.h>
#include <glib/gi18n-lib.h>
#include <budgie-config.h>
#include <gobject/gvaluecollector.h>


#define BUDGIE_TYPE_PANEL_ACTION (budgie_panel_action_get_type ())

#define BUDGIE_TYPE_ANIMATION_STATE (budgie_animation_state_get_type ())

#define BUDGIE_TYPE_SCREEN_TILE_PREVIEW (budgie_screen_tile_preview_get_type ())
#define BUDGIE_SCREEN_TILE_PREVIEW(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUDGIE_TYPE_SCREEN_TILE_PREVIEW, BudgieScreenTilePreview))
#define BUDGIE_SCREEN_TILE_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BUDGIE_TYPE_SCREEN_TILE_PREVIEW, BudgieScreenTilePreviewClass))
#define BUDGIE_IS_SCREEN_TILE_PREVIEW(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUDGIE_TYPE_SCREEN_TILE_PREVIEW))
#define BUDGIE_IS_SCREEN_TILE_PREVIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BUDGIE_TYPE_SCREEN_TILE_PREVIEW))
#define BUDGIE_SCREEN_TILE_PREVIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BUDGIE_TYPE_SCREEN_TILE_PREVIEW, BudgieScreenTilePreviewClass))

typedef struct _BudgieScreenTilePreview BudgieScreenTilePreview;
typedef struct _BudgieScreenTilePreviewClass BudgieScreenTilePreviewClass;
typedef struct _BudgieScreenTilePreviewPrivate BudgieScreenTilePreviewPrivate;

#define BUDGIE_TYPE_RAVEN_REMOTE (budgie_raven_remote_get_type ())
#define BUDGIE_RAVEN_REMOTE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUDGIE_TYPE_RAVEN_REMOTE, BudgieRavenRemote))
#define BUDGIE_IS_RAVEN_REMOTE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUDGIE_TYPE_RAVEN_REMOTE))
#define BUDGIE_RAVEN_REMOTE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), BUDGIE_TYPE_RAVEN_REMOTE, BudgieRavenRemoteIface))

typedef struct _BudgieRavenRemote BudgieRavenRemote;
typedef struct _BudgieRavenRemoteIface BudgieRavenRemoteIface;

#define BUDGIE_TYPE_RAVEN_REMOTE_PROXY (budgie_raven_remote_proxy_get_type ())
typedef GDBusProxy BudgieRavenRemoteProxy;
typedef GDBusProxyClass BudgieRavenRemoteProxyClass;

#define BUDGIE_TYPE_PANEL_REMOTE (budgie_panel_remote_get_type ())
#define BUDGIE_PANEL_REMOTE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUDGIE_TYPE_PANEL_REMOTE, BudgiePanelRemote))
#define BUDGIE_IS_PANEL_REMOTE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUDGIE_TYPE_PANEL_REMOTE))
#define BUDGIE_PANEL_REMOTE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), BUDGIE_TYPE_PANEL_REMOTE, BudgiePanelRemoteIface))

typedef struct _BudgiePanelRemote BudgiePanelRemote;
typedef struct _BudgiePanelRemoteIface BudgiePanelRemoteIface;

#define BUDGIE_TYPE_PANEL_REMOTE_PROXY (budgie_panel_remote_proxy_get_type ())
typedef GDBusProxy BudgiePanelRemoteProxy;
typedef GDBusProxyClass BudgiePanelRemoteProxyClass;

#define BUDGIE_TYPE_LOGIN_DREMOTE (budgie_login_dremote_get_type ())
#define BUDGIE_LOGIN_DREMOTE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUDGIE_TYPE_LOGIN_DREMOTE, BudgieLoginDRemote))
#define BUDGIE_IS_LOGIN_DREMOTE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUDGIE_TYPE_LOGIN_DREMOTE))
#define BUDGIE_LOGIN_DREMOTE_GET_INTERFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), BUDGIE_TYPE_LOGIN_DREMOTE, BudgieLoginDRemoteIface))

typedef struct _BudgieLoginDRemote BudgieLoginDRemote;
typedef struct _BudgieLoginDRemoteIface BudgieLoginDRemoteIface;

#define BUDGIE_TYPE_LOGIN_DREMOTE_PROXY (budgie_login_dremote_proxy_get_type ())
typedef GDBusProxy BudgieLoginDRemoteProxy;
typedef GDBusProxyClass BudgieLoginDRemoteProxyClass;

#define BUDGIE_TYPE_MINIMIZE_DATA (budgie_minimize_data_get_type ())
#define BUDGIE_MINIMIZE_DATA(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUDGIE_TYPE_MINIMIZE_DATA, BudgieMinimizeData))
#define BUDGIE_MINIMIZE_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BUDGIE_TYPE_MINIMIZE_DATA, BudgieMinimizeDataClass))
#define BUDGIE_IS_MINIMIZE_DATA(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUDGIE_TYPE_MINIMIZE_DATA))
#define BUDGIE_IS_MINIMIZE_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BUDGIE_TYPE_MINIMIZE_DATA))
#define BUDGIE_MINIMIZE_DATA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BUDGIE_TYPE_MINIMIZE_DATA, BudgieMinimizeDataClass))

typedef struct _BudgieMinimizeData BudgieMinimizeData;
typedef struct _BudgieMinimizeDataClass BudgieMinimizeDataClass;
typedef struct _BudgieMinimizeDataPrivate BudgieMinimizeDataPrivate;
typedef struct _BudgieParamSpecMinimizeData BudgieParamSpecMinimizeData;

#define BUDGIE_TYPE_BUDGIE_WM (budgie_budgie_wm_get_type ())
#define BUDGIE_BUDGIE_WM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUDGIE_TYPE_BUDGIE_WM, BudgieBudgieWM))
#define BUDGIE_BUDGIE_WM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BUDGIE_TYPE_BUDGIE_WM, BudgieBudgieWMClass))
#define BUDGIE_IS_BUDGIE_WM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUDGIE_TYPE_BUDGIE_WM))
#define BUDGIE_IS_BUDGIE_WM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BUDGIE_TYPE_BUDGIE_WM))
#define BUDGIE_BUDGIE_WM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BUDGIE_TYPE_BUDGIE_WM, BudgieBudgieWMClass))

typedef struct _BudgieBudgieWM BudgieBudgieWM;
typedef struct _BudgieBudgieWMClass BudgieBudgieWMClass;
typedef struct _BudgieBudgieWMPrivate BudgieBudgieWMPrivate;

#define BUDGIE_TYPE_KEYBOARD_MANAGER (budgie_keyboard_manager_get_type ())
#define BUDGIE_KEYBOARD_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUDGIE_TYPE_KEYBOARD_MANAGER, BudgieKeyboardManager))
#define BUDGIE_KEYBOARD_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BUDGIE_TYPE_KEYBOARD_MANAGER, BudgieKeyboardManagerClass))
#define BUDGIE_IS_KEYBOARD_MANAGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUDGIE_TYPE_KEYBOARD_MANAGER))
#define BUDGIE_IS_KEYBOARD_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BUDGIE_TYPE_KEYBOARD_MANAGER))
#define BUDGIE_KEYBOARD_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BUDGIE_TYPE_KEYBOARD_MANAGER, BudgieKeyboardManagerClass))

typedef struct _BudgieKeyboardManager BudgieKeyboardManager;
typedef struct _BudgieKeyboardManagerClass BudgieKeyboardManagerClass;

#define BUDGIE_TYPE_SHELL_SHIM (budgie_shell_shim_get_type ())
#define BUDGIE_SHELL_SHIM(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUDGIE_TYPE_SHELL_SHIM, BudgieShellShim))
#define BUDGIE_SHELL_SHIM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BUDGIE_TYPE_SHELL_SHIM, BudgieShellShimClass))
#define BUDGIE_IS_SHELL_SHIM(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUDGIE_TYPE_SHELL_SHIM))
#define BUDGIE_IS_SHELL_SHIM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BUDGIE_TYPE_SHELL_SHIM))
#define BUDGIE_SHELL_SHIM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BUDGIE_TYPE_SHELL_SHIM, BudgieShellShimClass))

typedef struct _BudgieShellShim BudgieShellShim;
typedef struct _BudgieShellShimClass BudgieShellShimClass;

#define BUDGIE_TYPE_BUDGIE_WMDBUS (budgie_budgie_wmdbus_get_type ())
#define BUDGIE_BUDGIE_WMDBUS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUDGIE_TYPE_BUDGIE_WMDBUS, BudgieBudgieWMDBUS))
#define BUDGIE_BUDGIE_WMDBUS_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BUDGIE_TYPE_BUDGIE_WMDBUS, BudgieBudgieWMDBUSClass))
#define BUDGIE_IS_BUDGIE_WMDBUS(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUDGIE_TYPE_BUDGIE_WMDBUS))
#define BUDGIE_IS_BUDGIE_WMDBUS_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BUDGIE_TYPE_BUDGIE_WMDBUS))
#define BUDGIE_BUDGIE_WMDBUS_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BUDGIE_TYPE_BUDGIE_WMDBUS, BudgieBudgieWMDBUSClass))

typedef struct _BudgieBudgieWMDBUS BudgieBudgieWMDBUS;
typedef struct _BudgieBudgieWMDBUSClass BudgieBudgieWMDBUSClass;

#define BUDGIE_TYPE_WINDOW_MENU (budgie_window_menu_get_type ())
#define BUDGIE_WINDOW_MENU(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUDGIE_TYPE_WINDOW_MENU, BudgieWindowMenu))
#define BUDGIE_WINDOW_MENU_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BUDGIE_TYPE_WINDOW_MENU, BudgieWindowMenuClass))
#define BUDGIE_IS_WINDOW_MENU(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUDGIE_TYPE_WINDOW_MENU))
#define BUDGIE_IS_WINDOW_MENU_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BUDGIE_TYPE_WINDOW_MENU))
#define BUDGIE_WINDOW_MENU_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BUDGIE_TYPE_WINDOW_MENU, BudgieWindowMenuClass))

typedef struct _BudgieWindowMenu BudgieWindowMenu;
typedef struct _BudgieWindowMenuClass BudgieWindowMenuClass;
#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
#define _g_hash_table_unref0(var) ((var == NULL) ? NULL : (var = (g_hash_table_unref (var), NULL)))
#define _g_free0(var) ((var == NULL) ? NULL : (var = (g_free (var), NULL)))
#define _g_list_free0(var) ((var == NULL) ? NULL : (var = (g_list_free (var), NULL)))
#define _g_error_free0(var) ((var == NULL) ? NULL : (var = (g_error_free (var), NULL)))
typedef struct _Block4Data Block4Data;

#define BUDGIE_TYPE_BUDGIE_BACKGROUND (budgie_budgie_background_get_type ())
#define BUDGIE_BUDGIE_BACKGROUND(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), BUDGIE_TYPE_BUDGIE_BACKGROUND, BudgieBudgieBackground))
#define BUDGIE_BUDGIE_BACKGROUND_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), BUDGIE_TYPE_BUDGIE_BACKGROUND, BudgieBudgieBackgroundClass))
#define BUDGIE_IS_BUDGIE_BACKGROUND(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), BUDGIE_TYPE_BUDGIE_BACKGROUND))
#define BUDGIE_IS_BUDGIE_BACKGROUND_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), BUDGIE_TYPE_BUDGIE_BACKGROUND))
#define BUDGIE_BUDGIE_BACKGROUND_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), BUDGIE_TYPE_BUDGIE_BACKGROUND, BudgieBudgieBackgroundClass))

typedef struct _BudgieBudgieBackground BudgieBudgieBackground;
typedef struct _BudgieBudgieBackgroundClass BudgieBudgieBackgroundClass;
#define _budgie_minimize_data_unref0(var) ((var == NULL) ? NULL : (var = (budgie_minimize_data_unref (var), NULL)))
#define __vala_ClutterPoint_free0(var) ((var == NULL) ? NULL : (var = (_vala_ClutterPoint_free (var), NULL)))
typedef struct _BudgieBudgieWMDBUSPrivate BudgieBudgieWMDBUSPrivate;

typedef enum  {
	BUDGIE_PANEL_ACTION_NONE = 1 << 0,
	BUDGIE_PANEL_ACTION_MENU = 1 << 1,
	BUDGIE_PANEL_ACTION_MAX = 1 << 2
} BudgiePanelAction;

typedef enum  {
	BUDGIE_ANIMATION_STATE_MAP = 1 << 0,
	BUDGIE_ANIMATION_STATE_MINIMIZE = 1 << 1,
	BUDGIE_ANIMATION_STATE_UNMINIMIZE = 1 << 2,
	BUDGIE_ANIMATION_STATE_DESTROY = 1 << 3
} BudgieAnimationState;

struct _BudgieScreenTilePreview {
	ClutterActor parent_instance;
	BudgieScreenTilePreviewPrivate * priv;
	MetaRectangle tile_rect;
};

struct _BudgieScreenTilePreviewClass {
	ClutterActorClass parent_class;
};

struct _BudgieRavenRemoteIface {
	GTypeInterface parent_iface;
	gboolean (*GetExpanded) (BudgieRavenRemote* self, GError** error);
	void (*Toggle) (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*Toggle_finish) (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error);
	void (*ToggleNotificationsView) (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*ToggleNotificationsView_finish) (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error);
	void (*ToggleAppletView) (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*ToggleAppletView_finish) (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error);
	void (*Dismiss) (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*Dismiss_finish) (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error);
};

struct _BudgiePanelRemoteIface {
	GTypeInterface parent_iface;
	void (*ActivateAction) (BudgiePanelRemote* self, gint flags, GAsyncReadyCallback _callback_, gpointer _user_data_);
	void (*ActivateAction_finish) (BudgiePanelRemote* self, GAsyncResult* _res_, GError** error);
};

struct _BudgieLoginDRemoteIface {
	GTypeInterface parent_iface;
};

struct _BudgieMinimizeData {
	GTypeInstance parent_instance;
	volatile int ref_count;
	BudgieMinimizeDataPrivate * priv;
	gdouble scale_x;
	gdouble scale_y;
	gdouble place_x;
	gdouble place_y;
	gdouble old_x;
	gdouble old_y;
};

struct _BudgieMinimizeDataClass {
	GTypeClass parent_class;
	void (*finalize) (BudgieMinimizeData *self);
};

struct _BudgieParamSpecMinimizeData {
	GParamSpec parent_instance;
};

struct _BudgieBudgieWM {
	MetaPlugin parent_instance;
	BudgieBudgieWMPrivate * priv;
};

struct _BudgieBudgieWMClass {
	MetaPluginClass parent_class;
};

struct _BudgieBudgieWMPrivate {
	gboolean _use_animations;
	MetaBackgroundGroup* background_group;
	GtkMenu* menu;
	BudgieKeyboardManager* keyboard;
	GSettings* settings;
	BudgieRavenRemote* raven_proxy;
	BudgieShellShim* shim;
	BudgieBudgieWMDBUS* focus_interface;
	BudgiePanelRemote* panel_proxy;
	BudgieWindowMenu* winmenu;
	BudgieLoginDRemote* logind_proxy;
	gboolean force_unredirect;
	GHashTable* state_map;
	MetaWindow* focused_window;
	BudgieScreenTilePreview* tile_preview;
	guint8* default_tile_opacity;
	MetaWorkspace* cur_workspace;
	GList* cur_tabs;
	gint cur_index;
	guint32 last_time;
	ClutterActor* out_group;
	ClutterActor* in_group;
};

typedef const gchar* (*BudgieBudgieWMGlQueryFunc) (guint id, void* user_data);
struct _Block4Data {
	int _ref_count_;
	BudgieBudgieWM* self;
	MetaWindow* window;
};

struct _BudgieBudgieWMDBUS {
	GObject parent_instance;
	BudgieBudgieWMDBUSPrivate * priv;
};

struct _BudgieBudgieWMDBUSClass {
	GObjectClass parent_class;
};

struct _BudgieBudgieWMDBUSPrivate {
	BudgieBudgieWM* wm;
};


static gpointer budgie_screen_tile_preview_parent_class = NULL;
static gpointer budgie_minimize_data_parent_class = NULL;
static gpointer budgie_budgie_wm_parent_class = NULL;
static MetaPluginInfo budgie_budgie_wm_info;
static MetaPluginInfo budgie_budgie_wm_info = {0};
extern gchar** budgie_budgie_wm_old_args;
extern gint budgie_budgie_wm_old_args_length1;
gchar** budgie_budgie_wm_old_args = NULL;
gint budgie_budgie_wm_old_args_length1 = 0;
extern gboolean budgie_budgie_wm_wayland;
gboolean budgie_budgie_wm_wayland = FALSE;
extern gboolean budgie_budgie_wm_gtk_available;
gboolean budgie_budgie_wm_gtk_available = TRUE;
static ClutterPoint* budgie_budgie_wm_PV_CENTER;
static ClutterPoint* budgie_budgie_wm_PV_CENTER = NULL;
static ClutterPoint* budgie_budgie_wm_PV_NORM;
static ClutterPoint* budgie_budgie_wm_PV_NORM = NULL;
static gpointer budgie_budgie_wmdbus_parent_class = NULL;

#define BUDGIE_MUTTER_EDGE_TILING "edge-tiling"
#define BUDGIE_MUTTER_MODAL_ATTACH "attach-modal-dialogs"
#define BUDGIE_MUTTER_BUTTON_LAYOUT "button-layout"
#define BUDGIE_WM_FORCE_UNREDIRECT "force-unredirect"
#define BUDGIE_WM_SCHEMA "com.solus-project.budgie-wm"
#define BUDGIE_CLUTTER_EVENT_PROPAGATE FALSE
#define BUDGIE_CLUTTER_EVENT_STOP TRUE
#define BUDGIE_RAVEN_DBUS_NAME "com.solus_project.budgie.Raven"
#define BUDGIE_RAVEN_DBUS_OBJECT_PATH "/com/solus_project/budgie/Raven"
#define BUDGIE_PANEL_DBUS_NAME "com.solus_project.budgie.Panel"
#define BUDGIE_PANEL_DBUS_OBJECT_PATH "/com/solus_project/budgie/Panel"
#define BUDGIE_LOGIND_DBUS_NAME "org.freedesktop.login1"
#define BUDGIE_LOGIND_DBUS_OBJECT_PATH "/org/freedesktop/login1"
GType budgie_panel_action_get_type (void) G_GNUC_CONST;
GType budgie_animation_state_get_type (void) G_GNUC_CONST;
GType budgie_screen_tile_preview_get_type (void) G_GNUC_CONST;
enum  {
	BUDGIE_SCREEN_TILE_PREVIEW_DUMMY_PROPERTY
};
BudgieScreenTilePreview* budgie_screen_tile_preview_new (void);
BudgieScreenTilePreview* budgie_screen_tile_preview_construct (GType object_type);
static GObject * budgie_screen_tile_preview_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
static void budgie_screen_tile_preview_finalize (GObject* obj);
GType budgie_raven_remote_proxy_get_type (void) G_GNUC_CONST;
guint budgie_raven_remote_register_object (void* object, GDBusConnection* connection, const gchar* path, GError** error);
GType budgie_raven_remote_get_type (void) G_GNUC_CONST;
gboolean budgie_raven_remote_GetExpanded (BudgieRavenRemote* self, GError** error);
void budgie_raven_remote_Toggle (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
void budgie_raven_remote_Toggle_finish (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error);
void budgie_raven_remote_ToggleNotificationsView (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
void budgie_raven_remote_ToggleNotificationsView_finish (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error);
void budgie_raven_remote_ToggleAppletView (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
void budgie_raven_remote_ToggleAppletView_finish (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error);
void budgie_raven_remote_Dismiss (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
void budgie_raven_remote_Dismiss_finish (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error);
static void budgie_raven_remote_proxy_g_signal (GDBusProxy* proxy, const gchar* sender_name, const gchar* signal_name, GVariant* parameters);
static gboolean budgie_raven_remote_proxy_GetExpanded (BudgieRavenRemote* self, GError** error);
static void _vala_g_async_ready_callback (GObject *source_object, GAsyncResult *res, void *user_data);
static void budgie_raven_remote_proxy_Toggle_async (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
static void budgie_raven_remote_proxy_Toggle_finish (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error);
static void budgie_raven_remote_proxy_ToggleNotificationsView_async (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
static void budgie_raven_remote_proxy_ToggleNotificationsView_finish (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error);
static void budgie_raven_remote_proxy_ToggleAppletView_async (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
static void budgie_raven_remote_proxy_ToggleAppletView_finish (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error);
static void budgie_raven_remote_proxy_Dismiss_async (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_);
static void budgie_raven_remote_proxy_Dismiss_finish (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error);
static void budgie_raven_remote_proxy_budgie_raven_remote_interface_init (BudgieRavenRemoteIface* iface);
static void _dbus_budgie_raven_remote_GetExpanded (BudgieRavenRemote* self, GVariant* _parameters_, GDBusMethodInvocation* invocation);
static void _dbus_budgie_raven_remote_Toggle (BudgieRavenRemote* self, GVariant* _parameters_, GDBusMethodInvocation* invocation);
static void _dbus_budgie_raven_remote_Toggle_ready (GObject * source_object, GAsyncResult * _res_, gpointer _user_data_);
static void _dbus_budgie_raven_remote_ToggleNotificationsView (BudgieRavenRemote* self, GVariant* _parameters_, GDBusMethodInvocation* invocation);
static void _dbus_budgie_raven_remote_ToggleNotificationsView_ready (GObject * source_object, GAsyncResult * _res_, gpointer _user_data_);
static void _dbus_budgie_raven_remote_ToggleAppletView (BudgieRavenRemote* self, GVariant* _parameters_, GDBusMethodInvocation* invocation);
static void _dbus_budgie_raven_remote_ToggleAppletView_ready (GObject * source_object, GAsyncResult * _res_, gpointer _user_data_);
static void _dbus_budgie_raven_remote_Dismiss (BudgieRavenRemote* self, GVariant* _parameters_, GDBusMethodInvocation* invocation);
static void _dbus_budgie_raven_remote_Dismiss_ready (GObject * source_object, GAsyncResult * _res_, gpointer _user_data_);
static void budgie_raven_remote_dbus_interface_method_call (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* method_name, GVariant* parameters, GDBusMethodInvocation* invocation, gpointer user_data);
static GVariant* budgie_raven_remote_dbus_interface_get_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GError** error, gpointer user_data);
static gboolean budgie_raven_remote_dbus_interface_set_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GVariant* value, GError** error, gpointer user_data);
static void _budgie_raven_remote_unregister_object (gpointer user_data);
GType budgie_panel_remote_proxy_get_type (void) G_GNUC_CONST;
guint budgie_panel_remote_register_object (void* object, GDBusConnection* connection, const gchar* path, GError** error);
GType budgie_panel_remote_get_type (void) G_GNUC_CONST;
void budgie_panel_remote_ActivateAction (BudgiePanelRemote* self, gint flags, GAsyncReadyCallback _callback_, gpointer _user_data_);
void budgie_panel_remote_ActivateAction_finish (BudgiePanelRemote* self, GAsyncResult* _res_, GError** error);
static void budgie_panel_remote_proxy_g_signal (GDBusProxy* proxy, const gchar* sender_name, const gchar* signal_name, GVariant* parameters);
static void budgie_panel_remote_proxy_ActivateAction_async (BudgiePanelRemote* self, gint flags, GAsyncReadyCallback _callback_, gpointer _user_data_);
static void budgie_panel_remote_proxy_ActivateAction_finish (BudgiePanelRemote* self, GAsyncResult* _res_, GError** error);
static void budgie_panel_remote_proxy_budgie_panel_remote_interface_init (BudgiePanelRemoteIface* iface);
static void _dbus_budgie_panel_remote_ActivateAction (BudgiePanelRemote* self, GVariant* _parameters_, GDBusMethodInvocation* invocation);
static void _dbus_budgie_panel_remote_ActivateAction_ready (GObject * source_object, GAsyncResult * _res_, gpointer _user_data_);
static void budgie_panel_remote_dbus_interface_method_call (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* method_name, GVariant* parameters, GDBusMethodInvocation* invocation, gpointer user_data);
static GVariant* budgie_panel_remote_dbus_interface_get_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GError** error, gpointer user_data);
static gboolean budgie_panel_remote_dbus_interface_set_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GVariant* value, GError** error, gpointer user_data);
static void _budgie_panel_remote_unregister_object (gpointer user_data);
GType budgie_login_dremote_get_type (void) G_GNUC_CONST;
GType budgie_login_dremote_proxy_get_type (void) G_GNUC_CONST;
guint budgie_login_dremote_register_object (void* object, GDBusConnection* connection, const gchar* path, GError** error);
static void budgie_login_dremote_proxy_g_signal (GDBusProxy* proxy, const gchar* sender_name, const gchar* signal_name, GVariant* parameters);
static void _dbus_handle_budgie_login_dremote_prepare_for_sleep (BudgieLoginDRemote* self, GVariant* parameters);
static void budgie_login_dremote_proxy_budgie_login_dremote_interface_init (BudgieLoginDRemoteIface* iface);
static void budgie_login_dremote_dbus_interface_method_call (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* method_name, GVariant* parameters, GDBusMethodInvocation* invocation, gpointer user_data);
static GVariant* budgie_login_dremote_dbus_interface_get_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GError** error, gpointer user_data);
static gboolean budgie_login_dremote_dbus_interface_set_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GVariant* value, GError** error, gpointer user_data);
static void _dbus_budgie_login_dremote_prepare_for_sleep (GObject* _sender, gboolean suspending, gpointer* _data);
static void _budgie_login_dremote_unregister_object (gpointer user_data);
gpointer budgie_minimize_data_ref (gpointer instance);
void budgie_minimize_data_unref (gpointer instance);
GParamSpec* budgie_param_spec_minimize_data (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags);
void budgie_value_set_minimize_data (GValue* value, gpointer v_object);
void budgie_value_take_minimize_data (GValue* value, gpointer v_object);
gpointer budgie_value_get_minimize_data (const GValue* value);
GType budgie_minimize_data_get_type (void) G_GNUC_CONST;
enum  {
	BUDGIE_MINIMIZE_DATA_DUMMY_PROPERTY
};
BudgieMinimizeData* budgie_minimize_data_new (void);
BudgieMinimizeData* budgie_minimize_data_construct (GType object_type);
static void budgie_minimize_data_finalize (BudgieMinimizeData* obj);
GType budgie_budgie_wm_get_type (void) G_GNUC_CONST;
GType budgie_keyboard_manager_get_type (void) G_GNUC_CONST;
GType budgie_shell_shim_get_type (void) G_GNUC_CONST;
guint budgie_shell_shim_register_object (void* object, GDBusConnection* connection, const gchar* path, GError** error);
GType budgie_budgie_wmdbus_get_type (void) G_GNUC_CONST;
guint budgie_budgie_wmdbus_register_object (void* object, GDBusConnection* connection, const gchar* path, GError** error);
GType budgie_window_menu_get_type (void) G_GNUC_CONST;
#define BUDGIE_BUDGIE_WM_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), BUDGIE_TYPE_BUDGIE_WM, BudgieBudgieWMPrivate))
enum  {
	BUDGIE_BUDGIE_WM_DUMMY_PROPERTY,
	BUDGIE_BUDGIE_WM_USE_ANIMATIONS
};
#define BUDGIE_BUDGIE_WM_GL_VENDOR ((guint) 0x1F00)
#define BUDGIE_BUDGIE_WM_MAP_TIMEOUT 170
#define BUDGIE_BUDGIE_WM_MENU_MAP_TIMEOUT 120
#define BUDGIE_BUDGIE_WM_MAP_SCALE 0.8f
#define BUDGIE_BUDGIE_WM_MENU_MAP_SCALE_X 0.98f
#define BUDGIE_BUDGIE_WM_MENU_MAP_SCALE_Y 0.95f
#define BUDGIE_BUDGIE_WM_NOTIFICATION_MAP_SCALE_X 0.5f
#define BUDGIE_BUDGIE_WM_NOTIFICATION_MAP_SCALE_Y 0.8f
#define BUDGIE_BUDGIE_WM_FADE_TIMEOUT 165
#define BUDGIE_BUDGIE_WM_MINIMIZE_TIMEOUT 200
#define BUDGIE_BUDGIE_WM_DESTROY_TIMEOUT 170
#define BUDGIE_BUDGIE_WM_DESTROY_SCALE 0.6
#define BUDGIE_BUDGIE_WM_MAX_TAB_ELAPSE ((guint32) 2000)
#define BUDGIE_BUDGIE_WM_SWITCH_TIMEOUT 250
static gboolean budgie_budgie_wm_have_logind (BudgieBudgieWM* self);
static void budgie_budgie_wm_on_raven_get (BudgieBudgieWM* self, GObject* o, GAsyncResult* res);
static void budgie_budgie_wm_on_panel_get (BudgieBudgieWM* self, GObject* o, GAsyncResult* res);
static void budgie_budgie_wm_lost_panel (BudgieBudgieWM* self);
static void budgie_budgie_wm_has_panel (BudgieBudgieWM* self);
static void _budgie_budgie_wm_on_panel_get_gasync_ready_callback (GObject* source_object, GAsyncResult* res, gpointer self);
static void budgie_budgie_wm_on_logind_get (BudgieBudgieWM* self, GObject* o, GAsyncResult* res);
static gboolean budgie_budgie_wm_is_nvidia (BudgieBudgieWM* self);
static void budgie_budgie_wm_prepare_for_sleep (BudgieBudgieWM* self, gboolean suspending);
static void _budgie_budgie_wm_prepare_for_sleep_budgie_login_dremote_prepare_for_sleep (BudgieLoginDRemote* _sender, gboolean suspending, gpointer self);
static void budgie_budgie_wm_get_logind (BudgieBudgieWM* self);
static void _budgie_budgie_wm_on_logind_get_gasync_ready_callback (GObject* source_object, GAsyncResult* res, gpointer self);
static void budgie_budgie_wm_on_raven_main_toggle (BudgieBudgieWM* self, MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding);
static void budgie_budgie_wm_on_raven_notification_toggle (BudgieBudgieWM* self, MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding);
static void budgie_budgie_wm_has_raven (BudgieBudgieWM* self);
static void _budgie_budgie_wm_on_raven_get_gasync_ready_callback (GObject* source_object, GAsyncResult* res, gpointer self);
static void budgie_budgie_wm_lost_raven (BudgieBudgieWM* self);
static MetaPluginInfo* budgie_budgie_wm_real_plugin_info (MetaPlugin* base);
static void budgie_budgie_wm_on_overlay_key (BudgieBudgieWM* self);
static gboolean __lambda14_ (BudgieBudgieWM* self);
static gboolean ___lambda14__gsource_func (gpointer self);
static void budgie_budgie_wm_launch_menu (BudgieBudgieWM* self, MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding);
static void budgie_budgie_wm_launch_rundialog (BudgieBudgieWM* self, MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding);
static void budgie_budgie_wm_on_dialog_closed (BudgieBudgieWM* self, GPid pid, gint status);
static void budgie_budgie_wm_real_confirm_display_change (MetaPlugin* base);
static void _budgie_budgie_wm_on_dialog_closed_gchild_watch_func (GPid pid, gint status, gpointer self);
static void budgie_budgie_wm_real_start (MetaPlugin* base);
static void _g_object_unref0_ (gpointer var);
static void _g_free0_ (gpointer var);
BudgieWindowMenu* budgie_window_menu_new (void);
BudgieWindowMenu* budgie_window_menu_construct (GType object_type);
static void budgie_budgie_wm_on_wm_schema_changed (BudgieBudgieWM* self, const gchar* key);
static void _budgie_budgie_wm_on_wm_schema_changed_g_settings_changed (GSettings* _sender, const gchar* key, gpointer self);
static void _budgie_budgie_wm_on_raven_main_toggle_meta_key_handler_func (MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding, gpointer self);
static void _budgie_budgie_wm_on_raven_notification_toggle_meta_key_handler_func (MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding, gpointer self);
static void _budgie_budgie_wm_on_overlay_key_meta_display_overlay_key (MetaDisplay* _sender, gpointer self);
static void _budgie_budgie_wm_has_raven_gbus_name_appeared_callback (GDBusConnection* connection, const gchar* name, const gchar* name_owner, gpointer self);
static void _budgie_budgie_wm_lost_raven_gbus_name_vanished_callback (GDBusConnection* connection, const gchar* name, gpointer self);
static void _budgie_budgie_wm_has_panel_gbus_name_appeared_callback (GDBusConnection* connection, const gchar* name, const gchar* name_owner, gpointer self);
static void _budgie_budgie_wm_lost_panel_gbus_name_vanished_callback (GDBusConnection* connection, const gchar* name, gpointer self);
static void _budgie_budgie_wm_launch_menu_meta_key_handler_func (MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding, gpointer self);
static void _budgie_budgie_wm_launch_rundialog_meta_key_handler_func (MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding, gpointer self);
void budgie_budgie_wm_switch_windows (BudgieBudgieWM* self, MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding);
static void _budgie_budgie_wm_switch_windows_meta_key_handler_func (MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding, gpointer self);
BudgieShellShim* budgie_shell_shim_new (BudgieBudgieWM* wm);
BudgieShellShim* budgie_shell_shim_construct (GType object_type, BudgieBudgieWM* wm);
void budgie_shell_shim_serve (BudgieShellShim* self);
BudgieBudgieWMDBUS* budgie_budgie_wmdbus_new (BudgieBudgieWM* wm);
BudgieBudgieWMDBUS* budgie_budgie_wmdbus_construct (GType object_type, BudgieBudgieWM* wm);
void budgie_budgie_wmdbus_serve (BudgieBudgieWMDBUS* self);
static void budgie_budgie_wm_on_monitors_changed (BudgieBudgieWM* self, MetaScreen* screen);
static void _budgie_budgie_wm_on_monitors_changed_meta_screen_monitors_changed (MetaScreen* _sender, gpointer self);
static void budgie_budgie_wm_init_menu (BudgieBudgieWM* self);
BudgieKeyboardManager* budgie_keyboard_manager_new (BudgieBudgieWM* wm);
BudgieKeyboardManager* budgie_keyboard_manager_construct (GType object_type, BudgieBudgieWM* wm);
void budgie_keyboard_manager_hook_extra (BudgieKeyboardManager* self);
static void budgie_budgie_wm_real_show_window_menu (MetaPlugin* base, MetaWindow* window, MetaWindowMenuType type, gint x, gint y);
static Block4Data* block4_data_ref (Block4Data* _data4_);
static void block4_data_unref (void * _userdata_);
static gboolean __lambda15_ (Block4Data* _data4_);
void budgie_window_menu_set_meta_window (BudgieWindowMenu* self, MetaWindow* value);
static gboolean ___lambda15__gsource_func (gpointer self);
static void budgie_budgie_wm_dismiss_raven (BudgieBudgieWM* self);
static gboolean budgie_budgie_wm_on_button_release (BudgieBudgieWM* self, ClutterButtonEvent* event);
GType budgie_budgie_background_get_type (void) G_GNUC_CONST;
BudgieBudgieBackground* budgie_budgie_background_new (MetaScreen* screen, gint index);
BudgieBudgieBackground* budgie_budgie_background_construct (GType object_type, MetaScreen* screen, gint index);
static void budgie_budgie_wm_background_activate (BudgieBudgieWM* self);
static void budgie_budgie_wm_settings_activate (BudgieBudgieWM* self);
static void _budgie_budgie_wm_background_activate_gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self);
static void _budgie_budgie_wm_settings_activate_gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self);
static gboolean _budgie_budgie_wm_on_button_release_clutter_actor_button_release_event (ClutterActor* _sender, ClutterButtonEvent* event, gpointer self);
static void budgie_budgie_wm_finalize_animations (BudgieBudgieWM* self, MetaWindowActor* actor);
static void budgie_budgie_wm_map_done (BudgieBudgieWM* self, ClutterActor* actor);
static void budgie_budgie_wm_notification_map_done (BudgieBudgieWM* self, ClutterActor* actor);
void budgie_budgie_wm_store_focused (BudgieBudgieWM* self);
void budgie_budgie_wm_restore_focused (BudgieBudgieWM* self);
static void budgie_budgie_wm_real_map (MetaPlugin* base, MetaWindowActor* actor);
gboolean budgie_budgie_wm_get_use_animations (BudgieBudgieWM* self);
static void _budgie_budgie_wm_map_done_clutter_actor_transitions_completed (ClutterActor* _sender, gpointer self);
static BudgieAnimationState* _budgie_animation_state_dup (BudgieAnimationState* self);
static void budgie_budgie_wm_minimize_done (BudgieBudgieWM* self, ClutterActor* actor);
static void budgie_budgie_wm_real_minimize (MetaPlugin* base, MetaWindowActor* actor);
static void _budgie_budgie_wm_minimize_done_clutter_actor_transitions_completed (ClutterActor* _sender, gpointer self);
static void budgie_budgie_wm_unminimize_done (BudgieBudgieWM* self, ClutterActor* actor);
static void budgie_budgie_wm_real_unminimize (MetaPlugin* base, MetaWindowActor* actor);
static void _budgie_budgie_wm_unminimize_done_clutter_actor_transitions_completed (ClutterActor* _sender, gpointer self);
static void budgie_budgie_wm_destroy_done (BudgieBudgieWM* self, ClutterActor* actor);
static void budgie_budgie_wm_real_destroy (MetaPlugin* base, MetaWindowActor* actor);
static void _budgie_budgie_wm_destroy_done_clutter_actor_transitions_completed (ClutterActor* _sender, gpointer self);
static void budgie_budgie_wm_real_show_tile_preview (MetaPlugin* base, MetaWindow* window, MetaRectangle* tile_rect, gint tile_monitor_num);
static void budgie_budgie_wm_tile_preview_transition_complete (BudgieBudgieWM* self);
static void _budgie_budgie_wm_tile_preview_transition_complete_clutter_actor_transitions_completed (ClutterActor* _sender, gpointer self);
static guint8* _uint8_dup (guint8* self);
static void budgie_budgie_wm_real_hide_tile_preview (MetaPlugin* base);
static gint budgie_budgie_wm_tab_sort (MetaWindow* a, MetaWindow* b);
static void budgie_budgie_wm_invalidate_tab (BudgieBudgieWM* self, MetaWorkspace* space, MetaWindow* window);
static void _budgie_budgie_wm_invalidate_tab_meta_workspace_window_added (MetaWorkspace* _sender, MetaWindow* object, gpointer self);
static void _budgie_budgie_wm_invalidate_tab_meta_workspace_window_removed (MetaWorkspace* _sender, MetaWindow* object, gpointer self);
static gint _budgie_budgie_wm_tab_sort_gcompare_func (gconstpointer a, gconstpointer b);
static void budgie_budgie_wm_real_kill_switch_workspace (MetaPlugin* base);
static void budgie_budgie_wm_switch_workspace_done (BudgieBudgieWM* self);
static void budgie_budgie_wm_real_switch_workspace (MetaPlugin* base, gint from, gint to, MetaMotionDirection direction);
static void _budgie_budgie_wm_switch_workspace_done_clutter_actor_transitions_completed (ClutterActor* _sender, gpointer self);
BudgieBudgieWM* budgie_budgie_wm_new (void);
BudgieBudgieWM* budgie_budgie_wm_construct (GType object_type);
void budgie_budgie_wm_set_use_animations (BudgieBudgieWM* self, gboolean value);
static void _vala_ClutterPoint_free (ClutterPoint* self);
static void budgie_budgie_wm_finalize (GObject* obj);
static void _vala_budgie_budgie_wm_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec);
static void _vala_budgie_budgie_wm_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec);
#define BUDGIE_BUDGIE_WMDBUS_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), BUDGIE_TYPE_BUDGIE_WMDBUS, BudgieBudgieWMDBUSPrivate))
enum  {
	BUDGIE_BUDGIE_WMDBUS_DUMMY_PROPERTY
};
static void budgie_budgie_wmdbus_on_bus_acquired (BudgieBudgieWMDBUS* self, GDBusConnection* conn);
static void _budgie_budgie_wmdbus_on_bus_acquired_gbus_acquired_callback (GDBusConnection* connection, const gchar* name, gpointer self);
void budgie_budgie_wmdbus_store_focused (BudgieBudgieWMDBUS* self);
void budgie_budgie_wmdbus_restore_focused (BudgieBudgieWMDBUS* self);
static void budgie_budgie_wmdbus_finalize (GObject* obj);
static void _dbus_budgie_budgie_wmdbus_store_focused (BudgieBudgieWMDBUS* self, GVariant* _parameters_, GDBusMethodInvocation* invocation);
static void _dbus_budgie_budgie_wmdbus_restore_focused (BudgieBudgieWMDBUS* self, GVariant* _parameters_, GDBusMethodInvocation* invocation);
static void budgie_budgie_wmdbus_dbus_interface_method_call (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* method_name, GVariant* parameters, GDBusMethodInvocation* invocation, gpointer user_data);
static GVariant* budgie_budgie_wmdbus_dbus_interface_get_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GError** error, gpointer user_data);
static gboolean budgie_budgie_wmdbus_dbus_interface_set_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GVariant* value, GError** error, gpointer user_data);
static void _budgie_budgie_wmdbus_unregister_object (gpointer user_data);

static const GDBusArgInfo _budgie_raven_remote_dbus_arg_info_GetExpanded_result = {-1, "result", "b"};
static const GDBusArgInfo * const _budgie_raven_remote_dbus_arg_info_GetExpanded_in[] = {NULL};
static const GDBusArgInfo * const _budgie_raven_remote_dbus_arg_info_GetExpanded_out[] = {&_budgie_raven_remote_dbus_arg_info_GetExpanded_result, NULL};
static const GDBusMethodInfo _budgie_raven_remote_dbus_method_info_GetExpanded = {-1, "GetExpanded", (GDBusArgInfo **) (&_budgie_raven_remote_dbus_arg_info_GetExpanded_in), (GDBusArgInfo **) (&_budgie_raven_remote_dbus_arg_info_GetExpanded_out)};
static const GDBusArgInfo * const _budgie_raven_remote_dbus_arg_info_Toggle_in[] = {NULL};
static const GDBusArgInfo * const _budgie_raven_remote_dbus_arg_info_Toggle_out[] = {NULL};
static const GDBusMethodInfo _budgie_raven_remote_dbus_method_info_Toggle = {-1, "Toggle", (GDBusArgInfo **) (&_budgie_raven_remote_dbus_arg_info_Toggle_in), (GDBusArgInfo **) (&_budgie_raven_remote_dbus_arg_info_Toggle_out)};
static const GDBusArgInfo * const _budgie_raven_remote_dbus_arg_info_ToggleNotificationsView_in[] = {NULL};
static const GDBusArgInfo * const _budgie_raven_remote_dbus_arg_info_ToggleNotificationsView_out[] = {NULL};
static const GDBusMethodInfo _budgie_raven_remote_dbus_method_info_ToggleNotificationsView = {-1, "ToggleNotificationsView", (GDBusArgInfo **) (&_budgie_raven_remote_dbus_arg_info_ToggleNotificationsView_in), (GDBusArgInfo **) (&_budgie_raven_remote_dbus_arg_info_ToggleNotificationsView_out)};
static const GDBusArgInfo * const _budgie_raven_remote_dbus_arg_info_ToggleAppletView_in[] = {NULL};
static const GDBusArgInfo * const _budgie_raven_remote_dbus_arg_info_ToggleAppletView_out[] = {NULL};
static const GDBusMethodInfo _budgie_raven_remote_dbus_method_info_ToggleAppletView = {-1, "ToggleAppletView", (GDBusArgInfo **) (&_budgie_raven_remote_dbus_arg_info_ToggleAppletView_in), (GDBusArgInfo **) (&_budgie_raven_remote_dbus_arg_info_ToggleAppletView_out)};
static const GDBusArgInfo * const _budgie_raven_remote_dbus_arg_info_Dismiss_in[] = {NULL};
static const GDBusArgInfo * const _budgie_raven_remote_dbus_arg_info_Dismiss_out[] = {NULL};
static const GDBusMethodInfo _budgie_raven_remote_dbus_method_info_Dismiss = {-1, "Dismiss", (GDBusArgInfo **) (&_budgie_raven_remote_dbus_arg_info_Dismiss_in), (GDBusArgInfo **) (&_budgie_raven_remote_dbus_arg_info_Dismiss_out)};
static const GDBusMethodInfo * const _budgie_raven_remote_dbus_method_info[] = {&_budgie_raven_remote_dbus_method_info_GetExpanded, &_budgie_raven_remote_dbus_method_info_Toggle, &_budgie_raven_remote_dbus_method_info_ToggleNotificationsView, &_budgie_raven_remote_dbus_method_info_ToggleAppletView, &_budgie_raven_remote_dbus_method_info_Dismiss, NULL};
static const GDBusSignalInfo * const _budgie_raven_remote_dbus_signal_info[] = {NULL};
static const GDBusPropertyInfo * const _budgie_raven_remote_dbus_property_info[] = {NULL};
static const GDBusInterfaceInfo _budgie_raven_remote_dbus_interface_info = {-1, "com.solus_project.budgie.Raven", (GDBusMethodInfo **) (&_budgie_raven_remote_dbus_method_info), (GDBusSignalInfo **) (&_budgie_raven_remote_dbus_signal_info), (GDBusPropertyInfo **) (&_budgie_raven_remote_dbus_property_info)};
static const GDBusInterfaceVTable _budgie_raven_remote_dbus_interface_vtable = {budgie_raven_remote_dbus_interface_method_call, budgie_raven_remote_dbus_interface_get_property, budgie_raven_remote_dbus_interface_set_property};
static const GDBusArgInfo _budgie_panel_remote_dbus_arg_info_ActivateAction_flags = {-1, "flags", "i"};
static const GDBusArgInfo * const _budgie_panel_remote_dbus_arg_info_ActivateAction_in[] = {&_budgie_panel_remote_dbus_arg_info_ActivateAction_flags, NULL};
static const GDBusArgInfo * const _budgie_panel_remote_dbus_arg_info_ActivateAction_out[] = {NULL};
static const GDBusMethodInfo _budgie_panel_remote_dbus_method_info_ActivateAction = {-1, "ActivateAction", (GDBusArgInfo **) (&_budgie_panel_remote_dbus_arg_info_ActivateAction_in), (GDBusArgInfo **) (&_budgie_panel_remote_dbus_arg_info_ActivateAction_out)};
static const GDBusMethodInfo * const _budgie_panel_remote_dbus_method_info[] = {&_budgie_panel_remote_dbus_method_info_ActivateAction, NULL};
static const GDBusSignalInfo * const _budgie_panel_remote_dbus_signal_info[] = {NULL};
static const GDBusPropertyInfo * const _budgie_panel_remote_dbus_property_info[] = {NULL};
static const GDBusInterfaceInfo _budgie_panel_remote_dbus_interface_info = {-1, "com.solus_project.budgie.Panel", (GDBusMethodInfo **) (&_budgie_panel_remote_dbus_method_info), (GDBusSignalInfo **) (&_budgie_panel_remote_dbus_signal_info), (GDBusPropertyInfo **) (&_budgie_panel_remote_dbus_property_info)};
static const GDBusInterfaceVTable _budgie_panel_remote_dbus_interface_vtable = {budgie_panel_remote_dbus_interface_method_call, budgie_panel_remote_dbus_interface_get_property, budgie_panel_remote_dbus_interface_set_property};
static const GDBusMethodInfo * const _budgie_login_dremote_dbus_method_info[] = {NULL};
static const GDBusArgInfo _budgie_login_dremote_dbus_arg_info_prepare_for_sleep_suspending = {-1, "suspending", "b"};
static const GDBusArgInfo * const _budgie_login_dremote_dbus_arg_info_prepare_for_sleep[] = {&_budgie_login_dremote_dbus_arg_info_prepare_for_sleep_suspending, NULL};
static const GDBusSignalInfo _budgie_login_dremote_dbus_signal_info_prepare_for_sleep = {-1, "PrepareForSleep", (GDBusArgInfo **) (&_budgie_login_dremote_dbus_arg_info_prepare_for_sleep)};
static const GDBusSignalInfo * const _budgie_login_dremote_dbus_signal_info[] = {&_budgie_login_dremote_dbus_signal_info_prepare_for_sleep, NULL};
static const GDBusPropertyInfo * const _budgie_login_dremote_dbus_property_info[] = {NULL};
static const GDBusInterfaceInfo _budgie_login_dremote_dbus_interface_info = {-1, "org.freedesktop.login1.Manager", (GDBusMethodInfo **) (&_budgie_login_dremote_dbus_method_info), (GDBusSignalInfo **) (&_budgie_login_dremote_dbus_signal_info), (GDBusPropertyInfo **) (&_budgie_login_dremote_dbus_property_info)};
static const GDBusInterfaceVTable _budgie_login_dremote_dbus_interface_vtable = {budgie_login_dremote_dbus_interface_method_call, budgie_login_dremote_dbus_interface_get_property, budgie_login_dremote_dbus_interface_set_property};
static const GDBusArgInfo * const _budgie_budgie_wmdbus_dbus_arg_info_store_focused_in[] = {NULL};
static const GDBusArgInfo * const _budgie_budgie_wmdbus_dbus_arg_info_store_focused_out[] = {NULL};
static const GDBusMethodInfo _budgie_budgie_wmdbus_dbus_method_info_store_focused = {-1, "StoreFocused", (GDBusArgInfo **) (&_budgie_budgie_wmdbus_dbus_arg_info_store_focused_in), (GDBusArgInfo **) (&_budgie_budgie_wmdbus_dbus_arg_info_store_focused_out)};
static const GDBusArgInfo * const _budgie_budgie_wmdbus_dbus_arg_info_restore_focused_in[] = {NULL};
static const GDBusArgInfo * const _budgie_budgie_wmdbus_dbus_arg_info_restore_focused_out[] = {NULL};
static const GDBusMethodInfo _budgie_budgie_wmdbus_dbus_method_info_restore_focused = {-1, "RestoreFocused", (GDBusArgInfo **) (&_budgie_budgie_wmdbus_dbus_arg_info_restore_focused_in), (GDBusArgInfo **) (&_budgie_budgie_wmdbus_dbus_arg_info_restore_focused_out)};
static const GDBusMethodInfo * const _budgie_budgie_wmdbus_dbus_method_info[] = {&_budgie_budgie_wmdbus_dbus_method_info_store_focused, &_budgie_budgie_wmdbus_dbus_method_info_restore_focused, NULL};
static const GDBusSignalInfo * const _budgie_budgie_wmdbus_dbus_signal_info[] = {NULL};
static const GDBusPropertyInfo * const _budgie_budgie_wmdbus_dbus_property_info[] = {NULL};
static const GDBusInterfaceInfo _budgie_budgie_wmdbus_dbus_interface_info = {-1, "com.solus_project.budgie.BudgieWM", (GDBusMethodInfo **) (&_budgie_budgie_wmdbus_dbus_method_info), (GDBusSignalInfo **) (&_budgie_budgie_wmdbus_dbus_signal_info), (GDBusPropertyInfo **) (&_budgie_budgie_wmdbus_dbus_property_info)};
static const GDBusInterfaceVTable _budgie_budgie_wmdbus_dbus_interface_vtable = {budgie_budgie_wmdbus_dbus_interface_method_call, budgie_budgie_wmdbus_dbus_interface_get_property, budgie_budgie_wmdbus_dbus_interface_set_property};

GType budgie_panel_action_get_type (void) {
	static volatile gsize budgie_panel_action_type_id__volatile = 0;
	if (g_once_init_enter (&budgie_panel_action_type_id__volatile)) {
		static const GFlagsValue values[] = {{BUDGIE_PANEL_ACTION_NONE, "BUDGIE_PANEL_ACTION_NONE", "none"}, {BUDGIE_PANEL_ACTION_MENU, "BUDGIE_PANEL_ACTION_MENU", "menu"}, {BUDGIE_PANEL_ACTION_MAX, "BUDGIE_PANEL_ACTION_MAX", "max"}, {0, NULL, NULL}};
		GType budgie_panel_action_type_id;
		budgie_panel_action_type_id = g_flags_register_static ("BudgiePanelAction", values);
		g_once_init_leave (&budgie_panel_action_type_id__volatile, budgie_panel_action_type_id);
	}
	return budgie_panel_action_type_id__volatile;
}


GType budgie_animation_state_get_type (void) {
	static volatile gsize budgie_animation_state_type_id__volatile = 0;
	if (g_once_init_enter (&budgie_animation_state_type_id__volatile)) {
		static const GEnumValue values[] = {{BUDGIE_ANIMATION_STATE_MAP, "BUDGIE_ANIMATION_STATE_MAP", "map"}, {BUDGIE_ANIMATION_STATE_MINIMIZE, "BUDGIE_ANIMATION_STATE_MINIMIZE", "minimize"}, {BUDGIE_ANIMATION_STATE_UNMINIMIZE, "BUDGIE_ANIMATION_STATE_UNMINIMIZE", "unminimize"}, {BUDGIE_ANIMATION_STATE_DESTROY, "BUDGIE_ANIMATION_STATE_DESTROY", "destroy"}, {0, NULL, NULL}};
		GType budgie_animation_state_type_id;
		budgie_animation_state_type_id = g_enum_register_static ("BudgieAnimationState", values);
		g_once_init_leave (&budgie_animation_state_type_id__volatile, budgie_animation_state_type_id);
	}
	return budgie_animation_state_type_id__volatile;
}


BudgieScreenTilePreview* budgie_screen_tile_preview_construct (GType object_type) {
	BudgieScreenTilePreview * self = NULL;
	self = (BudgieScreenTilePreview*) g_object_new (object_type, NULL);
	return self;
}


BudgieScreenTilePreview* budgie_screen_tile_preview_new (void) {
	return budgie_screen_tile_preview_construct (BUDGIE_TYPE_SCREEN_TILE_PREVIEW);
}


static GObject * budgie_screen_tile_preview_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
	GObject * obj;
	GObjectClass * parent_class;
	BudgieScreenTilePreview * self;
	ClutterColor* _tmp0_ = NULL;
	parent_class = G_OBJECT_CLASS (budgie_screen_tile_preview_parent_class);
	obj = parent_class->constructor (type, n_construct_properties, construct_properties);
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, BUDGIE_TYPE_SCREEN_TILE_PREVIEW, BudgieScreenTilePreview);
	_tmp0_ = clutter_color_get_static (CLUTTER_COLOR_SKY_BLUE);
	clutter_actor_set_background_color ((ClutterActor*) self, _tmp0_);
	clutter_actor_set_opacity ((ClutterActor*) self, (guint8) 100);
	memset (&self->tile_rect, 0, sizeof (MetaRectangle));
	return obj;
}


static void budgie_screen_tile_preview_class_init (BudgieScreenTilePreviewClass * klass) {
	budgie_screen_tile_preview_parent_class = g_type_class_peek_parent (klass);
	G_OBJECT_CLASS (klass)->constructor = budgie_screen_tile_preview_constructor;
	G_OBJECT_CLASS (klass)->finalize = budgie_screen_tile_preview_finalize;
}


static void budgie_screen_tile_preview_instance_init (BudgieScreenTilePreview * self) {
}


static void budgie_screen_tile_preview_finalize (GObject* obj) {
	BudgieScreenTilePreview * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, BUDGIE_TYPE_SCREEN_TILE_PREVIEW, BudgieScreenTilePreview);
	G_OBJECT_CLASS (budgie_screen_tile_preview_parent_class)->finalize (obj);
}


GType budgie_screen_tile_preview_get_type (void) {
	static volatile gsize budgie_screen_tile_preview_type_id__volatile = 0;
	if (g_once_init_enter (&budgie_screen_tile_preview_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (BudgieScreenTilePreviewClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) budgie_screen_tile_preview_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (BudgieScreenTilePreview), 0, (GInstanceInitFunc) budgie_screen_tile_preview_instance_init, NULL };
		GType budgie_screen_tile_preview_type_id;
		budgie_screen_tile_preview_type_id = g_type_register_static (clutter_actor_get_type (), "BudgieScreenTilePreview", &g_define_type_info, 0);
		g_once_init_leave (&budgie_screen_tile_preview_type_id__volatile, budgie_screen_tile_preview_type_id);
	}
	return budgie_screen_tile_preview_type_id__volatile;
}


gboolean budgie_raven_remote_GetExpanded (BudgieRavenRemote* self, GError** error) {
	g_return_val_if_fail (self != NULL, FALSE);
	return BUDGIE_RAVEN_REMOTE_GET_INTERFACE (self)->GetExpanded (self, error);
}


void budgie_raven_remote_Toggle (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	BUDGIE_RAVEN_REMOTE_GET_INTERFACE (self)->Toggle (self, _callback_, _user_data_);
}


void budgie_raven_remote_Toggle_finish (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error) {
	BUDGIE_RAVEN_REMOTE_GET_INTERFACE (self)->Toggle_finish (self, _res_, error);
}


void budgie_raven_remote_ToggleNotificationsView (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	BUDGIE_RAVEN_REMOTE_GET_INTERFACE (self)->ToggleNotificationsView (self, _callback_, _user_data_);
}


void budgie_raven_remote_ToggleNotificationsView_finish (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error) {
	BUDGIE_RAVEN_REMOTE_GET_INTERFACE (self)->ToggleNotificationsView_finish (self, _res_, error);
}


void budgie_raven_remote_ToggleAppletView (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	BUDGIE_RAVEN_REMOTE_GET_INTERFACE (self)->ToggleAppletView (self, _callback_, _user_data_);
}


void budgie_raven_remote_ToggleAppletView_finish (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error) {
	BUDGIE_RAVEN_REMOTE_GET_INTERFACE (self)->ToggleAppletView_finish (self, _res_, error);
}


void budgie_raven_remote_Dismiss (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	BUDGIE_RAVEN_REMOTE_GET_INTERFACE (self)->Dismiss (self, _callback_, _user_data_);
}


void budgie_raven_remote_Dismiss_finish (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error) {
	BUDGIE_RAVEN_REMOTE_GET_INTERFACE (self)->Dismiss_finish (self, _res_, error);
}


static void budgie_raven_remote_base_init (BudgieRavenRemoteIface * iface) {
	static gboolean initialized = FALSE;
	if (!initialized) {
		initialized = TRUE;
	}
}


GType budgie_raven_remote_get_type (void) {
	static volatile gsize budgie_raven_remote_type_id__volatile = 0;
	if (g_once_init_enter (&budgie_raven_remote_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (BudgieRavenRemoteIface), (GBaseInitFunc) budgie_raven_remote_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
		GType budgie_raven_remote_type_id;
		budgie_raven_remote_type_id = g_type_register_static (G_TYPE_INTERFACE, "BudgieRavenRemote", &g_define_type_info, 0);
		g_type_interface_add_prerequisite (budgie_raven_remote_type_id, G_TYPE_OBJECT);
		g_type_set_qdata (budgie_raven_remote_type_id, g_quark_from_static_string ("vala-dbus-proxy-type"), (void*) budgie_raven_remote_proxy_get_type);
		g_type_set_qdata (budgie_raven_remote_type_id, g_quark_from_static_string ("vala-dbus-interface-name"), "com.solus_project.budgie.Raven");
		g_type_set_qdata (budgie_raven_remote_type_id, g_quark_from_static_string ("vala-dbus-interface-info"), (void*) (&_budgie_raven_remote_dbus_interface_info));
		g_type_set_qdata (budgie_raven_remote_type_id, g_quark_from_static_string ("vala-dbus-register-object"), (void*) budgie_raven_remote_register_object);
		g_once_init_leave (&budgie_raven_remote_type_id__volatile, budgie_raven_remote_type_id);
	}
	return budgie_raven_remote_type_id__volatile;
}


G_DEFINE_TYPE_EXTENDED (BudgieRavenRemoteProxy, budgie_raven_remote_proxy, G_TYPE_DBUS_PROXY, 0, G_IMPLEMENT_INTERFACE (BUDGIE_TYPE_RAVEN_REMOTE, budgie_raven_remote_proxy_budgie_raven_remote_interface_init) )
static void budgie_raven_remote_proxy_class_init (BudgieRavenRemoteProxyClass* klass) {
	G_DBUS_PROXY_CLASS (klass)->g_signal = budgie_raven_remote_proxy_g_signal;
}


static void budgie_raven_remote_proxy_g_signal (GDBusProxy* proxy, const gchar* sender_name, const gchar* signal_name, GVariant* parameters) {
}


static void budgie_raven_remote_proxy_init (BudgieRavenRemoteProxy* self) {
}


static gboolean budgie_raven_remote_proxy_GetExpanded (BudgieRavenRemote* self, GError** error) {
	GDBusMessage *_message;
	GVariant *_arguments;
	GVariantBuilder _arguments_builder;
	GDBusMessage *_reply_message;
	GVariant *_reply;
	GVariantIter _reply_iter;
	gboolean _result;
	GVariant* _tmp49_;
	_message = g_dbus_message_new_method_call (g_dbus_proxy_get_name ((GDBusProxy *) self), g_dbus_proxy_get_object_path ((GDBusProxy *) self), "com.solus_project.budgie.Raven", "GetExpanded");
	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
	_arguments = g_variant_builder_end (&_arguments_builder);
	g_dbus_message_set_body (_message, _arguments);
	_reply_message = g_dbus_connection_send_message_with_reply_sync (g_dbus_proxy_get_connection ((GDBusProxy *) self), _message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, g_dbus_proxy_get_default_timeout ((GDBusProxy *) self), NULL, NULL, error);
	g_object_unref (_message);
	if (!_reply_message) {
		return FALSE;
	}
	if (g_dbus_message_to_gerror (_reply_message, error)) {
		g_object_unref (_reply_message);
		return FALSE;
	}
	_reply = g_dbus_message_get_body (_reply_message);
	g_variant_iter_init (&_reply_iter, _reply);
	_tmp49_ = g_variant_iter_next_value (&_reply_iter);
	_result = g_variant_get_boolean (_tmp49_);
	g_variant_unref (_tmp49_);
	g_object_unref (_reply_message);
	return _result;
}


static void _vala_g_async_ready_callback (GObject *source_object, GAsyncResult *res, void *user_data) {
	g_simple_async_result_set_op_res_gpointer (user_data, g_object_ref (res), g_object_unref);
	g_simple_async_result_complete (user_data);
	g_object_unref (user_data);
}


static void budgie_raven_remote_proxy_Toggle_async (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	GDBusMessage *_message;
	GVariant *_arguments;
	GVariantBuilder _arguments_builder;
	_message = g_dbus_message_new_method_call (g_dbus_proxy_get_name ((GDBusProxy *) self), g_dbus_proxy_get_object_path ((GDBusProxy *) self), "com.solus_project.budgie.Raven", "Toggle");
	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
	_arguments = g_variant_builder_end (&_arguments_builder);
	g_dbus_message_set_body (_message, _arguments);
	g_dbus_connection_send_message_with_reply (g_dbus_proxy_get_connection ((GDBusProxy *) self), _message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, g_dbus_proxy_get_default_timeout ((GDBusProxy *) self), NULL, NULL, _vala_g_async_ready_callback, g_simple_async_result_new ((GObject *) self, _callback_, _user_data_, NULL));
	g_object_unref (_message);
}


static void budgie_raven_remote_proxy_Toggle_finish (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error) {
	GDBusMessage *_reply_message;
	_reply_message = g_dbus_connection_send_message_with_reply_finish (g_dbus_proxy_get_connection ((GDBusProxy *) self), g_simple_async_result_get_op_res_gpointer ((GSimpleAsyncResult *) _res_), error);
	if (!_reply_message) {
		return;
	}
	if (g_dbus_message_to_gerror (_reply_message, error)) {
		g_object_unref (_reply_message);
		return;
	}
	g_object_unref (_reply_message);
}


static void budgie_raven_remote_proxy_ToggleNotificationsView_async (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	GDBusMessage *_message;
	GVariant *_arguments;
	GVariantBuilder _arguments_builder;
	_message = g_dbus_message_new_method_call (g_dbus_proxy_get_name ((GDBusProxy *) self), g_dbus_proxy_get_object_path ((GDBusProxy *) self), "com.solus_project.budgie.Raven", "ToggleNotificationsView");
	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
	_arguments = g_variant_builder_end (&_arguments_builder);
	g_dbus_message_set_body (_message, _arguments);
	g_dbus_connection_send_message_with_reply (g_dbus_proxy_get_connection ((GDBusProxy *) self), _message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, g_dbus_proxy_get_default_timeout ((GDBusProxy *) self), NULL, NULL, _vala_g_async_ready_callback, g_simple_async_result_new ((GObject *) self, _callback_, _user_data_, NULL));
	g_object_unref (_message);
}


static void budgie_raven_remote_proxy_ToggleNotificationsView_finish (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error) {
	GDBusMessage *_reply_message;
	_reply_message = g_dbus_connection_send_message_with_reply_finish (g_dbus_proxy_get_connection ((GDBusProxy *) self), g_simple_async_result_get_op_res_gpointer ((GSimpleAsyncResult *) _res_), error);
	if (!_reply_message) {
		return;
	}
	if (g_dbus_message_to_gerror (_reply_message, error)) {
		g_object_unref (_reply_message);
		return;
	}
	g_object_unref (_reply_message);
}


static void budgie_raven_remote_proxy_ToggleAppletView_async (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	GDBusMessage *_message;
	GVariant *_arguments;
	GVariantBuilder _arguments_builder;
	_message = g_dbus_message_new_method_call (g_dbus_proxy_get_name ((GDBusProxy *) self), g_dbus_proxy_get_object_path ((GDBusProxy *) self), "com.solus_project.budgie.Raven", "ToggleAppletView");
	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
	_arguments = g_variant_builder_end (&_arguments_builder);
	g_dbus_message_set_body (_message, _arguments);
	g_dbus_connection_send_message_with_reply (g_dbus_proxy_get_connection ((GDBusProxy *) self), _message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, g_dbus_proxy_get_default_timeout ((GDBusProxy *) self), NULL, NULL, _vala_g_async_ready_callback, g_simple_async_result_new ((GObject *) self, _callback_, _user_data_, NULL));
	g_object_unref (_message);
}


static void budgie_raven_remote_proxy_ToggleAppletView_finish (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error) {
	GDBusMessage *_reply_message;
	_reply_message = g_dbus_connection_send_message_with_reply_finish (g_dbus_proxy_get_connection ((GDBusProxy *) self), g_simple_async_result_get_op_res_gpointer ((GSimpleAsyncResult *) _res_), error);
	if (!_reply_message) {
		return;
	}
	if (g_dbus_message_to_gerror (_reply_message, error)) {
		g_object_unref (_reply_message);
		return;
	}
	g_object_unref (_reply_message);
}


static void budgie_raven_remote_proxy_Dismiss_async (BudgieRavenRemote* self, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	GDBusMessage *_message;
	GVariant *_arguments;
	GVariantBuilder _arguments_builder;
	_message = g_dbus_message_new_method_call (g_dbus_proxy_get_name ((GDBusProxy *) self), g_dbus_proxy_get_object_path ((GDBusProxy *) self), "com.solus_project.budgie.Raven", "Dismiss");
	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
	_arguments = g_variant_builder_end (&_arguments_builder);
	g_dbus_message_set_body (_message, _arguments);
	g_dbus_connection_send_message_with_reply (g_dbus_proxy_get_connection ((GDBusProxy *) self), _message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, g_dbus_proxy_get_default_timeout ((GDBusProxy *) self), NULL, NULL, _vala_g_async_ready_callback, g_simple_async_result_new ((GObject *) self, _callback_, _user_data_, NULL));
	g_object_unref (_message);
}


static void budgie_raven_remote_proxy_Dismiss_finish (BudgieRavenRemote* self, GAsyncResult* _res_, GError** error) {
	GDBusMessage *_reply_message;
	_reply_message = g_dbus_connection_send_message_with_reply_finish (g_dbus_proxy_get_connection ((GDBusProxy *) self), g_simple_async_result_get_op_res_gpointer ((GSimpleAsyncResult *) _res_), error);
	if (!_reply_message) {
		return;
	}
	if (g_dbus_message_to_gerror (_reply_message, error)) {
		g_object_unref (_reply_message);
		return;
	}
	g_object_unref (_reply_message);
}


static void budgie_raven_remote_proxy_budgie_raven_remote_interface_init (BudgieRavenRemoteIface* iface) {
	iface->GetExpanded = budgie_raven_remote_proxy_GetExpanded;
	iface->Toggle = budgie_raven_remote_proxy_Toggle_async;
	iface->Toggle_finish = budgie_raven_remote_proxy_Toggle_finish;
	iface->ToggleNotificationsView = budgie_raven_remote_proxy_ToggleNotificationsView_async;
	iface->ToggleNotificationsView_finish = budgie_raven_remote_proxy_ToggleNotificationsView_finish;
	iface->ToggleAppletView = budgie_raven_remote_proxy_ToggleAppletView_async;
	iface->ToggleAppletView_finish = budgie_raven_remote_proxy_ToggleAppletView_finish;
	iface->Dismiss = budgie_raven_remote_proxy_Dismiss_async;
	iface->Dismiss_finish = budgie_raven_remote_proxy_Dismiss_finish;
}


static void _dbus_budgie_raven_remote_GetExpanded (BudgieRavenRemote* self, GVariant* _parameters_, GDBusMethodInvocation* invocation) {
	GError* error = NULL;
	GVariantIter _arguments_iter;
	GDBusMessage* _reply_message;
	GVariant* _reply;
	GVariantBuilder _reply_builder;
	gboolean result;
	g_variant_iter_init (&_arguments_iter, _parameters_);
	result = budgie_raven_remote_GetExpanded (self, &error);
	if (error) {
		g_dbus_method_invocation_return_gerror (invocation, error);
		return;
	}
	_reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation));
	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
	g_variant_builder_add_value (&_reply_builder, g_variant_new_boolean (result));
	_reply = g_variant_builder_end (&_reply_builder);
	g_dbus_message_set_body (_reply_message, _reply);
	g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
	g_object_unref (invocation);
	g_object_unref (_reply_message);
}


static void _dbus_budgie_raven_remote_Toggle (BudgieRavenRemote* self, GVariant* _parameters_, GDBusMethodInvocation* invocation) {
	GVariantIter _arguments_iter;
	g_variant_iter_init (&_arguments_iter, _parameters_);
	budgie_raven_remote_Toggle (self, (GAsyncReadyCallback) _dbus_budgie_raven_remote_Toggle_ready, invocation);
}


static void _dbus_budgie_raven_remote_Toggle_ready (GObject * source_object, GAsyncResult * _res_, gpointer _user_data_) {
	GDBusMethodInvocation * invocation;
	GError* error = NULL;
	GDBusMessage* _reply_message;
	GVariant* _reply;
	GVariantBuilder _reply_builder;
	invocation = _user_data_;
	budgie_raven_remote_Toggle_finish ((BudgieRavenRemote*) source_object, _res_, &error);
	if (error) {
		g_dbus_method_invocation_return_gerror (invocation, error);
		return;
	}
	_reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation));
	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
	_reply = g_variant_builder_end (&_reply_builder);
	g_dbus_message_set_body (_reply_message, _reply);
	g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
	g_object_unref (invocation);
	g_object_unref (_reply_message);
}


static void _dbus_budgie_raven_remote_ToggleNotificationsView (BudgieRavenRemote* self, GVariant* _parameters_, GDBusMethodInvocation* invocation) {
	GVariantIter _arguments_iter;
	g_variant_iter_init (&_arguments_iter, _parameters_);
	budgie_raven_remote_ToggleNotificationsView (self, (GAsyncReadyCallback) _dbus_budgie_raven_remote_ToggleNotificationsView_ready, invocation);
}


static void _dbus_budgie_raven_remote_ToggleNotificationsView_ready (GObject * source_object, GAsyncResult * _res_, gpointer _user_data_) {
	GDBusMethodInvocation * invocation;
	GError* error = NULL;
	GDBusMessage* _reply_message;
	GVariant* _reply;
	GVariantBuilder _reply_builder;
	invocation = _user_data_;
	budgie_raven_remote_ToggleNotificationsView_finish ((BudgieRavenRemote*) source_object, _res_, &error);
	if (error) {
		g_dbus_method_invocation_return_gerror (invocation, error);
		return;
	}
	_reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation));
	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
	_reply = g_variant_builder_end (&_reply_builder);
	g_dbus_message_set_body (_reply_message, _reply);
	g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
	g_object_unref (invocation);
	g_object_unref (_reply_message);
}


static void _dbus_budgie_raven_remote_ToggleAppletView (BudgieRavenRemote* self, GVariant* _parameters_, GDBusMethodInvocation* invocation) {
	GVariantIter _arguments_iter;
	g_variant_iter_init (&_arguments_iter, _parameters_);
	budgie_raven_remote_ToggleAppletView (self, (GAsyncReadyCallback) _dbus_budgie_raven_remote_ToggleAppletView_ready, invocation);
}


static void _dbus_budgie_raven_remote_ToggleAppletView_ready (GObject * source_object, GAsyncResult * _res_, gpointer _user_data_) {
	GDBusMethodInvocation * invocation;
	GError* error = NULL;
	GDBusMessage* _reply_message;
	GVariant* _reply;
	GVariantBuilder _reply_builder;
	invocation = _user_data_;
	budgie_raven_remote_ToggleAppletView_finish ((BudgieRavenRemote*) source_object, _res_, &error);
	if (error) {
		g_dbus_method_invocation_return_gerror (invocation, error);
		return;
	}
	_reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation));
	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
	_reply = g_variant_builder_end (&_reply_builder);
	g_dbus_message_set_body (_reply_message, _reply);
	g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
	g_object_unref (invocation);
	g_object_unref (_reply_message);
}


static void _dbus_budgie_raven_remote_Dismiss (BudgieRavenRemote* self, GVariant* _parameters_, GDBusMethodInvocation* invocation) {
	GVariantIter _arguments_iter;
	g_variant_iter_init (&_arguments_iter, _parameters_);
	budgie_raven_remote_Dismiss (self, (GAsyncReadyCallback) _dbus_budgie_raven_remote_Dismiss_ready, invocation);
}


static void _dbus_budgie_raven_remote_Dismiss_ready (GObject * source_object, GAsyncResult * _res_, gpointer _user_data_) {
	GDBusMethodInvocation * invocation;
	GError* error = NULL;
	GDBusMessage* _reply_message;
	GVariant* _reply;
	GVariantBuilder _reply_builder;
	invocation = _user_data_;
	budgie_raven_remote_Dismiss_finish ((BudgieRavenRemote*) source_object, _res_, &error);
	if (error) {
		g_dbus_method_invocation_return_gerror (invocation, error);
		return;
	}
	_reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation));
	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
	_reply = g_variant_builder_end (&_reply_builder);
	g_dbus_message_set_body (_reply_message, _reply);
	g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
	g_object_unref (invocation);
	g_object_unref (_reply_message);
}


static void budgie_raven_remote_dbus_interface_method_call (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* method_name, GVariant* parameters, GDBusMethodInvocation* invocation, gpointer user_data) {
	gpointer* data;
	gpointer object;
	data = user_data;
	object = data[0];
	if (strcmp (method_name, "GetExpanded") == 0) {
		_dbus_budgie_raven_remote_GetExpanded (object, parameters, invocation);
	} else if (strcmp (method_name, "Toggle") == 0) {
		_dbus_budgie_raven_remote_Toggle (object, parameters, invocation);
	} else if (strcmp (method_name, "ToggleNotificationsView") == 0) {
		_dbus_budgie_raven_remote_ToggleNotificationsView (object, parameters, invocation);
	} else if (strcmp (method_name, "ToggleAppletView") == 0) {
		_dbus_budgie_raven_remote_ToggleAppletView (object, parameters, invocation);
	} else if (strcmp (method_name, "Dismiss") == 0) {
		_dbus_budgie_raven_remote_Dismiss (object, parameters, invocation);
	} else {
		g_object_unref (invocation);
	}
}


static GVariant* budgie_raven_remote_dbus_interface_get_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GError** error, gpointer user_data) {
	gpointer* data;
	gpointer object;
	data = user_data;
	object = data[0];
	return NULL;
}


static gboolean budgie_raven_remote_dbus_interface_set_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GVariant* value, GError** error, gpointer user_data) {
	gpointer* data;
	gpointer object;
	data = user_data;
	object = data[0];
	return FALSE;
}


guint budgie_raven_remote_register_object (gpointer object, GDBusConnection* connection, const gchar* path, GError** error) {
	guint result;
	gpointer *data;
	data = g_new (gpointer, 3);
	data[0] = g_object_ref (object);
	data[1] = g_object_ref (connection);
	data[2] = g_strdup (path);
	result = g_dbus_connection_register_object (connection, path, (GDBusInterfaceInfo *) (&_budgie_raven_remote_dbus_interface_info), &_budgie_raven_remote_dbus_interface_vtable, data, _budgie_raven_remote_unregister_object, error);
	if (!result) {
		return 0;
	}
	return result;
}


static void _budgie_raven_remote_unregister_object (gpointer user_data) {
	gpointer* data;
	data = user_data;
	g_object_unref (data[0]);
	g_object_unref (data[1]);
	g_free (data[2]);
	g_free (data);
}


void budgie_panel_remote_ActivateAction (BudgiePanelRemote* self, gint flags, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	BUDGIE_PANEL_REMOTE_GET_INTERFACE (self)->ActivateAction (self, flags, _callback_, _user_data_);
}


void budgie_panel_remote_ActivateAction_finish (BudgiePanelRemote* self, GAsyncResult* _res_, GError** error) {
	BUDGIE_PANEL_REMOTE_GET_INTERFACE (self)->ActivateAction_finish (self, _res_, error);
}


static void budgie_panel_remote_base_init (BudgiePanelRemoteIface * iface) {
	static gboolean initialized = FALSE;
	if (!initialized) {
		initialized = TRUE;
	}
}


GType budgie_panel_remote_get_type (void) {
	static volatile gsize budgie_panel_remote_type_id__volatile = 0;
	if (g_once_init_enter (&budgie_panel_remote_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (BudgiePanelRemoteIface), (GBaseInitFunc) budgie_panel_remote_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
		GType budgie_panel_remote_type_id;
		budgie_panel_remote_type_id = g_type_register_static (G_TYPE_INTERFACE, "BudgiePanelRemote", &g_define_type_info, 0);
		g_type_interface_add_prerequisite (budgie_panel_remote_type_id, G_TYPE_OBJECT);
		g_type_set_qdata (budgie_panel_remote_type_id, g_quark_from_static_string ("vala-dbus-proxy-type"), (void*) budgie_panel_remote_proxy_get_type);
		g_type_set_qdata (budgie_panel_remote_type_id, g_quark_from_static_string ("vala-dbus-interface-name"), "com.solus_project.budgie.Panel");
		g_type_set_qdata (budgie_panel_remote_type_id, g_quark_from_static_string ("vala-dbus-interface-info"), (void*) (&_budgie_panel_remote_dbus_interface_info));
		g_type_set_qdata (budgie_panel_remote_type_id, g_quark_from_static_string ("vala-dbus-register-object"), (void*) budgie_panel_remote_register_object);
		g_once_init_leave (&budgie_panel_remote_type_id__volatile, budgie_panel_remote_type_id);
	}
	return budgie_panel_remote_type_id__volatile;
}


G_DEFINE_TYPE_EXTENDED (BudgiePanelRemoteProxy, budgie_panel_remote_proxy, G_TYPE_DBUS_PROXY, 0, G_IMPLEMENT_INTERFACE (BUDGIE_TYPE_PANEL_REMOTE, budgie_panel_remote_proxy_budgie_panel_remote_interface_init) )
static void budgie_panel_remote_proxy_class_init (BudgiePanelRemoteProxyClass* klass) {
	G_DBUS_PROXY_CLASS (klass)->g_signal = budgie_panel_remote_proxy_g_signal;
}


static void budgie_panel_remote_proxy_g_signal (GDBusProxy* proxy, const gchar* sender_name, const gchar* signal_name, GVariant* parameters) {
}


static void budgie_panel_remote_proxy_init (BudgiePanelRemoteProxy* self) {
}


static void budgie_panel_remote_proxy_ActivateAction_async (BudgiePanelRemote* self, gint flags, GAsyncReadyCallback _callback_, gpointer _user_data_) {
	GDBusMessage *_message;
	GVariant *_arguments;
	GVariantBuilder _arguments_builder;
	_message = g_dbus_message_new_method_call (g_dbus_proxy_get_name ((GDBusProxy *) self), g_dbus_proxy_get_object_path ((GDBusProxy *) self), "com.solus_project.budgie.Panel", "ActivateAction");
	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
	g_variant_builder_add_value (&_arguments_builder, g_variant_new_int32 (flags));
	_arguments = g_variant_builder_end (&_arguments_builder);
	g_dbus_message_set_body (_message, _arguments);
	g_dbus_connection_send_message_with_reply (g_dbus_proxy_get_connection ((GDBusProxy *) self), _message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, g_dbus_proxy_get_default_timeout ((GDBusProxy *) self), NULL, NULL, _vala_g_async_ready_callback, g_simple_async_result_new ((GObject *) self, _callback_, _user_data_, NULL));
	g_object_unref (_message);
}


static void budgie_panel_remote_proxy_ActivateAction_finish (BudgiePanelRemote* self, GAsyncResult* _res_, GError** error) {
	GDBusMessage *_reply_message;
	_reply_message = g_dbus_connection_send_message_with_reply_finish (g_dbus_proxy_get_connection ((GDBusProxy *) self), g_simple_async_result_get_op_res_gpointer ((GSimpleAsyncResult *) _res_), error);
	if (!_reply_message) {
		return;
	}
	if (g_dbus_message_to_gerror (_reply_message, error)) {
		g_object_unref (_reply_message);
		return;
	}
	g_object_unref (_reply_message);
}


static void budgie_panel_remote_proxy_budgie_panel_remote_interface_init (BudgiePanelRemoteIface* iface) {
	iface->ActivateAction = budgie_panel_remote_proxy_ActivateAction_async;
	iface->ActivateAction_finish = budgie_panel_remote_proxy_ActivateAction_finish;
}


static void _dbus_budgie_panel_remote_ActivateAction (BudgiePanelRemote* self, GVariant* _parameters_, GDBusMethodInvocation* invocation) {
	GVariantIter _arguments_iter;
	gint flags = 0;
	GVariant* _tmp50_;
	g_variant_iter_init (&_arguments_iter, _parameters_);
	_tmp50_ = g_variant_iter_next_value (&_arguments_iter);
	flags = g_variant_get_int32 (_tmp50_);
	g_variant_unref (_tmp50_);
	budgie_panel_remote_ActivateAction (self, flags, (GAsyncReadyCallback) _dbus_budgie_panel_remote_ActivateAction_ready, invocation);
}


static void _dbus_budgie_panel_remote_ActivateAction_ready (GObject * source_object, GAsyncResult * _res_, gpointer _user_data_) {
	GDBusMethodInvocation * invocation;
	GError* error = NULL;
	GDBusMessage* _reply_message;
	GVariant* _reply;
	GVariantBuilder _reply_builder;
	invocation = _user_data_;
	budgie_panel_remote_ActivateAction_finish ((BudgiePanelRemote*) source_object, _res_, &error);
	if (error) {
		g_dbus_method_invocation_return_gerror (invocation, error);
		return;
	}
	_reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation));
	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
	_reply = g_variant_builder_end (&_reply_builder);
	g_dbus_message_set_body (_reply_message, _reply);
	g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
	g_object_unref (invocation);
	g_object_unref (_reply_message);
}


static void budgie_panel_remote_dbus_interface_method_call (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* method_name, GVariant* parameters, GDBusMethodInvocation* invocation, gpointer user_data) {
	gpointer* data;
	gpointer object;
	data = user_data;
	object = data[0];
	if (strcmp (method_name, "ActivateAction") == 0) {
		_dbus_budgie_panel_remote_ActivateAction (object, parameters, invocation);
	} else {
		g_object_unref (invocation);
	}
}


static GVariant* budgie_panel_remote_dbus_interface_get_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GError** error, gpointer user_data) {
	gpointer* data;
	gpointer object;
	data = user_data;
	object = data[0];
	return NULL;
}


static gboolean budgie_panel_remote_dbus_interface_set_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GVariant* value, GError** error, gpointer user_data) {
	gpointer* data;
	gpointer object;
	data = user_data;
	object = data[0];
	return FALSE;
}


guint budgie_panel_remote_register_object (gpointer object, GDBusConnection* connection, const gchar* path, GError** error) {
	guint result;
	gpointer *data;
	data = g_new (gpointer, 3);
	data[0] = g_object_ref (object);
	data[1] = g_object_ref (connection);
	data[2] = g_strdup (path);
	result = g_dbus_connection_register_object (connection, path, (GDBusInterfaceInfo *) (&_budgie_panel_remote_dbus_interface_info), &_budgie_panel_remote_dbus_interface_vtable, data, _budgie_panel_remote_unregister_object, error);
	if (!result) {
		return 0;
	}
	return result;
}


static void _budgie_panel_remote_unregister_object (gpointer user_data) {
	gpointer* data;
	data = user_data;
	g_object_unref (data[0]);
	g_object_unref (data[1]);
	g_free (data[2]);
	g_free (data);
}


static void budgie_login_dremote_base_init (BudgieLoginDRemoteIface * iface) {
	static gboolean initialized = FALSE;
	if (!initialized) {
		initialized = TRUE;
		g_signal_new ("prepare_for_sleep", BUDGIE_TYPE_LOGIN_DREMOTE, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__BOOLEAN, G_TYPE_NONE, 1, G_TYPE_BOOLEAN);
	}
}


GType budgie_login_dremote_get_type (void) {
	static volatile gsize budgie_login_dremote_type_id__volatile = 0;
	if (g_once_init_enter (&budgie_login_dremote_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (BudgieLoginDRemoteIface), (GBaseInitFunc) budgie_login_dremote_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) NULL, (GClassFinalizeFunc) NULL, NULL, 0, 0, (GInstanceInitFunc) NULL, NULL };
		GType budgie_login_dremote_type_id;
		budgie_login_dremote_type_id = g_type_register_static (G_TYPE_INTERFACE, "BudgieLoginDRemote", &g_define_type_info, 0);
		g_type_interface_add_prerequisite (budgie_login_dremote_type_id, G_TYPE_OBJECT);
		g_type_set_qdata (budgie_login_dremote_type_id, g_quark_from_static_string ("vala-dbus-proxy-type"), (void*) budgie_login_dremote_proxy_get_type);
		g_type_set_qdata (budgie_login_dremote_type_id, g_quark_from_static_string ("vala-dbus-interface-name"), "org.freedesktop.login1.Manager");
		g_type_set_qdata (budgie_login_dremote_type_id, g_quark_from_static_string ("vala-dbus-interface-info"), (void*) (&_budgie_login_dremote_dbus_interface_info));
		g_type_set_qdata (budgie_login_dremote_type_id, g_quark_from_static_string ("vala-dbus-register-object"), (void*) budgie_login_dremote_register_object);
		g_once_init_leave (&budgie_login_dremote_type_id__volatile, budgie_login_dremote_type_id);
	}
	return budgie_login_dremote_type_id__volatile;
}


G_DEFINE_TYPE_EXTENDED (BudgieLoginDRemoteProxy, budgie_login_dremote_proxy, G_TYPE_DBUS_PROXY, 0, G_IMPLEMENT_INTERFACE (BUDGIE_TYPE_LOGIN_DREMOTE, budgie_login_dremote_proxy_budgie_login_dremote_interface_init) )
static void budgie_login_dremote_proxy_class_init (BudgieLoginDRemoteProxyClass* klass) {
	G_DBUS_PROXY_CLASS (klass)->g_signal = budgie_login_dremote_proxy_g_signal;
}


static void _dbus_handle_budgie_login_dremote_prepare_for_sleep (BudgieLoginDRemote* self, GVariant* parameters) {
	GVariantIter _arguments_iter;
	gboolean suspending = FALSE;
	GVariant* _tmp51_;
	g_variant_iter_init (&_arguments_iter, parameters);
	_tmp51_ = g_variant_iter_next_value (&_arguments_iter);
	suspending = g_variant_get_boolean (_tmp51_);
	g_variant_unref (_tmp51_);
	g_signal_emit_by_name (self, "prepare-for-sleep", suspending);
}


static void budgie_login_dremote_proxy_g_signal (GDBusProxy* proxy, const gchar* sender_name, const gchar* signal_name, GVariant* parameters) {
	if (strcmp (signal_name, "PrepareForSleep") == 0) {
		_dbus_handle_budgie_login_dremote_prepare_for_sleep ((BudgieLoginDRemote*) proxy, parameters);
	}
}


static void budgie_login_dremote_proxy_init (BudgieLoginDRemoteProxy* self) {
}


static void budgie_login_dremote_proxy_budgie_login_dremote_interface_init (BudgieLoginDRemoteIface* iface) {
}


static void budgie_login_dremote_dbus_interface_method_call (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* method_name, GVariant* parameters, GDBusMethodInvocation* invocation, gpointer user_data) {
	gpointer* data;
	gpointer object;
	data = user_data;
	object = data[0];
	g_object_unref (invocation);
}


static GVariant* budgie_login_dremote_dbus_interface_get_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GError** error, gpointer user_data) {
	gpointer* data;
	gpointer object;
	data = user_data;
	object = data[0];
	return NULL;
}


static gboolean budgie_login_dremote_dbus_interface_set_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GVariant* value, GError** error, gpointer user_data) {
	gpointer* data;
	gpointer object;
	data = user_data;
	object = data[0];
	return FALSE;
}


static void _dbus_budgie_login_dremote_prepare_for_sleep (GObject* _sender, gboolean suspending, gpointer* _data) {
	GDBusConnection * _connection;
	const gchar * _path;
	GVariant *_arguments;
	GVariantBuilder _arguments_builder;
	_connection = _data[1];
	_path = _data[2];
	g_variant_builder_init (&_arguments_builder, G_VARIANT_TYPE_TUPLE);
	g_variant_builder_add_value (&_arguments_builder, g_variant_new_boolean (suspending));
	_arguments = g_variant_builder_end (&_arguments_builder);
	g_dbus_connection_emit_signal (_connection, NULL, _path, "org.freedesktop.login1.Manager", "PrepareForSleep", _arguments, NULL);
}


guint budgie_login_dremote_register_object (gpointer object, GDBusConnection* connection, const gchar* path, GError** error) {
	guint result;
	gpointer *data;
	data = g_new (gpointer, 3);
	data[0] = g_object_ref (object);
	data[1] = g_object_ref (connection);
	data[2] = g_strdup (path);
	result = g_dbus_connection_register_object (connection, path, (GDBusInterfaceInfo *) (&_budgie_login_dremote_dbus_interface_info), &_budgie_login_dremote_dbus_interface_vtable, data, _budgie_login_dremote_unregister_object, error);
	if (!result) {
		return 0;
	}
	g_signal_connect (object, "prepare-for-sleep", (GCallback) _dbus_budgie_login_dremote_prepare_for_sleep, data);
	return result;
}


static void _budgie_login_dremote_unregister_object (gpointer user_data) {
	gpointer* data;
	data = user_data;
	g_signal_handlers_disconnect_by_func (data[0], _dbus_budgie_login_dremote_prepare_for_sleep, data);
	g_object_unref (data[0]);
	g_object_unref (data[1]);
	g_free (data[2]);
	g_free (data);
}


BudgieMinimizeData* budgie_minimize_data_construct (GType object_type) {
	BudgieMinimizeData* self = NULL;
	self = (BudgieMinimizeData*) g_type_create_instance (object_type);
	return self;
}


BudgieMinimizeData* budgie_minimize_data_new (void) {
	return budgie_minimize_data_construct (BUDGIE_TYPE_MINIMIZE_DATA);
}


static void budgie_value_minimize_data_init (GValue* value) {
	value->data[0].v_pointer = NULL;
}


static void budgie_value_minimize_data_free_value (GValue* value) {
	if (value->data[0].v_pointer) {
		budgie_minimize_data_unref (value->data[0].v_pointer);
	}
}


static void budgie_value_minimize_data_copy_value (const GValue* src_value, GValue* dest_value) {
	if (src_value->data[0].v_pointer) {
		dest_value->data[0].v_pointer = budgie_minimize_data_ref (src_value->data[0].v_pointer);
	} else {
		dest_value->data[0].v_pointer = NULL;
	}
}


static gpointer budgie_value_minimize_data_peek_pointer (const GValue* value) {
	return value->data[0].v_pointer;
}


static gchar* budgie_value_minimize_data_collect_value (GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
	if (collect_values[0].v_pointer) {
		BudgieMinimizeData* object;
		object = collect_values[0].v_pointer;
		if (object->parent_instance.g_class == NULL) {
			return g_strconcat ("invalid unclassed object pointer for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		} else if (!g_value_type_compatible (G_TYPE_FROM_INSTANCE (object), G_VALUE_TYPE (value))) {
			return g_strconcat ("invalid object type `", g_type_name (G_TYPE_FROM_INSTANCE (object)), "' for value type `", G_VALUE_TYPE_NAME (value), "'", NULL);
		}
		value->data[0].v_pointer = budgie_minimize_data_ref (object);
	} else {
		value->data[0].v_pointer = NULL;
	}
	return NULL;
}


static gchar* budgie_value_minimize_data_lcopy_value (const GValue* value, guint n_collect_values, GTypeCValue* collect_values, guint collect_flags) {
	BudgieMinimizeData** object_p;
	object_p = collect_values[0].v_pointer;
	if (!object_p) {
		return g_strdup_printf ("value location for `%s' passed as NULL", G_VALUE_TYPE_NAME (value));
	}
	if (!value->data[0].v_pointer) {
		*object_p = NULL;
	} else if (collect_flags & G_VALUE_NOCOPY_CONTENTS) {
		*object_p = value->data[0].v_pointer;
	} else {
		*object_p = budgie_minimize_data_ref (value->data[0].v_pointer);
	}
	return NULL;
}


GParamSpec* budgie_param_spec_minimize_data (const gchar* name, const gchar* nick, const gchar* blurb, GType object_type, GParamFlags flags) {
	BudgieParamSpecMinimizeData* spec;
	g_return_val_if_fail (g_type_is_a (object_type, BUDGIE_TYPE_MINIMIZE_DATA), NULL);
	spec = g_param_spec_internal (G_TYPE_PARAM_OBJECT, name, nick, blurb, flags);
	G_PARAM_SPEC (spec)->value_type = object_type;
	return G_PARAM_SPEC (spec);
}


gpointer budgie_value_get_minimize_data (const GValue* value) {
	g_return_val_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, BUDGIE_TYPE_MINIMIZE_DATA), NULL);
	return value->data[0].v_pointer;
}


void budgie_value_set_minimize_data (GValue* value, gpointer v_object) {
	BudgieMinimizeData* old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, BUDGIE_TYPE_MINIMIZE_DATA));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, BUDGIE_TYPE_MINIMIZE_DATA));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
		budgie_minimize_data_ref (value->data[0].v_pointer);
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		budgie_minimize_data_unref (old);
	}
}


void budgie_value_take_minimize_data (GValue* value, gpointer v_object) {
	BudgieMinimizeData* old;
	g_return_if_fail (G_TYPE_CHECK_VALUE_TYPE (value, BUDGIE_TYPE_MINIMIZE_DATA));
	old = value->data[0].v_pointer;
	if (v_object) {
		g_return_if_fail (G_TYPE_CHECK_INSTANCE_TYPE (v_object, BUDGIE_TYPE_MINIMIZE_DATA));
		g_return_if_fail (g_value_type_compatible (G_TYPE_FROM_INSTANCE (v_object), G_VALUE_TYPE (value)));
		value->data[0].v_pointer = v_object;
	} else {
		value->data[0].v_pointer = NULL;
	}
	if (old) {
		budgie_minimize_data_unref (old);
	}
}


static void budgie_minimize_data_class_init (BudgieMinimizeDataClass * klass) {
	budgie_minimize_data_parent_class = g_type_class_peek_parent (klass);
	((BudgieMinimizeDataClass *) klass)->finalize = budgie_minimize_data_finalize;
}


static void budgie_minimize_data_instance_init (BudgieMinimizeData * self) {
	self->ref_count = 1;
}


static void budgie_minimize_data_finalize (BudgieMinimizeData* obj) {
	BudgieMinimizeData * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, BUDGIE_TYPE_MINIMIZE_DATA, BudgieMinimizeData);
	g_signal_handlers_destroy (self);
}


GType budgie_minimize_data_get_type (void) {
	static volatile gsize budgie_minimize_data_type_id__volatile = 0;
	if (g_once_init_enter (&budgie_minimize_data_type_id__volatile)) {
		static const GTypeValueTable g_define_type_value_table = { budgie_value_minimize_data_init, budgie_value_minimize_data_free_value, budgie_value_minimize_data_copy_value, budgie_value_minimize_data_peek_pointer, "p", budgie_value_minimize_data_collect_value, "p", budgie_value_minimize_data_lcopy_value };
		static const GTypeInfo g_define_type_info = { sizeof (BudgieMinimizeDataClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) budgie_minimize_data_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (BudgieMinimizeData), 0, (GInstanceInitFunc) budgie_minimize_data_instance_init, &g_define_type_value_table };
		static const GTypeFundamentalInfo g_define_type_fundamental_info = { (G_TYPE_FLAG_CLASSED | G_TYPE_FLAG_INSTANTIATABLE | G_TYPE_FLAG_DERIVABLE | G_TYPE_FLAG_DEEP_DERIVABLE) };
		GType budgie_minimize_data_type_id;
		budgie_minimize_data_type_id = g_type_register_fundamental (g_type_fundamental_next (), "BudgieMinimizeData", &g_define_type_info, &g_define_type_fundamental_info, 0);
		g_once_init_leave (&budgie_minimize_data_type_id__volatile, budgie_minimize_data_type_id);
	}
	return budgie_minimize_data_type_id__volatile;
}


gpointer budgie_minimize_data_ref (gpointer instance) {
	BudgieMinimizeData* self;
	self = instance;
	g_atomic_int_inc (&self->ref_count);
	return instance;
}


void budgie_minimize_data_unref (gpointer instance) {
	BudgieMinimizeData* self;
	self = instance;
	if (g_atomic_int_dec_and_test (&self->ref_count)) {
		BUDGIE_MINIMIZE_DATA_GET_CLASS (self)->finalize (self);
		g_type_free_instance ((GTypeInstance *) self);
	}
}


static gboolean budgie_budgie_wm_have_logind (BudgieBudgieWM* self) {
	gboolean result = FALSE;
	gboolean _tmp0_ = FALSE;
	g_return_val_if_fail (self != NULL, FALSE);
	_tmp0_ = g_file_test ("/run/systemd/seats", G_FILE_TEST_EXISTS);
	result = _tmp0_;
	return result;
}


static void budgie_budgie_wm_on_raven_get (BudgieBudgieWM* self, GObject* o, GAsyncResult* res) {
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	{
		BudgieRavenRemote* _tmp0_ = NULL;
		GAsyncResult* _tmp1_ = NULL;
		BudgieRavenRemote* _tmp2_ = NULL;
		BudgieRavenRemote* _tmp3_ = NULL;
		BudgieRavenRemote* _tmp4_ = NULL;
		_tmp1_ = res;
		_tmp2_ = g_async_result_get_source_object (_tmp1_);
		_tmp3_ = g_async_initable_new_finish (_tmp2_, _tmp1_, &_inner_error_);
		g_object_unref (_tmp2_);
		_tmp0_ = (BudgieRavenRemote*) _tmp3_;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			goto __catch9_g_error;
		}
		_tmp4_ = _tmp0_;
		_tmp0_ = NULL;
		_g_object_unref0 (self->priv->raven_proxy);
		self->priv->raven_proxy = _tmp4_;
		_g_object_unref0 (_tmp0_);
	}
	goto __finally9;
	__catch9_g_error:
	{
		GError* e = NULL;
		GError* _tmp5_ = NULL;
		const gchar* _tmp6_ = NULL;
		e = _inner_error_;
		_inner_error_ = NULL;
		_tmp5_ = e;
		_tmp6_ = _tmp5_->message;
		g_warning ("wm.vala:153: Failed to gain Raven proxy: %s", _tmp6_);
		_g_error_free0 (e);
	}
	__finally9:
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
		g_clear_error (&_inner_error_);
		return;
	}
}


static void budgie_budgie_wm_on_panel_get (BudgieBudgieWM* self, GObject* o, GAsyncResult* res) {
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	{
		BudgiePanelRemote* _tmp0_ = NULL;
		GAsyncResult* _tmp1_ = NULL;
		BudgiePanelRemote* _tmp2_ = NULL;
		BudgiePanelRemote* _tmp3_ = NULL;
		BudgiePanelRemote* _tmp4_ = NULL;
		_tmp1_ = res;
		_tmp2_ = g_async_result_get_source_object (_tmp1_);
		_tmp3_ = g_async_initable_new_finish (_tmp2_, _tmp1_, &_inner_error_);
		g_object_unref (_tmp2_);
		_tmp0_ = (BudgiePanelRemote*) _tmp3_;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			goto __catch10_g_error;
		}
		_tmp4_ = _tmp0_;
		_tmp0_ = NULL;
		_g_object_unref0 (self->priv->panel_proxy);
		self->priv->panel_proxy = _tmp4_;
		_g_object_unref0 (_tmp0_);
	}
	goto __finally10;
	__catch10_g_error:
	{
		GError* e = NULL;
		GError* _tmp5_ = NULL;
		const gchar* _tmp6_ = NULL;
		e = _inner_error_;
		_inner_error_ = NULL;
		_tmp5_ = e;
		_tmp6_ = _tmp5_->message;
		g_warning ("wm.vala:163: Failed to get Panel proxy: %s", _tmp6_);
		_g_error_free0 (e);
	}
	__finally10:
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
		g_clear_error (&_inner_error_);
		return;
	}
}


static void budgie_budgie_wm_lost_panel (BudgieBudgieWM* self) {
	g_return_if_fail (self != NULL);
	_g_object_unref0 (self->priv->panel_proxy);
	self->priv->panel_proxy = NULL;
}


static void _budgie_budgie_wm_on_panel_get_gasync_ready_callback (GObject* source_object, GAsyncResult* res, gpointer self) {
	budgie_budgie_wm_on_panel_get ((BudgieBudgieWM*) self, source_object, res);
	g_object_unref (self);
}


static void budgie_budgie_wm_has_panel (BudgieBudgieWM* self) {
	BudgiePanelRemote* _tmp0_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->panel_proxy;
	if (_tmp0_ == NULL) {
		g_async_initable_new_async (BUDGIE_TYPE_PANEL_REMOTE_PROXY, 0, NULL, _budgie_budgie_wm_on_panel_get_gasync_ready_callback, g_object_ref (self), "g-flags", 0, "g-name", BUDGIE_PANEL_DBUS_NAME, "g-bus-type", G_BUS_TYPE_SESSION, "g-object-path", BUDGIE_PANEL_DBUS_OBJECT_PATH, "g-interface-name", "com.solus_project.budgie.Panel", "g-interface-info", g_type_get_qdata (BUDGIE_TYPE_PANEL_REMOTE, g_quark_from_static_string ("vala-dbus-interface-info")), NULL);
	}
}


static void _budgie_budgie_wm_prepare_for_sleep_budgie_login_dremote_prepare_for_sleep (BudgieLoginDRemote* _sender, gboolean suspending, gpointer self) {
	budgie_budgie_wm_prepare_for_sleep ((BudgieBudgieWM*) self, suspending);
}


static void budgie_budgie_wm_on_logind_get (BudgieBudgieWM* self, GObject* o, GAsyncResult* res) {
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	{
		BudgieLoginDRemote* _tmp0_ = NULL;
		GAsyncResult* _tmp1_ = NULL;
		BudgieLoginDRemote* _tmp2_ = NULL;
		BudgieLoginDRemote* _tmp3_ = NULL;
		BudgieLoginDRemote* _tmp4_ = NULL;
		BudgieLoginDRemote* _tmp5_ = NULL;
		gboolean _tmp6_ = FALSE;
		_tmp1_ = res;
		_tmp2_ = g_async_result_get_source_object (_tmp1_);
		_tmp3_ = g_async_initable_new_finish (_tmp2_, _tmp1_, &_inner_error_);
		g_object_unref (_tmp2_);
		_tmp0_ = (BudgieLoginDRemote*) _tmp3_;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			goto __catch11_g_error;
		}
		_tmp4_ = _tmp0_;
		_tmp0_ = NULL;
		_g_object_unref0 (self->priv->logind_proxy);
		self->priv->logind_proxy = _tmp4_;
		_tmp5_ = self->priv->logind_proxy;
		if (_tmp5_ == NULL) {
			_g_object_unref0 (_tmp0_);
			return;
		}
		_tmp6_ = budgie_budgie_wm_is_nvidia (self);
		if (_tmp6_) {
			BudgieLoginDRemote* _tmp7_ = NULL;
			_tmp7_ = self->priv->logind_proxy;
			g_signal_connect_object (_tmp7_, "prepare-for-sleep", (GCallback) _budgie_budgie_wm_prepare_for_sleep_budgie_login_dremote_prepare_for_sleep, self, 0);
		}
		_g_object_unref0 (_tmp0_);
	}
	goto __finally11;
	__catch11_g_error:
	{
		GError* e = NULL;
		GError* _tmp8_ = NULL;
		const gchar* _tmp9_ = NULL;
		e = _inner_error_;
		_inner_error_ = NULL;
		_tmp8_ = e;
		_tmp9_ = _tmp8_->message;
		g_warning ("wm.vala:191: Failed to get LoginD proxy: %s", _tmp9_);
		_g_error_free0 (e);
	}
	__finally11:
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
		g_clear_error (&_inner_error_);
		return;
	}
}


static void budgie_budgie_wm_prepare_for_sleep (BudgieBudgieWM* self, gboolean suspending) {
	gboolean _tmp0_ = FALSE;
	g_return_if_fail (self != NULL);
	_tmp0_ = suspending;
	if (_tmp0_) {
		return;
	}
	meta_background_refresh_all ();
}


static void _budgie_budgie_wm_on_logind_get_gasync_ready_callback (GObject* source_object, GAsyncResult* res, gpointer self) {
	budgie_budgie_wm_on_logind_get ((BudgieBudgieWM*) self, source_object, res);
	g_object_unref (self);
}


static void budgie_budgie_wm_get_logind (BudgieBudgieWM* self) {
	BudgieLoginDRemote* _tmp0_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->logind_proxy;
	if (_tmp0_ == NULL) {
		g_async_initable_new_async (BUDGIE_TYPE_LOGIN_DREMOTE_PROXY, 0, NULL, _budgie_budgie_wm_on_logind_get_gasync_ready_callback, g_object_ref (self), "g-flags", 0, "g-name", BUDGIE_LOGIND_DBUS_NAME, "g-bus-type", G_BUS_TYPE_SYSTEM, "g-object-path", BUDGIE_LOGIND_DBUS_OBJECT_PATH, "g-interface-name", "org.freedesktop.login1.Manager", "g-interface-info", g_type_get_qdata (BUDGIE_TYPE_LOGIN_DREMOTE, g_quark_from_static_string ("vala-dbus-interface-info")), NULL);
	}
}


static void budgie_budgie_wm_on_raven_main_toggle (BudgieBudgieWM* self, MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding) {
	BudgieRavenRemote* _tmp0_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (display != NULL);
	g_return_if_fail (screen != NULL);
	g_return_if_fail (binding != NULL);
	_tmp0_ = self->priv->raven_proxy;
	if (_tmp0_ == NULL) {
		g_warning ("wm.vala:217: Raven does not appear to be running!");
		return;
	}
	{
		BudgieRavenRemote* _tmp1_ = NULL;
		_tmp1_ = self->priv->raven_proxy;
		budgie_raven_remote_ToggleAppletView (_tmp1_, NULL, NULL);
	}
	goto __finally12;
	__catch12_g_error:
	{
		GError* e = NULL;
		GError* _tmp2_ = NULL;
		const gchar* _tmp3_ = NULL;
		e = _inner_error_;
		_inner_error_ = NULL;
		_tmp2_ = e;
		_tmp3_ = _tmp2_->message;
		g_warning ("wm.vala:223: Unable to ToggleAppletView() Raven: %s", _tmp3_);
		_g_error_free0 (e);
	}
	__finally12:
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
		g_clear_error (&_inner_error_);
		return;
	}
}


static void budgie_budgie_wm_on_raven_notification_toggle (BudgieBudgieWM* self, MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding) {
	BudgieRavenRemote* _tmp0_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (display != NULL);
	g_return_if_fail (screen != NULL);
	g_return_if_fail (binding != NULL);
	_tmp0_ = self->priv->raven_proxy;
	if (_tmp0_ == NULL) {
		g_warning ("wm.vala:233: Raven does not appear to be running!");
		return;
	}
	{
		BudgieRavenRemote* _tmp1_ = NULL;
		_tmp1_ = self->priv->raven_proxy;
		budgie_raven_remote_ToggleNotificationsView (_tmp1_, NULL, NULL);
	}
	goto __finally13;
	__catch13_g_error:
	{
		GError* e = NULL;
		GError* _tmp2_ = NULL;
		const gchar* _tmp3_ = NULL;
		e = _inner_error_;
		_inner_error_ = NULL;
		_tmp2_ = e;
		_tmp3_ = _tmp2_->message;
		g_warning ("wm.vala:239: Unable to ToggleNotificationsView() Raven: %s", _tmp3_);
		_g_error_free0 (e);
	}
	__finally13:
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
		g_clear_error (&_inner_error_);
		return;
	}
}


static void _budgie_budgie_wm_on_raven_get_gasync_ready_callback (GObject* source_object, GAsyncResult* res, gpointer self) {
	budgie_budgie_wm_on_raven_get ((BudgieBudgieWM*) self, source_object, res);
	g_object_unref (self);
}


static void budgie_budgie_wm_has_raven (BudgieBudgieWM* self) {
	BudgieRavenRemote* _tmp0_ = NULL;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->raven_proxy;
	if (_tmp0_ == NULL) {
		g_async_initable_new_async (BUDGIE_TYPE_RAVEN_REMOTE_PROXY, 0, NULL, _budgie_budgie_wm_on_raven_get_gasync_ready_callback, g_object_ref (self), "g-flags", 0, "g-name", BUDGIE_RAVEN_DBUS_NAME, "g-bus-type", G_BUS_TYPE_SESSION, "g-object-path", BUDGIE_RAVEN_DBUS_OBJECT_PATH, "g-interface-name", "com.solus_project.budgie.Raven", "g-interface-info", g_type_get_qdata (BUDGIE_TYPE_RAVEN_REMOTE, g_quark_from_static_string ("vala-dbus-interface-info")), NULL);
	}
}


static void budgie_budgie_wm_lost_raven (BudgieBudgieWM* self) {
	g_return_if_fail (self != NULL);
	_g_object_unref0 (self->priv->raven_proxy);
	self->priv->raven_proxy = NULL;
}


static MetaPluginInfo* budgie_budgie_wm_real_plugin_info (MetaPlugin* base) {
	BudgieBudgieWM * self;
	MetaPluginInfo* result = NULL;
	MetaPluginInfo _tmp0_ = {0};
	self = (BudgieBudgieWM*) base;
	_tmp0_ = budgie_budgie_wm_info;
	result = &_tmp0_;
	return result;
}


static gboolean __lambda14_ (BudgieBudgieWM* self) {
	gboolean result = FALSE;
	GError * _inner_error_ = NULL;
	{
		BudgiePanelRemote* _tmp0_ = NULL;
		_tmp0_ = self->priv->panel_proxy;
		budgie_panel_remote_ActivateAction (_tmp0_, (gint) BUDGIE_PANEL_ACTION_MENU, NULL, NULL);
	}
	goto __finally14;
	__catch14_g_error:
	{
		GError* e = NULL;
		GError* _tmp1_ = NULL;
		const gchar* _tmp2_ = NULL;
		e = _inner_error_;
		_inner_error_ = NULL;
		_tmp1_ = e;
		_tmp2_ = _tmp1_->message;
		g_message ("wm.vala:270: Unable to ActivateAction for menu: %s", _tmp2_);
		_g_error_free0 (e);
	}
	__finally14:
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
		g_clear_error (&_inner_error_);
		return FALSE;
	}
	result = FALSE;
	return result;
}


static gboolean ___lambda14__gsource_func (gpointer self) {
	gboolean result;
	result = __lambda14_ ((BudgieBudgieWM*) self);
	return result;
}


static void budgie_budgie_wm_on_overlay_key (BudgieBudgieWM* self) {
	BudgiePanelRemote* _tmp0_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->panel_proxy;
	if (_tmp0_ == NULL) {
		return;
	}
	g_idle_add_full (G_PRIORITY_DEFAULT_IDLE, ___lambda14__gsource_func, g_object_ref (self), g_object_unref);
}


static void budgie_budgie_wm_launch_menu (BudgieBudgieWM* self, MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding) {
	g_return_if_fail (self != NULL);
	g_return_if_fail (display != NULL);
	g_return_if_fail (screen != NULL);
	g_return_if_fail (binding != NULL);
	budgie_budgie_wm_on_overlay_key (self);
}


static void budgie_budgie_wm_launch_rundialog (BudgieBudgieWM* self, MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding) {
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (display != NULL);
	g_return_if_fail (screen != NULL);
	g_return_if_fail (binding != NULL);
	{
		g_spawn_command_line_async ("budgie-run-dialog", &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			goto __catch15_g_error;
		}
	}
	goto __finally15;
	__catch15_g_error:
	{
		GError* e = NULL;
		e = _inner_error_;
		_inner_error_ = NULL;
		_g_error_free0 (e);
	}
	__finally15:
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
		g_clear_error (&_inner_error_);
		return;
	}
}


static void budgie_budgie_wm_on_dialog_closed (BudgieBudgieWM* self, GPid pid, gint status) {
	gboolean ok = FALSE;
	gboolean _tmp3_ = FALSE;
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	ok = FALSE;
	{
		gboolean _tmp0_ = FALSE;
		gint _tmp1_ = 0;
		gboolean _tmp2_ = FALSE;
		_tmp1_ = status;
		_tmp2_ = g_spawn_check_exit_status (_tmp1_, &_inner_error_);
		_tmp0_ = _tmp2_;
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			goto __catch16_g_error;
		}
		ok = _tmp0_;
	}
	goto __finally16;
	__catch16_g_error:
	{
		GError* e = NULL;
		e = _inner_error_;
		_inner_error_ = NULL;
		_g_error_free0 (e);
	}
	__finally16:
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
		g_clear_error (&_inner_error_);
		return;
	}
	_tmp3_ = ok;
	meta_plugin_complete_display_change ((MetaPlugin*) self, _tmp3_);
}


static void _budgie_budgie_wm_on_dialog_closed_gchild_watch_func (GPid pid, gint status, gpointer self) {
	budgie_budgie_wm_on_dialog_closed ((BudgieBudgieWM*) self, pid, status);
}


static void budgie_budgie_wm_real_confirm_display_change (MetaPlugin* base) {
	BudgieBudgieWM * self;
	GPid pid = 0;
	GPid _tmp0_ = 0;
	self = (BudgieBudgieWM*) base;
	_tmp0_ = meta_show_dialog ("--question", "Does the display look OK?", "20", NULL, "_Keep This Configuration", "_Restore Previous Configuration", "preferences-desktop-display", 0, NULL, NULL);
	pid = _tmp0_;
	g_child_watch_add_full (G_PRIORITY_DEFAULT_IDLE, pid, _budgie_budgie_wm_on_dialog_closed_gchild_watch_func, g_object_ref (self), g_object_unref);
}


static gboolean string_contains (const gchar* self, const gchar* needle) {
	gboolean result = FALSE;
	const gchar* _tmp0_ = NULL;
	gchar* _tmp1_ = NULL;
	g_return_val_if_fail (self != NULL, FALSE);
	g_return_val_if_fail (needle != NULL, FALSE);
	_tmp0_ = needle;
	_tmp1_ = strstr ((gchar*) self, (gchar*) _tmp0_);
	result = _tmp1_ != NULL;
	return result;
}


static gboolean budgie_budgie_wm_is_nvidia (BudgieBudgieWM* self) {
	gboolean result = FALSE;
	BudgieBudgieWMGlQueryFunc ptr = NULL;
	CoglFuncPtr _tmp0_ = NULL;
	void* ptr_target = NULL;
	GDestroyNotify ptr_target_destroy_notify = NULL;
	BudgieBudgieWMGlQueryFunc _tmp1_ = NULL;
	void* _tmp1__target = NULL;
	const gchar* ret = NULL;
	BudgieBudgieWMGlQueryFunc _tmp2_ = NULL;
	void* _tmp2__target = NULL;
	const gchar* _tmp3_ = NULL;
	gboolean _tmp4_ = FALSE;
	const gchar* _tmp5_ = NULL;
	g_return_val_if_fail (self != NULL, FALSE);
	_tmp0_ = cogl_get_proc_address ("glGetString");
	ptr = (BudgieBudgieWMGlQueryFunc) _tmp0_;
	ptr_target = NULL;
	ptr_target_destroy_notify = NULL;
	_tmp1_ = ptr;
	_tmp1__target = ptr_target;
	if (_tmp1_ == NULL) {
		result = FALSE;
		(ptr_target_destroy_notify == NULL) ? NULL : (ptr_target_destroy_notify (ptr_target), NULL);
		ptr = NULL;
		ptr_target = NULL;
		ptr_target_destroy_notify = NULL;
		return result;
	}
	_tmp2_ = ptr;
	_tmp2__target = ptr_target;
	_tmp3_ = _tmp2_ (BUDGIE_BUDGIE_WM_GL_VENDOR, _tmp2__target);
	ret = _tmp3_;
	_tmp5_ = ret;
	if (_tmp5_ != NULL) {
		const gchar* _tmp6_ = NULL;
		gboolean _tmp7_ = FALSE;
		_tmp6_ = ret;
		_tmp7_ = string_contains (_tmp6_, "NVIDIA Corporation");
		_tmp4_ = _tmp7_;
	} else {
		_tmp4_ = FALSE;
	}
	if (_tmp4_) {
		result = TRUE;
		(ptr_target_destroy_notify == NULL) ? NULL : (ptr_target_destroy_notify (ptr_target), NULL);
		ptr = NULL;
		ptr_target = NULL;
		ptr_target_destroy_notify = NULL;
		return result;
	}
	result = FALSE;
	(ptr_target_destroy_notify == NULL) ? NULL : (ptr_target_destroy_notify (ptr_target), NULL);
	ptr = NULL;
	ptr_target = NULL;
	ptr_target_destroy_notify = NULL;
	return result;
}


static gpointer _g_object_ref0 (gpointer self) {
	return self ? g_object_ref (self) : NULL;
}


static void _g_object_unref0_ (gpointer var) {
	(var == NULL) ? NULL : (var = (g_object_unref (var), NULL));
}


static void _g_free0_ (gpointer var) {
	(var == NULL) ? NULL : (var = (g_free (var), NULL));
}


static void _budgie_budgie_wm_on_wm_schema_changed_g_settings_changed (GSettings* _sender, const gchar* key, gpointer self) {
	budgie_budgie_wm_on_wm_schema_changed ((BudgieBudgieWM*) self, key);
}


static void _budgie_budgie_wm_on_raven_main_toggle_meta_key_handler_func (MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding, gpointer self) {
	budgie_budgie_wm_on_raven_main_toggle ((BudgieBudgieWM*) self, display, screen, window, event, binding);
}


static void _budgie_budgie_wm_on_raven_notification_toggle_meta_key_handler_func (MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding, gpointer self) {
	budgie_budgie_wm_on_raven_notification_toggle ((BudgieBudgieWM*) self, display, screen, window, event, binding);
}


static void _budgie_budgie_wm_on_overlay_key_meta_display_overlay_key (MetaDisplay* _sender, gpointer self) {
	budgie_budgie_wm_on_overlay_key ((BudgieBudgieWM*) self);
}


static void _budgie_budgie_wm_has_raven_gbus_name_appeared_callback (GDBusConnection* connection, const gchar* name, const gchar* name_owner, gpointer self) {
	budgie_budgie_wm_has_raven ((BudgieBudgieWM*) self);
}


static void _budgie_budgie_wm_lost_raven_gbus_name_vanished_callback (GDBusConnection* connection, const gchar* name, gpointer self) {
	budgie_budgie_wm_lost_raven ((BudgieBudgieWM*) self);
}


static void _budgie_budgie_wm_has_panel_gbus_name_appeared_callback (GDBusConnection* connection, const gchar* name, const gchar* name_owner, gpointer self) {
	budgie_budgie_wm_has_panel ((BudgieBudgieWM*) self);
}


static void _budgie_budgie_wm_lost_panel_gbus_name_vanished_callback (GDBusConnection* connection, const gchar* name, gpointer self) {
	budgie_budgie_wm_lost_panel ((BudgieBudgieWM*) self);
}


static void _budgie_budgie_wm_launch_menu_meta_key_handler_func (MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding, gpointer self) {
	budgie_budgie_wm_launch_menu ((BudgieBudgieWM*) self, display, screen, window, event, binding);
}


static void _budgie_budgie_wm_launch_rundialog_meta_key_handler_func (MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding, gpointer self) {
	budgie_budgie_wm_launch_rundialog ((BudgieBudgieWM*) self, display, screen, window, event, binding);
}


static void _budgie_budgie_wm_switch_windows_meta_key_handler_func (MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding, gpointer self) {
	budgie_budgie_wm_switch_windows ((BudgieBudgieWM*) self, display, screen, window, event, binding);
}


static void _budgie_budgie_wm_on_monitors_changed_meta_screen_monitors_changed (MetaScreen* _sender, gpointer self) {
	budgie_budgie_wm_on_monitors_changed ((BudgieBudgieWM*) self, _sender);
}


static void budgie_budgie_wm_real_start (MetaPlugin* base) {
	BudgieBudgieWM * self;
	MetaScreen* screen = NULL;
	MetaScreen* _tmp0_ = NULL;
	MetaScreen* _tmp1_ = NULL;
	ClutterActor* screen_group = NULL;
	MetaScreen* _tmp2_ = NULL;
	ClutterActor* _tmp3_ = NULL;
	ClutterActor* _tmp4_ = NULL;
	ClutterActor* stage = NULL;
	MetaScreen* _tmp5_ = NULL;
	ClutterActor* _tmp6_ = NULL;
	ClutterActor* _tmp7_ = NULL;
	MetaDisplay* display = NULL;
	MetaScreen* _tmp8_ = NULL;
	MetaDisplay* _tmp9_ = NULL;
	MetaDisplay* _tmp10_ = NULL;
	GHashFunc _tmp11_ = NULL;
	GEqualFunc _tmp12_ = NULL;
	GHashTable* _tmp13_ = NULL;
	gboolean _tmp14_ = FALSE;
	GSettings* _tmp19_ = NULL;
	GSettings* _tmp20_ = NULL;
	MetaDisplay* _tmp21_ = NULL;
	GSettings* _tmp22_ = NULL;
	MetaDisplay* _tmp23_ = NULL;
	GSettings* _tmp24_ = NULL;
	MetaDisplay* _tmp25_ = NULL;
	gboolean _tmp26_ = FALSE;
	BudgieShellShim* _tmp27_ = NULL;
	BudgieShellShim* _tmp28_ = NULL;
	BudgieBudgieWMDBUS* _tmp29_ = NULL;
	BudgieBudgieWMDBUS* _tmp30_ = NULL;
	MetaBackgroundGroup* _tmp31_ = NULL;
	MetaBackgroundGroup* _tmp32_ = NULL;
	ClutterActor* _tmp33_ = NULL;
	MetaBackgroundGroup* _tmp34_ = NULL;
	MetaScreen* _tmp35_ = NULL;
	MetaScreen* _tmp36_ = NULL;
	MetaBackgroundGroup* _tmp37_ = NULL;
	ClutterActor* _tmp38_ = NULL;
	ClutterActor* _tmp39_ = NULL;
	gboolean _tmp40_ = FALSE;
	gboolean _tmp41_ = FALSE;
	gboolean _tmp45_ = FALSE;
	BudgieKeyboardManager* _tmp46_ = NULL;
	BudgieKeyboardManager* _tmp47_ = NULL;
	self = (BudgieBudgieWM*) base;
	_tmp0_ = meta_plugin_get_screen ((MetaPlugin*) self);
	_tmp1_ = _g_object_ref0 (_tmp0_);
	screen = _tmp1_;
	_tmp2_ = screen;
	_tmp3_ = meta_get_window_group_for_screen (_tmp2_);
	_tmp4_ = _g_object_ref0 (_tmp3_);
	screen_group = _tmp4_;
	_tmp5_ = screen;
	_tmp6_ = meta_get_stage_for_screen (_tmp5_);
	_tmp7_ = _g_object_ref0 (_tmp6_);
	stage = _tmp7_;
	_tmp8_ = screen;
	_tmp9_ = meta_screen_get_display (_tmp8_);
	_tmp10_ = _g_object_ref0 (_tmp9_);
	display = _tmp10_;
	_tmp11_ = g_direct_hash;
	_tmp12_ = g_direct_equal;
	_tmp13_ = g_hash_table_new_full (_tmp11_, _tmp12_, _g_object_unref0_, _g_free0_);
	_g_hash_table_unref0 (self->priv->state_map);
	self->priv->state_map = _tmp13_;
	meta_prefs_override_preference_schema (BUDGIE_MUTTER_EDGE_TILING, BUDGIE_WM_SCHEMA);
	meta_prefs_override_preference_schema (BUDGIE_MUTTER_MODAL_ATTACH, BUDGIE_WM_SCHEMA);
	meta_prefs_override_preference_schema (BUDGIE_MUTTER_BUTTON_LAYOUT, BUDGIE_WM_SCHEMA);
	_tmp14_ = budgie_budgie_wm_gtk_available;
	if (_tmp14_) {
		GtkSettings* settings = NULL;
		GtkSettings* _tmp15_ = NULL;
		GtkSettings* _tmp16_ = NULL;
		GtkSettings* _tmp17_ = NULL;
		BudgieWindowMenu* _tmp18_ = NULL;
		_tmp15_ = gtk_settings_get_default ();
		_tmp16_ = _g_object_ref0 (_tmp15_);
		settings = _tmp16_;
		_tmp17_ = settings;
		g_object_bind_property_with_closures ((GObject*) _tmp17_, "gtk-enable-animations", (GObject*) self, "use-animations", G_BINDING_DEFAULT, (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, NULL)), (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, NULL)));
		_tmp18_ = budgie_window_menu_new ();
		g_object_ref_sink (_tmp18_);
		_g_object_unref0 (self->priv->winmenu);
		self->priv->winmenu = _tmp18_;
		_g_object_unref0 (settings);
	}
	_tmp19_ = g_settings_new (BUDGIE_WM_SCHEMA);
	_g_object_unref0 (self->priv->settings);
	self->priv->settings = _tmp19_;
	_tmp20_ = self->priv->settings;
	g_signal_connect_object (_tmp20_, "changed", (GCallback) _budgie_budgie_wm_on_wm_schema_changed_g_settings_changed, self, 0);
	budgie_budgie_wm_on_wm_schema_changed (self, BUDGIE_WM_FORCE_UNREDIRECT);
	_tmp21_ = display;
	_tmp22_ = self->priv->settings;
	meta_display_add_keybinding (_tmp21_, "toggle-raven", _tmp22_, META_KEY_BINDING_NONE, _budgie_budgie_wm_on_raven_main_toggle_meta_key_handler_func, g_object_ref (self), g_object_unref);
	_tmp23_ = display;
	_tmp24_ = self->priv->settings;
	meta_display_add_keybinding (_tmp23_, "toggle-notifications", _tmp24_, META_KEY_BINDING_NONE, _budgie_budgie_wm_on_raven_notification_toggle_meta_key_handler_func, g_object_ref (self), g_object_unref);
	_tmp25_ = display;
	g_signal_connect_object (_tmp25_, "overlay-key", (GCallback) _budgie_budgie_wm_on_overlay_key_meta_display_overlay_key, self, 0);
	g_bus_watch_name_with_closures (G_BUS_TYPE_SESSION, BUDGIE_RAVEN_DBUS_NAME, G_BUS_NAME_WATCHER_FLAGS_NONE, (GClosure*) ((_budgie_budgie_wm_has_raven_gbus_name_appeared_callback == NULL) ? NULL : g_cclosure_new ((GCallback) _budgie_budgie_wm_has_raven_gbus_name_appeared_callback, g_object_ref (self), g_object_unref)), (GClosure*) ((_budgie_budgie_wm_lost_raven_gbus_name_vanished_callback == NULL) ? NULL : g_cclosure_new ((GCallback) _budgie_budgie_wm_lost_raven_gbus_name_vanished_callback, g_object_ref (self), g_object_unref)));
	g_bus_watch_name_with_closures (G_BUS_TYPE_SESSION, BUDGIE_PANEL_DBUS_NAME, G_BUS_NAME_WATCHER_FLAGS_NONE, (GClosure*) ((_budgie_budgie_wm_has_panel_gbus_name_appeared_callback == NULL) ? NULL : g_cclosure_new ((GCallback) _budgie_budgie_wm_has_panel_gbus_name_appeared_callback, g_object_ref (self), g_object_unref)), (GClosure*) ((_budgie_budgie_wm_lost_panel_gbus_name_vanished_callback == NULL) ? NULL : g_cclosure_new ((GCallback) _budgie_budgie_wm_lost_panel_gbus_name_vanished_callback, g_object_ref (self), g_object_unref)));
	_tmp26_ = budgie_budgie_wm_have_logind (self);
	if (_tmp26_) {
		budgie_budgie_wm_get_logind (self);
	}
	meta_keybindings_set_custom_handler ("panel-main-menu", _budgie_budgie_wm_launch_menu_meta_key_handler_func, g_object_ref (self), g_object_unref);
	meta_keybindings_set_custom_handler ("panel-run-dialog", _budgie_budgie_wm_launch_rundialog_meta_key_handler_func, g_object_ref (self), g_object_unref);
	meta_keybindings_set_custom_handler ("switch-windows", _budgie_budgie_wm_switch_windows_meta_key_handler_func, g_object_ref (self), g_object_unref);
	meta_keybindings_set_custom_handler ("switch-applications", _budgie_budgie_wm_switch_windows_meta_key_handler_func, g_object_ref (self), g_object_unref);
	_tmp27_ = budgie_shell_shim_new (self);
	_g_object_unref0 (self->priv->shim);
	self->priv->shim = _tmp27_;
	_tmp28_ = self->priv->shim;
	budgie_shell_shim_serve (_tmp28_);
	_tmp29_ = budgie_budgie_wmdbus_new (self);
	_g_object_unref0 (self->priv->focus_interface);
	self->priv->focus_interface = _tmp29_;
	_tmp30_ = self->priv->focus_interface;
	budgie_budgie_wmdbus_serve (_tmp30_);
	_tmp31_ = (MetaBackgroundGroup*) meta_background_group_new ();
	g_object_ref_sink (_tmp31_);
	_g_object_unref0 (self->priv->background_group);
	self->priv->background_group = _tmp31_;
	_tmp32_ = self->priv->background_group;
	clutter_actor_set_reactive ((ClutterActor*) _tmp32_, TRUE);
	_tmp33_ = screen_group;
	_tmp34_ = self->priv->background_group;
	clutter_actor_insert_child_below (_tmp33_, (ClutterActor*) _tmp34_, NULL);
	_tmp35_ = screen;
	g_signal_connect_object (_tmp35_, "monitors-changed", (GCallback) _budgie_budgie_wm_on_monitors_changed_meta_screen_monitors_changed, self, 0);
	_tmp36_ = screen;
	budgie_budgie_wm_on_monitors_changed (self, _tmp36_);
	_tmp37_ = self->priv->background_group;
	clutter_actor_show ((ClutterActor*) _tmp37_);
	_tmp38_ = screen_group;
	clutter_actor_show (_tmp38_);
	_tmp39_ = stage;
	clutter_actor_show (_tmp39_);
	_tmp41_ = budgie_budgie_wm_wayland;
	if (_tmp41_) {
		gboolean _tmp42_ = FALSE;
		_tmp42_ = budgie_budgie_wm_gtk_available;
		_tmp40_ = !_tmp42_;
	} else {
		_tmp40_ = FALSE;
	}
	if (_tmp40_) {
		gchar** args = NULL;
		gchar** _tmp43_ = NULL;
		gint _tmp43__length1 = 0;
		gint args_length1 = 0;
		gint _args_size_ = 0;
		gboolean _tmp44_ = FALSE;
		_tmp43_ = budgie_budgie_wm_old_args;
		_tmp43__length1 = budgie_budgie_wm_old_args_length1;
		args = _tmp43_;
		args_length1 = _tmp43__length1;
		_args_size_ = args_length1;
		_tmp44_ = gtk_init_check (&args_length1, &args);
		if (_tmp44_) {
			budgie_budgie_wm_gtk_available = TRUE;
			g_message ("wm.vala:404: Got GTK+ now");
		} else {
			g_message ("wm.vala:406: Still no GTK+");
		}
	}
	_tmp45_ = budgie_budgie_wm_gtk_available;
	if (_tmp45_) {
		budgie_budgie_wm_init_menu (self);
	}
	_tmp46_ = budgie_keyboard_manager_new (self);
	_g_object_unref0 (self->priv->keyboard);
	self->priv->keyboard = _tmp46_;
	_tmp47_ = self->priv->keyboard;
	budgie_keyboard_manager_hook_extra (_tmp47_);
	_g_object_unref0 (display);
	_g_object_unref0 (stage);
	_g_object_unref0 (screen_group);
	_g_object_unref0 (screen);
}


static void budgie_budgie_wm_on_wm_schema_changed (BudgieBudgieWM* self, const gchar* key) {
	const gchar* _tmp0_ = NULL;
	gboolean enab = FALSE;
	GSettings* _tmp1_ = NULL;
	const gchar* _tmp2_ = NULL;
	gboolean _tmp3_ = FALSE;
	gboolean _tmp4_ = FALSE;
	gboolean _tmp5_ = FALSE;
	MetaScreen* screen = NULL;
	MetaScreen* _tmp6_ = NULL;
	MetaScreen* _tmp7_ = NULL;
	gboolean _tmp8_ = FALSE;
	gboolean _tmp11_ = FALSE;
	g_return_if_fail (self != NULL);
	g_return_if_fail (key != NULL);
	_tmp0_ = key;
	if (g_strcmp0 (_tmp0_, BUDGIE_WM_FORCE_UNREDIRECT) != 0) {
		return;
	}
	_tmp1_ = self->priv->settings;
	_tmp2_ = key;
	_tmp3_ = g_settings_get_boolean (_tmp1_, _tmp2_);
	enab = _tmp3_;
	_tmp4_ = enab;
	_tmp5_ = self->priv->force_unredirect;
	if (_tmp4_ == _tmp5_) {
		return;
	}
	_tmp6_ = meta_plugin_get_screen ((MetaPlugin*) self);
	_tmp7_ = _g_object_ref0 (_tmp6_);
	screen = _tmp7_;
	_tmp8_ = enab;
	if (_tmp8_) {
		MetaScreen* _tmp9_ = NULL;
		_tmp9_ = screen;
		meta_enable_unredirect_for_screen (_tmp9_);
	} else {
		MetaScreen* _tmp10_ = NULL;
		_tmp10_ = screen;
		meta_disable_unredirect_for_screen (_tmp10_);
	}
	_tmp11_ = enab;
	self->priv->force_unredirect = _tmp11_;
	_g_object_unref0 (screen);
}


static Block4Data* block4_data_ref (Block4Data* _data4_) {
	g_atomic_int_inc (&_data4_->_ref_count_);
	return _data4_;
}


static void block4_data_unref (void * _userdata_) {
	Block4Data* _data4_;
	_data4_ = (Block4Data*) _userdata_;
	if (g_atomic_int_dec_and_test (&_data4_->_ref_count_)) {
		BudgieBudgieWM* self;
		self = _data4_->self;
		_g_object_unref0 (_data4_->window);
		_g_object_unref0 (self);
		g_slice_free (Block4Data, _data4_);
	}
}


static gboolean __lambda15_ (Block4Data* _data4_) {
	BudgieBudgieWM* self;
	gboolean result = FALSE;
	BudgieWindowMenu* _tmp0_ = NULL;
	MetaWindow* _tmp1_ = NULL;
	BudgieWindowMenu* _tmp2_ = NULL;
	self = _data4_->self;
	_tmp0_ = self->priv->winmenu;
	_tmp1_ = _data4_->window;
	budgie_window_menu_set_meta_window (_tmp0_, _tmp1_);
	_tmp2_ = self->priv->winmenu;
	gtk_menu_popup ((GtkMenu*) _tmp2_, NULL, NULL, NULL, NULL, (guint) 3, (guint32) GDK_CURRENT_TIME);
	result = FALSE;
	return result;
}


static gboolean ___lambda15__gsource_func (gpointer self) {
	gboolean result;
	result = __lambda15_ (self);
	return result;
}


static void budgie_budgie_wm_real_show_window_menu (MetaPlugin* base, MetaWindow* window, MetaWindowMenuType type, gint x, gint y) {
	BudgieBudgieWM * self;
	Block4Data* _data4_;
	MetaWindow* _tmp0_ = NULL;
	MetaWindow* _tmp1_ = NULL;
	MetaWindowMenuType _tmp2_ = 0;
	BudgieWindowMenu* _tmp3_ = NULL;
	self = (BudgieBudgieWM*) base;
	g_return_if_fail (window != NULL);
	_data4_ = g_slice_new0 (Block4Data);
	_data4_->_ref_count_ = 1;
	_data4_->self = g_object_ref (self);
	_tmp0_ = window;
	_tmp1_ = _g_object_ref0 (_tmp0_);
	_g_object_unref0 (_data4_->window);
	_data4_->window = _tmp1_;
	_tmp2_ = type;
	if (_tmp2_ != META_WINDOW_MENU_WM) {
		block4_data_unref (_data4_);
		_data4_ = NULL;
		return;
	}
	_tmp3_ = self->priv->winmenu;
	if (_tmp3_ == NULL) {
		block4_data_unref (_data4_);
		_data4_ = NULL;
		return;
	}
	g_timeout_add_full (G_PRIORITY_DEFAULT, (guint) 100, ___lambda15__gsource_func, block4_data_ref (_data4_), block4_data_unref);
	block4_data_unref (_data4_);
	_data4_ = NULL;
}


static void budgie_budgie_wm_dismiss_raven (BudgieBudgieWM* self) {
	BudgieRavenRemote* _tmp0_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->raven_proxy;
	if (_tmp0_ != NULL) {
		BudgieRavenRemote* _tmp1_ = NULL;
		_tmp1_ = self->priv->raven_proxy;
		budgie_raven_remote_Dismiss (_tmp1_, NULL, NULL);
	}
}


static gboolean budgie_budgie_wm_on_button_release (BudgieBudgieWM* self, ClutterButtonEvent* event) {
	gboolean result = FALSE;
	ClutterButtonEvent* _tmp0_ = NULL;
	guint32 _tmp1_ = 0U;
	g_return_val_if_fail (self != NULL, FALSE);
	_tmp0_ = event;
	_tmp1_ = _tmp0_->button;
	if (_tmp1_ == ((guint32) 1)) {
		budgie_budgie_wm_dismiss_raven (self);
	} else {
		ClutterButtonEvent* _tmp2_ = NULL;
		guint32 _tmp3_ = 0U;
		_tmp2_ = event;
		_tmp3_ = _tmp2_->button;
		if (_tmp3_ == ((guint32) 3)) {
			GtkMenu* _tmp4_ = NULL;
			gboolean _tmp5_ = FALSE;
			_tmp4_ = self->priv->menu;
			_tmp5_ = gtk_widget_get_visible ((GtkWidget*) _tmp4_);
			if (_tmp5_) {
				GtkMenu* _tmp6_ = NULL;
				_tmp6_ = self->priv->menu;
				gtk_widget_hide ((GtkWidget*) _tmp6_);
			} else {
				GtkMenu* _tmp7_ = NULL;
				ClutterButtonEvent* _tmp8_ = NULL;
				guint32 _tmp9_ = 0U;
				ClutterButtonEvent* _tmp10_ = NULL;
				guint32 _tmp11_ = 0U;
				_tmp7_ = self->priv->menu;
				_tmp8_ = event;
				_tmp9_ = _tmp8_->button;
				_tmp10_ = event;
				_tmp11_ = _tmp10_->time;
				gtk_menu_popup (_tmp7_, NULL, NULL, NULL, NULL, (guint) _tmp9_, _tmp11_);
			}
		} else {
			result = BUDGIE_CLUTTER_EVENT_PROPAGATE;
			return result;
		}
	}
	result = BUDGIE_CLUTTER_EVENT_STOP;
	return result;
}


static void budgie_budgie_wm_on_monitors_changed (BudgieBudgieWM* self, MetaScreen* screen) {
	MetaBackgroundGroup* _tmp0_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->background_group;
	clutter_actor_destroy_all_children ((ClutterActor*) _tmp0_);
	{
		gint i = 0;
		i = 0;
		{
			gboolean _tmp1_ = FALSE;
			_tmp1_ = TRUE;
			while (TRUE) {
				gint _tmp3_ = 0;
				MetaScreen* _tmp4_ = NULL;
				gint _tmp5_ = 0;
				BudgieBudgieBackground* actor = NULL;
				MetaScreen* _tmp6_ = NULL;
				gint _tmp7_ = 0;
				BudgieBudgieBackground* _tmp8_ = NULL;
				MetaBackgroundGroup* _tmp9_ = NULL;
				BudgieBudgieBackground* _tmp10_ = NULL;
				if (!_tmp1_) {
					gint _tmp2_ = 0;
					_tmp2_ = i;
					i = _tmp2_ + 1;
				}
				_tmp1_ = FALSE;
				_tmp3_ = i;
				_tmp4_ = screen;
				_tmp5_ = meta_screen_get_n_monitors (_tmp4_);
				if (!(_tmp3_ < _tmp5_)) {
					break;
				}
				_tmp6_ = screen;
				_tmp7_ = i;
				_tmp8_ = budgie_budgie_background_new (_tmp6_, _tmp7_);
				g_object_ref_sink (_tmp8_);
				actor = _tmp8_;
				_tmp9_ = self->priv->background_group;
				_tmp10_ = actor;
				clutter_actor_add_child ((ClutterActor*) _tmp9_, (ClutterActor*) _tmp10_);
				_g_object_unref0 (actor);
			}
		}
	}
}


static void budgie_budgie_wm_background_activate (BudgieBudgieWM* self) {
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	{
		GDesktopAppInfo* info = NULL;
		GDesktopAppInfo* _tmp0_ = NULL;
		GDesktopAppInfo* _tmp1_ = NULL;
		_tmp0_ = g_desktop_app_info_new ("gnome-background-panel.desktop");
		info = _tmp0_;
		_tmp1_ = info;
		if (_tmp1_ != NULL) {
			GDesktopAppInfo* _tmp2_ = NULL;
			_tmp2_ = info;
			g_app_info_launch ((GAppInfo*) _tmp2_, NULL, NULL, &_inner_error_);
			if (G_UNLIKELY (_inner_error_ != NULL)) {
				_g_object_unref0 (info);
				goto __catch17_g_error;
			}
		}
		_g_object_unref0 (info);
	}
	goto __finally17;
	__catch17_g_error:
	{
		GError* e = NULL;
		GError* _tmp3_ = NULL;
		const gchar* _tmp4_ = NULL;
		e = _inner_error_;
		_inner_error_ = NULL;
		_tmp3_ = e;
		_tmp4_ = _tmp3_->message;
		g_warning ("wm.vala:499: Unable to launch gnome-background-panel.desktop: %s", _tmp4_);
		_g_error_free0 (e);
	}
	__finally17:
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
		g_clear_error (&_inner_error_);
		return;
	}
}


static void budgie_budgie_wm_settings_activate (BudgieBudgieWM* self) {
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	{
		GDesktopAppInfo* info = NULL;
		GDesktopAppInfo* _tmp0_ = NULL;
		GDesktopAppInfo* _tmp1_ = NULL;
		_tmp0_ = g_desktop_app_info_new ("gnome-control-center.desktop");
		info = _tmp0_;
		_tmp1_ = info;
		if (_tmp1_ != NULL) {
			GDesktopAppInfo* _tmp2_ = NULL;
			_tmp2_ = info;
			g_app_info_launch ((GAppInfo*) _tmp2_, NULL, NULL, &_inner_error_);
			if (G_UNLIKELY (_inner_error_ != NULL)) {
				_g_object_unref0 (info);
				goto __catch18_g_error;
			}
		}
		_g_object_unref0 (info);
	}
	goto __finally18;
	__catch18_g_error:
	{
		GError* e = NULL;
		GError* _tmp3_ = NULL;
		const gchar* _tmp4_ = NULL;
		e = _inner_error_;
		_inner_error_ = NULL;
		_tmp3_ = e;
		_tmp4_ = _tmp3_->message;
		g_warning ("wm.vala:511: Unable to launch gnome-control-center.desktop: %s", _tmp4_);
		_g_error_free0 (e);
	}
	__finally18:
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
		g_clear_error (&_inner_error_);
		return;
	}
}


static void _budgie_budgie_wm_background_activate_gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) {
	budgie_budgie_wm_background_activate ((BudgieBudgieWM*) self);
}


static void _budgie_budgie_wm_settings_activate_gtk_menu_item_activate (GtkMenuItem* _sender, gpointer self) {
	budgie_budgie_wm_settings_activate ((BudgieBudgieWM*) self);
}


static gboolean _budgie_budgie_wm_on_button_release_clutter_actor_button_release_event (ClutterActor* _sender, ClutterButtonEvent* event, gpointer self) {
	gboolean result;
	result = budgie_budgie_wm_on_button_release ((BudgieBudgieWM*) self, event);
	return result;
}


static void budgie_budgie_wm_init_menu (BudgieBudgieWM* self) {
	GtkMenu* _tmp0_ = NULL;
	GtkMenu* _tmp1_ = NULL;
	GtkMenuItem* item = NULL;
	const gchar* _tmp2_ = NULL;
	GtkMenuItem* _tmp3_ = NULL;
	GtkMenuItem* _tmp4_ = NULL;
	GtkMenuItem* _tmp5_ = NULL;
	GtkMenu* _tmp6_ = NULL;
	GtkMenuItem* _tmp7_ = NULL;
	GtkSeparatorMenuItem* sep = NULL;
	GtkSeparatorMenuItem* _tmp8_ = NULL;
	GtkMenu* _tmp9_ = NULL;
	const gchar* _tmp10_ = NULL;
	GtkMenuItem* _tmp11_ = NULL;
	GtkMenuItem* _tmp12_ = NULL;
	GtkMenuItem* _tmp13_ = NULL;
	GtkMenu* _tmp14_ = NULL;
	GtkMenuItem* _tmp15_ = NULL;
	MetaBackgroundGroup* _tmp16_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = (GtkMenu*) gtk_menu_new ();
	g_object_ref_sink (_tmp0_);
	_g_object_unref0 (self->priv->menu);
	self->priv->menu = _tmp0_;
	_tmp1_ = self->priv->menu;
	gtk_widget_show ((GtkWidget*) _tmp1_);
	_tmp2_ = _ ("Change background");
	_tmp3_ = (GtkMenuItem*) gtk_menu_item_new_with_label (_tmp2_);
	g_object_ref_sink (_tmp3_);
	item = _tmp3_;
	_tmp4_ = item;
	g_signal_connect_object (_tmp4_, "activate", (GCallback) _budgie_budgie_wm_background_activate_gtk_menu_item_activate, self, 0);
	_tmp5_ = item;
	gtk_widget_show ((GtkWidget*) _tmp5_);
	_tmp6_ = self->priv->menu;
	_tmp7_ = item;
	gtk_menu_shell_append ((GtkMenuShell*) _tmp6_, (GtkWidget*) _tmp7_);
	_tmp8_ = (GtkSeparatorMenuItem*) gtk_separator_menu_item_new ();
	g_object_ref_sink (_tmp8_);
	sep = _tmp8_;
	gtk_widget_show ((GtkWidget*) sep);
	_tmp9_ = self->priv->menu;
	gtk_menu_shell_append ((GtkMenuShell*) _tmp9_, (GtkWidget*) ((GtkMenuItem*) sep));
	_tmp10_ = _ ("Settings");
	_tmp11_ = (GtkMenuItem*) gtk_menu_item_new_with_label (_tmp10_);
	g_object_ref_sink (_tmp11_);
	_g_object_unref0 (item);
	item = _tmp11_;
	_tmp12_ = item;
	g_signal_connect_object (_tmp12_, "activate", (GCallback) _budgie_budgie_wm_settings_activate_gtk_menu_item_activate, self, 0);
	_tmp13_ = item;
	gtk_widget_show ((GtkWidget*) _tmp13_);
	_tmp14_ = self->priv->menu;
	_tmp15_ = item;
	gtk_menu_shell_append ((GtkMenuShell*) _tmp14_, (GtkWidget*) _tmp15_);
	_tmp16_ = self->priv->background_group;
	g_signal_connect_object ((ClutterActor*) _tmp16_, "button-release-event", (GCallback) _budgie_budgie_wm_on_button_release_clutter_actor_button_release_event, self, 0);
	_g_object_unref0 (sep);
	_g_object_unref0 (item);
}


static void budgie_budgie_wm_finalize_animations (BudgieBudgieWM* self, MetaWindowActor* actor) {
	GHashTable* _tmp0_ = NULL;
	MetaWindowActor* _tmp1_ = NULL;
	gboolean _tmp2_ = FALSE;
	MetaWindowActor* _tmp3_ = NULL;
	BudgieAnimationState* state = NULL;
	GHashTable* _tmp4_ = NULL;
	MetaWindowActor* _tmp5_ = NULL;
	gconstpointer _tmp6_ = NULL;
	BudgieAnimationState* _tmp7_ = NULL;
	GHashTable* _tmp19_ = NULL;
	MetaWindowActor* _tmp20_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->state_map;
	_tmp1_ = actor;
	_tmp2_ = g_hash_table_contains (_tmp0_, _tmp1_);
	if (!_tmp2_) {
		return;
	}
	_tmp3_ = actor;
	clutter_actor_remove_all_transitions ((ClutterActor*) _tmp3_);
	_tmp4_ = self->priv->state_map;
	_tmp5_ = actor;
	_tmp6_ = g_hash_table_lookup (_tmp4_, _tmp5_);
	state = (BudgieAnimationState*) _tmp6_;
	_tmp7_ = state;
	switch (*_tmp7_) {
		case BUDGIE_ANIMATION_STATE_MAP:
		{
			MetaWindowActor* _tmp8_ = NULL;
			ClutterPoint* _tmp9_ = NULL;
			MetaWindowActor* _tmp10_ = NULL;
			_tmp8_ = actor;
			_tmp9_ = budgie_budgie_wm_PV_NORM;
			g_object_set ((GObject*) _tmp8_, "pivot-point", _tmp9_, "opacity", 255U, NULL);
			_tmp10_ = actor;
			meta_plugin_map_completed ((MetaPlugin*) self, _tmp10_);
			break;
		}
		case BUDGIE_ANIMATION_STATE_DESTROY:
		{
			MetaWindowActor* _tmp11_ = NULL;
			_tmp11_ = actor;
			meta_plugin_destroy_completed ((MetaPlugin*) self, _tmp11_);
			break;
		}
		case BUDGIE_ANIMATION_STATE_MINIMIZE:
		{
			MetaWindowActor* _tmp12_ = NULL;
			ClutterPoint* _tmp13_ = NULL;
			MetaWindowActor* _tmp14_ = NULL;
			MetaWindowActor* _tmp15_ = NULL;
			_tmp12_ = actor;
			_tmp13_ = budgie_budgie_wm_PV_NORM;
			g_object_set ((GObject*) _tmp12_, "pivot-point", _tmp13_, "opacity", 255U, "scale-x", 1.0, "scale-y", 1.0, NULL);
			_tmp14_ = actor;
			clutter_actor_hide ((ClutterActor*) _tmp14_);
			_tmp15_ = actor;
			meta_plugin_minimize_completed ((MetaPlugin*) self, _tmp15_);
			break;
		}
		case BUDGIE_ANIMATION_STATE_UNMINIMIZE:
		{
			MetaWindowActor* _tmp16_ = NULL;
			ClutterPoint* _tmp17_ = NULL;
			MetaWindowActor* _tmp18_ = NULL;
			_tmp16_ = actor;
			_tmp17_ = budgie_budgie_wm_PV_NORM;
			g_object_set ((GObject*) _tmp16_, "pivot-point", _tmp17_, "opacity", 255U, "scale-x", 1.0, "scale-y", 1.0, NULL);
			_tmp18_ = actor;
			meta_plugin_unminimize_completed ((MetaPlugin*) self, _tmp18_);
			break;
		}
		default:
		{
			break;
		}
	}
	_tmp19_ = self->priv->state_map;
	_tmp20_ = actor;
	g_hash_table_remove (_tmp19_, _tmp20_);
}


static void budgie_budgie_wm_map_done (BudgieBudgieWM* self, ClutterActor* actor) {
	ClutterActor* _tmp0_ = NULL;
	ClutterActor* _tmp1_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = actor;
	g_signal_handlers_disconnect_by_func (_tmp0_, (void*) budgie_budgie_wm_map_done, self);
	_tmp1_ = actor;
	budgie_budgie_wm_finalize_animations (self, G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, meta_window_actor_get_type ()) ? ((MetaWindowActor*) _tmp1_) : NULL);
}


static void budgie_budgie_wm_notification_map_done (BudgieBudgieWM* self, ClutterActor* actor) {
	ClutterActor* _tmp0_ = NULL;
	ClutterActor* _tmp1_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = actor;
	g_signal_handlers_disconnect_by_func (_tmp0_, (void*) budgie_budgie_wm_notification_map_done, self);
	_tmp1_ = actor;
	budgie_budgie_wm_finalize_animations (self, G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, meta_window_actor_get_type ()) ? ((MetaWindowActor*) _tmp1_) : NULL);
}


/**
     * Store the focused window
     */
void budgie_budgie_wm_store_focused (BudgieBudgieWM* self) {
	MetaWorkspace* workspace = NULL;
	MetaScreen* _tmp0_ = NULL;
	MetaWorkspace* _tmp1_ = NULL;
	MetaWorkspace* _tmp2_ = NULL;
	MetaWorkspace* _tmp3_ = NULL;
	GList* _tmp4_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = meta_plugin_get_screen ((MetaPlugin*) self);
	_tmp1_ = meta_screen_get_active_workspace (_tmp0_);
	_tmp2_ = _g_object_ref0 (_tmp1_);
	workspace = _tmp2_;
	_tmp3_ = workspace;
	_tmp4_ = meta_workspace_list_windows (_tmp3_);
	{
		GList* window_collection = NULL;
		GList* window_it = NULL;
		window_collection = _tmp4_;
		for (window_it = window_collection; window_it != NULL; window_it = window_it->next) {
			MetaWindow* window = NULL;
			window = (MetaWindow*) window_it->data;
			{
				MetaWindow* _tmp5_ = NULL;
				gboolean _tmp6_ = FALSE;
				_tmp5_ = window;
				_tmp6_ = meta_window_has_focus (_tmp5_);
				if (_tmp6_) {
					MetaWindow* _tmp7_ = NULL;
					_tmp7_ = window;
					self->priv->focused_window = _tmp7_;
					break;
				}
			}
		}
		_g_list_free0 (window_collection);
	}
	_g_object_unref0 (workspace);
}


/**
     * Restore the focused window
     */
void budgie_budgie_wm_restore_focused (BudgieBudgieWM* self) {
	MetaWindow* _tmp0_ = NULL;
	MetaWindow* _tmp1_ = NULL;
	MetaScreen* _tmp2_ = NULL;
	MetaDisplay* _tmp3_ = NULL;
	guint32 _tmp4_ = 0U;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->focused_window;
	if (_tmp0_ == NULL) {
		return;
	}
	_tmp1_ = self->priv->focused_window;
	_tmp2_ = meta_plugin_get_screen ((MetaPlugin*) self);
	_tmp3_ = meta_screen_get_display (_tmp2_);
	_tmp4_ = meta_display_get_current_time (_tmp3_);
	meta_window_focus (_tmp1_, _tmp4_);
	self->priv->focused_window = NULL;
}


static void _budgie_budgie_wm_map_done_clutter_actor_transitions_completed (ClutterActor* _sender, gpointer self) {
	budgie_budgie_wm_map_done ((BudgieBudgieWM*) self, _sender);
}


static BudgieAnimationState* _budgie_animation_state_dup (BudgieAnimationState* self) {
	BudgieAnimationState* dup;
	dup = g_new0 (BudgieAnimationState, 1);
	memcpy (dup, self, sizeof (BudgieAnimationState));
	return dup;
}


static gpointer __budgie_animation_state_dup0 (gpointer self) {
	return self ? _budgie_animation_state_dup (self) : NULL;
}


static void budgie_budgie_wm_real_map (MetaPlugin* base, MetaWindowActor* actor) {
	BudgieBudgieWM * self;
	MetaWindow* window = NULL;
	MetaWindowActor* _tmp0_ = NULL;
	MetaWindow* _tmp1_ = NULL;
	MetaWindow* _tmp2_ = NULL;
	gboolean _tmp3_ = FALSE;
	MetaWindow* _tmp5_ = NULL;
	MetaWindowType _tmp6_ = 0;
	MetaWindowActor* _tmp29_ = NULL;
	GHashTable* _tmp30_ = NULL;
	MetaWindowActor* _tmp31_ = NULL;
	MetaWindowActor* _tmp32_ = NULL;
	BudgieAnimationState _tmp33_ = 0;
	BudgieAnimationState* _tmp34_ = NULL;
	MetaWindowActor* _tmp35_ = NULL;
	self = (BudgieBudgieWM*) base;
	g_return_if_fail (actor != NULL);
	_tmp0_ = actor;
	_tmp1_ = meta_window_actor_get_meta_window (_tmp0_);
	_tmp2_ = _g_object_ref0 (_tmp1_);
	window = _tmp2_;
	_tmp3_ = self->priv->_use_animations;
	if (!_tmp3_) {
		MetaWindowActor* _tmp4_ = NULL;
		_tmp4_ = actor;
		meta_plugin_map_completed ((MetaPlugin*) self, _tmp4_);
		_g_object_unref0 (window);
		return;
	}
	_tmp5_ = window;
	_tmp6_ = meta_window_get_window_type (_tmp5_);
	switch (_tmp6_) {
		case META_WINDOW_POPUP_MENU:
		case META_WINDOW_DROPDOWN_MENU:
		case META_WINDOW_MENU:
		{
			MetaWindowActor* _tmp7_ = NULL;
			ClutterPoint* _tmp8_ = NULL;
			MetaWindowActor* _tmp9_ = NULL;
			MetaWindowActor* _tmp10_ = NULL;
			MetaWindowActor* _tmp11_ = NULL;
			MetaWindowActor* _tmp12_ = NULL;
			MetaWindowActor* _tmp13_ = NULL;
			_tmp7_ = actor;
			_tmp8_ = budgie_budgie_wm_PV_CENTER;
			g_object_set ((GObject*) _tmp7_, "opacity", 0U, "scale-x", BUDGIE_BUDGIE_WM_MENU_MAP_SCALE_X, "scale-y", BUDGIE_BUDGIE_WM_MENU_MAP_SCALE_Y, "pivot-point", _tmp8_, NULL);
			_tmp9_ = actor;
			clutter_actor_show ((ClutterActor*) _tmp9_);
			_tmp10_ = actor;
			clutter_actor_save_easing_state ((ClutterActor*) _tmp10_);
			_tmp11_ = actor;
			clutter_actor_set_easing_mode ((ClutterActor*) _tmp11_, CLUTTER_EASE_OUT_CIRC);
			_tmp12_ = actor;
			clutter_actor_set_easing_duration ((ClutterActor*) _tmp12_, (guint) BUDGIE_BUDGIE_WM_MENU_MAP_TIMEOUT);
			_tmp13_ = actor;
			g_object_set ((GObject*) _tmp13_, "scale-x", 1.0, "scale-y", 1.0, "opacity", 255U, NULL);
			break;
			break;
		}
		case META_WINDOW_NOTIFICATION:
		{
			MetaWindowActor* _tmp14_ = NULL;
			ClutterPoint* _tmp15_ = NULL;
			MetaWindowActor* _tmp16_ = NULL;
			MetaWindowActor* _tmp17_ = NULL;
			MetaWindowActor* _tmp18_ = NULL;
			MetaWindowActor* _tmp19_ = NULL;
			MetaWindowActor* _tmp20_ = NULL;
			_tmp14_ = actor;
			_tmp15_ = budgie_budgie_wm_PV_CENTER;
			g_object_set ((GObject*) _tmp14_, "opacity", 0U, "scale-x", BUDGIE_BUDGIE_WM_NOTIFICATION_MAP_SCALE_X, "scale-y", BUDGIE_BUDGIE_WM_NOTIFICATION_MAP_SCALE_Y, "pivot-point", _tmp15_, NULL);
			_tmp16_ = actor;
			clutter_actor_show ((ClutterActor*) _tmp16_);
			_tmp17_ = actor;
			clutter_actor_save_easing_state ((ClutterActor*) _tmp17_);
			_tmp18_ = actor;
			clutter_actor_set_easing_mode ((ClutterActor*) _tmp18_, CLUTTER_EASE_OUT_QUART);
			_tmp19_ = actor;
			clutter_actor_set_easing_duration ((ClutterActor*) _tmp19_, (guint) BUDGIE_BUDGIE_WM_MAP_TIMEOUT);
			_tmp20_ = actor;
			g_object_set ((GObject*) _tmp20_, "scale-x", 1.0, "scale-y", 1.0, "opacity", 255U, NULL);
			break;
		}
		case META_WINDOW_NORMAL:
		case META_WINDOW_DIALOG:
		case META_WINDOW_MODAL_DIALOG:
		{
			MetaWindowActor* _tmp21_ = NULL;
			ClutterPoint* _tmp22_ = NULL;
			MetaWindowActor* _tmp23_ = NULL;
			MetaWindowActor* _tmp24_ = NULL;
			MetaWindowActor* _tmp25_ = NULL;
			MetaWindowActor* _tmp26_ = NULL;
			MetaWindowActor* _tmp27_ = NULL;
			_tmp21_ = actor;
			_tmp22_ = budgie_budgie_wm_PV_CENTER;
			g_object_set ((GObject*) _tmp21_, "opacity", 0U, "scale-x", BUDGIE_BUDGIE_WM_MAP_SCALE, "scale-y", BUDGIE_BUDGIE_WM_MAP_SCALE, "pivot-point", _tmp22_, NULL);
			_tmp23_ = actor;
			clutter_actor_show ((ClutterActor*) _tmp23_);
			_tmp24_ = actor;
			clutter_actor_save_easing_state ((ClutterActor*) _tmp24_);
			_tmp25_ = actor;
			clutter_actor_set_easing_mode ((ClutterActor*) _tmp25_, CLUTTER_EASE_OUT_CIRC);
			_tmp26_ = actor;
			clutter_actor_set_easing_duration ((ClutterActor*) _tmp26_, (guint) BUDGIE_BUDGIE_WM_MAP_TIMEOUT);
			_tmp27_ = actor;
			g_object_set ((GObject*) _tmp27_, "scale-x", 1.0, "scale-y", 1.0, "opacity", 255U, NULL);
			break;
		}
		default:
		{
			MetaWindowActor* _tmp28_ = NULL;
			_tmp28_ = actor;
			meta_plugin_map_completed ((MetaPlugin*) self, _tmp28_);
			_g_object_unref0 (window);
			return;
		}
	}
	_tmp29_ = actor;
	g_signal_connect_object ((ClutterActor*) _tmp29_, "transitions-completed", (GCallback) _budgie_budgie_wm_map_done_clutter_actor_transitions_completed, self, 0);
	_tmp30_ = self->priv->state_map;
	_tmp31_ = actor;
	_tmp32_ = _g_object_ref0 (_tmp31_);
	_tmp33_ = BUDGIE_ANIMATION_STATE_MAP;
	_tmp34_ = __budgie_animation_state_dup0 (&_tmp33_);
	g_hash_table_insert (_tmp30_, _tmp32_, (gpointer) ((gintptr) _tmp34_));
	_tmp35_ = actor;
	clutter_actor_restore_easing_state ((ClutterActor*) _tmp35_);
	_g_object_unref0 (window);
}


static void budgie_budgie_wm_minimize_done (BudgieBudgieWM* self, ClutterActor* actor) {
	ClutterActor* _tmp0_ = NULL;
	ClutterActor* _tmp1_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = actor;
	g_signal_handlers_disconnect_by_func (_tmp0_, (void*) budgie_budgie_wm_minimize_done, self);
	_tmp1_ = actor;
	budgie_budgie_wm_finalize_animations (self, G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, meta_window_actor_get_type ()) ? ((MetaWindowActor*) _tmp1_) : NULL);
}


static void _budgie_budgie_wm_minimize_done_clutter_actor_transitions_completed (ClutterActor* _sender, gpointer self) {
	budgie_budgie_wm_minimize_done ((BudgieBudgieWM*) self, _sender);
}


static gpointer _budgie_minimize_data_ref0 (gpointer self) {
	return self ? budgie_minimize_data_ref (self) : NULL;
}


static void budgie_budgie_wm_real_minimize (MetaPlugin* base, MetaWindowActor* actor) {
	BudgieBudgieWM * self;
	gboolean _tmp0_ = FALSE;
	MetaRectangle icon = {0};
	MetaWindow* window = NULL;
	MetaWindowActor* _tmp2_ = NULL;
	MetaWindow* _tmp3_ = NULL;
	MetaWindow* _tmp4_ = NULL;
	MetaWindow* _tmp5_ = NULL;
	MetaWindowType _tmp6_ = 0;
	MetaWindow* _tmp8_ = NULL;
	MetaRectangle _tmp9_ = {0};
	gboolean _tmp10_ = FALSE;
	MetaWindowActor* _tmp11_ = NULL;
	GHashTable* _tmp12_ = NULL;
	MetaWindowActor* _tmp13_ = NULL;
	MetaWindowActor* _tmp14_ = NULL;
	BudgieAnimationState _tmp15_ = 0;
	BudgieAnimationState* _tmp16_ = NULL;
	MetaWindowActor* _tmp17_ = NULL;
	MetaWindowActor* _tmp18_ = NULL;
	MetaWindowActor* _tmp19_ = NULL;
	MetaWindowActor* _tmp20_ = NULL;
	BudgieMinimizeData* d = NULL;
	BudgieMinimizeData* _tmp21_ = NULL;
	BudgieMinimizeData* _tmp22_ = NULL;
	MetaRectangle _tmp23_ = {0};
	gint _tmp24_ = 0;
	MetaWindowActor* _tmp25_ = NULL;
	gfloat _tmp26_ = 0.0F;
	gfloat _tmp27_ = 0.0F;
	BudgieMinimizeData* _tmp28_ = NULL;
	MetaRectangle _tmp29_ = {0};
	gint _tmp30_ = 0;
	MetaWindowActor* _tmp31_ = NULL;
	gfloat _tmp32_ = 0.0F;
	gfloat _tmp33_ = 0.0F;
	BudgieMinimizeData* _tmp34_ = NULL;
	MetaRectangle _tmp35_ = {0};
	gint _tmp36_ = 0;
	BudgieMinimizeData* _tmp37_ = NULL;
	MetaRectangle _tmp38_ = {0};
	gint _tmp39_ = 0;
	BudgieMinimizeData* _tmp40_ = NULL;
	MetaWindowActor* _tmp41_ = NULL;
	gfloat _tmp42_ = 0.0F;
	gfloat _tmp43_ = 0.0F;
	BudgieMinimizeData* _tmp44_ = NULL;
	MetaWindowActor* _tmp45_ = NULL;
	gfloat _tmp46_ = 0.0F;
	gfloat _tmp47_ = 0.0F;
	MetaWindowActor* _tmp48_ = NULL;
	BudgieMinimizeData* _tmp49_ = NULL;
	BudgieMinimizeData* _tmp50_ = NULL;
	MetaWindowActor* _tmp51_ = NULL;
	BudgieMinimizeData* _tmp52_ = NULL;
	gdouble _tmp53_ = 0.0;
	BudgieMinimizeData* _tmp54_ = NULL;
	gdouble _tmp55_ = 0.0;
	BudgieMinimizeData* _tmp56_ = NULL;
	gdouble _tmp57_ = 0.0;
	BudgieMinimizeData* _tmp58_ = NULL;
	gdouble _tmp59_ = 0.0;
	MetaWindowActor* _tmp60_ = NULL;
	self = (BudgieBudgieWM*) base;
	g_return_if_fail (actor != NULL);
	_tmp0_ = self->priv->_use_animations;
	if (!_tmp0_) {
		MetaWindowActor* _tmp1_ = NULL;
		_tmp1_ = actor;
		meta_plugin_minimize_completed ((MetaPlugin*) self, _tmp1_);
		return;
	}
	_tmp2_ = actor;
	_tmp3_ = meta_window_actor_get_meta_window (_tmp2_);
	_tmp4_ = _g_object_ref0 (_tmp3_);
	window = _tmp4_;
	_tmp5_ = window;
	_tmp6_ = meta_window_get_window_type (_tmp5_);
	if (_tmp6_ != META_WINDOW_NORMAL) {
		MetaWindowActor* _tmp7_ = NULL;
		_tmp7_ = actor;
		meta_plugin_minimize_completed ((MetaPlugin*) self, _tmp7_);
		_g_object_unref0 (window);
		return;
	}
	_tmp8_ = window;
	_tmp10_ = meta_window_get_icon_geometry (_tmp8_, &_tmp9_);
	icon = _tmp9_;
	if (!_tmp10_) {
		icon.x = 0;
		icon.y = 0;
	}
	_tmp11_ = actor;
	budgie_budgie_wm_finalize_animations (self, _tmp11_);
	_tmp12_ = self->priv->state_map;
	_tmp13_ = actor;
	_tmp14_ = _g_object_ref0 (_tmp13_);
	_tmp15_ = BUDGIE_ANIMATION_STATE_MINIMIZE;
	_tmp16_ = __budgie_animation_state_dup0 (&_tmp15_);
	g_hash_table_insert (_tmp12_, _tmp14_, (gpointer) ((gintptr) _tmp16_));
	_tmp17_ = actor;
	clutter_actor_save_easing_state ((ClutterActor*) _tmp17_);
	_tmp18_ = actor;
	clutter_actor_set_easing_mode ((ClutterActor*) _tmp18_, CLUTTER_EASE_IN_SINE);
	_tmp19_ = actor;
	clutter_actor_set_easing_duration ((ClutterActor*) _tmp19_, (guint) BUDGIE_BUDGIE_WM_MINIMIZE_TIMEOUT);
	_tmp20_ = actor;
	g_signal_connect_object ((ClutterActor*) _tmp20_, "transitions-completed", (GCallback) _budgie_budgie_wm_minimize_done_clutter_actor_transitions_completed, self, 0);
	_tmp21_ = budgie_minimize_data_new ();
	d = _tmp21_;
	_tmp22_ = d;
	_tmp23_ = icon;
	_tmp24_ = _tmp23_.width;
	_tmp25_ = actor;
	_tmp26_ = clutter_actor_get_width ((ClutterActor*) _tmp25_);
	_tmp27_ = _tmp26_;
	_tmp22_->scale_x = (gdouble) (_tmp24_ / _tmp27_);
	_tmp28_ = d;
	_tmp29_ = icon;
	_tmp30_ = _tmp29_.height;
	_tmp31_ = actor;
	_tmp32_ = clutter_actor_get_height ((ClutterActor*) _tmp31_);
	_tmp33_ = _tmp32_;
	_tmp28_->scale_y = (gdouble) (_tmp30_ / _tmp33_);
	_tmp34_ = d;
	_tmp35_ = icon;
	_tmp36_ = _tmp35_.x;
	_tmp34_->place_x = (gdouble) _tmp36_;
	_tmp37_ = d;
	_tmp38_ = icon;
	_tmp39_ = _tmp38_.y;
	_tmp37_->place_y = (gdouble) _tmp39_;
	_tmp40_ = d;
	_tmp41_ = actor;
	_tmp42_ = clutter_actor_get_x ((ClutterActor*) _tmp41_);
	_tmp43_ = _tmp42_;
	_tmp40_->old_x = (gdouble) _tmp43_;
	_tmp44_ = d;
	_tmp45_ = actor;
	_tmp46_ = clutter_actor_get_y ((ClutterActor*) _tmp45_);
	_tmp47_ = _tmp46_;
	_tmp44_->old_y = (gdouble) _tmp47_;
	_tmp48_ = actor;
	_tmp49_ = d;
	_tmp50_ = _budgie_minimize_data_ref0 (_tmp49_);
	g_object_set_data_full ((GObject*) _tmp48_, "_minimize_data", _tmp50_, budgie_minimize_data_unref);
	_tmp51_ = actor;
	_tmp52_ = d;
	_tmp53_ = _tmp52_->place_x;
	_tmp54_ = d;
	_tmp55_ = _tmp54_->place_y;
	_tmp56_ = d;
	_tmp57_ = _tmp56_->scale_x;
	_tmp58_ = d;
	_tmp59_ = _tmp58_->scale_y;
	g_object_set ((GObject*) _tmp51_, "opacity", 0U, "scale-gravity", CLUTTER_GRAVITY_NORTH_WEST, "x", _tmp53_, "y", _tmp55_, "scale-x", _tmp57_, "scale-y", _tmp59_, NULL);
	_tmp60_ = actor;
	clutter_actor_restore_easing_state ((ClutterActor*) _tmp60_);
	_budgie_minimize_data_unref0 (d);
	_g_object_unref0 (window);
}


/**
     * Unminimize now done
     */
static void budgie_budgie_wm_unminimize_done (BudgieBudgieWM* self, ClutterActor* actor) {
	ClutterActor* _tmp0_ = NULL;
	ClutterActor* _tmp1_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = actor;
	g_signal_handlers_disconnect_by_func (_tmp0_, (void*) budgie_budgie_wm_unminimize_done, self);
	_tmp1_ = actor;
	budgie_budgie_wm_finalize_animations (self, G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, meta_window_actor_get_type ()) ? ((MetaWindowActor*) _tmp1_) : NULL);
}


/**
     * Handle unminimize animation
     */
static void _budgie_budgie_wm_unminimize_done_clutter_actor_transitions_completed (ClutterActor* _sender, gpointer self) {
	budgie_budgie_wm_unminimize_done ((BudgieBudgieWM*) self, _sender);
}


static void budgie_budgie_wm_real_unminimize (MetaPlugin* base, MetaWindowActor* actor) {
	BudgieBudgieWM * self;
	gboolean _tmp0_ = FALSE;
	BudgieMinimizeData* d = NULL;
	MetaWindowActor* _tmp2_ = NULL;
	gconstpointer _tmp3_ = NULL;
	BudgieMinimizeData* _tmp4_ = NULL;
	BudgieMinimizeData* _tmp5_ = NULL;
	MetaWindowActor* _tmp7_ = NULL;
	MetaWindowActor* _tmp8_ = NULL;
	BudgieMinimizeData* _tmp9_ = NULL;
	gdouble _tmp10_ = 0.0;
	BudgieMinimizeData* _tmp11_ = NULL;
	gdouble _tmp12_ = 0.0;
	BudgieMinimizeData* _tmp13_ = NULL;
	gdouble _tmp14_ = 0.0;
	BudgieMinimizeData* _tmp15_ = NULL;
	gdouble _tmp16_ = 0.0;
	MetaWindowActor* _tmp17_ = NULL;
	MetaWindowActor* _tmp18_ = NULL;
	MetaWindowActor* _tmp19_ = NULL;
	MetaWindowActor* _tmp20_ = NULL;
	MetaWindowActor* _tmp21_ = NULL;
	BudgieMinimizeData* _tmp22_ = NULL;
	gdouble _tmp23_ = 0.0;
	BudgieMinimizeData* _tmp24_ = NULL;
	gdouble _tmp25_ = 0.0;
	MetaWindowActor* _tmp26_ = NULL;
	GHashTable* _tmp27_ = NULL;
	MetaWindowActor* _tmp28_ = NULL;
	MetaWindowActor* _tmp29_ = NULL;
	BudgieAnimationState _tmp30_ = 0;
	BudgieAnimationState* _tmp31_ = NULL;
	MetaWindowActor* _tmp32_ = NULL;
	MetaWindowActor* _tmp33_ = NULL;
	self = (BudgieBudgieWM*) base;
	g_return_if_fail (actor != NULL);
	_tmp0_ = self->priv->_use_animations;
	if (!_tmp0_) {
		MetaWindowActor* _tmp1_ = NULL;
		_tmp1_ = actor;
		meta_plugin_unminimize_completed ((MetaPlugin*) self, _tmp1_);
		return;
	}
	_tmp2_ = actor;
	_tmp3_ = g_object_get_data ((GObject*) _tmp2_, "_minimize_data");
	_tmp4_ = _budgie_minimize_data_ref0 ((BudgieMinimizeData*) _tmp3_);
	d = _tmp4_;
	_tmp5_ = d;
	if (_tmp5_ == NULL) {
		MetaWindowActor* _tmp6_ = NULL;
		_tmp6_ = actor;
		meta_plugin_unminimize_completed ((MetaPlugin*) self, _tmp6_);
		_budgie_minimize_data_unref0 (d);
		return;
	}
	_tmp7_ = actor;
	budgie_budgie_wm_finalize_animations (self, _tmp7_);
	_tmp8_ = actor;
	_tmp9_ = d;
	_tmp10_ = _tmp9_->place_x;
	_tmp11_ = d;
	_tmp12_ = _tmp11_->place_y;
	_tmp13_ = d;
	_tmp14_ = _tmp13_->scale_x;
	_tmp15_ = d;
	_tmp16_ = _tmp15_->scale_y;
	g_object_set ((GObject*) _tmp8_, "opacity", 0U, "scale-gravity", CLUTTER_GRAVITY_NORTH_WEST, "x", _tmp10_, "y", _tmp12_, "scale-x", _tmp14_, "scale-y", _tmp16_, NULL);
	_tmp17_ = actor;
	clutter_actor_show ((ClutterActor*) _tmp17_);
	_tmp18_ = actor;
	clutter_actor_save_easing_state ((ClutterActor*) _tmp18_);
	_tmp19_ = actor;
	clutter_actor_set_easing_mode ((ClutterActor*) _tmp19_, CLUTTER_EASE_OUT_QUART);
	_tmp20_ = actor;
	clutter_actor_set_easing_duration ((ClutterActor*) _tmp20_, (guint) BUDGIE_BUDGIE_WM_MINIMIZE_TIMEOUT);
	_tmp21_ = actor;
	_tmp22_ = d;
	_tmp23_ = _tmp22_->old_x;
	_tmp24_ = d;
	_tmp25_ = _tmp24_->old_y;
	g_object_set ((GObject*) _tmp21_, "scale-x", 1.0, "scale-y", 1.0, "opacity", 255U, "x", _tmp23_, "y", _tmp25_, NULL);
	_tmp26_ = actor;
	g_signal_connect_object ((ClutterActor*) _tmp26_, "transitions-completed", (GCallback) _budgie_budgie_wm_unminimize_done_clutter_actor_transitions_completed, self, 0);
	_tmp27_ = self->priv->state_map;
	_tmp28_ = actor;
	_tmp29_ = _g_object_ref0 (_tmp28_);
	_tmp30_ = BUDGIE_ANIMATION_STATE_UNMINIMIZE;
	_tmp31_ = __budgie_animation_state_dup0 (&_tmp30_);
	g_hash_table_insert (_tmp27_, _tmp29_, (gpointer) ((gintptr) _tmp31_));
	_tmp32_ = actor;
	clutter_actor_restore_easing_state ((ClutterActor*) _tmp32_);
	_tmp33_ = actor;
	g_object_set_data_full ((GObject*) _tmp33_, "_minimize_data", NULL, NULL);
	_budgie_minimize_data_unref0 (d);
}


static void budgie_budgie_wm_destroy_done (BudgieBudgieWM* self, ClutterActor* actor) {
	ClutterActor* _tmp0_ = NULL;
	ClutterActor* _tmp1_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = actor;
	g_signal_handlers_disconnect_by_func (_tmp0_, (void*) budgie_budgie_wm_destroy_done, self);
	_tmp1_ = actor;
	budgie_budgie_wm_finalize_animations (self, G_TYPE_CHECK_INSTANCE_TYPE (_tmp1_, meta_window_actor_get_type ()) ? ((MetaWindowActor*) _tmp1_) : NULL);
}


static void _budgie_budgie_wm_destroy_done_clutter_actor_transitions_completed (ClutterActor* _sender, gpointer self) {
	budgie_budgie_wm_destroy_done ((BudgieBudgieWM*) self, _sender);
}


static void budgie_budgie_wm_real_destroy (MetaPlugin* base, MetaWindowActor* actor) {
	BudgieBudgieWM * self;
	MetaWindow* window = NULL;
	MetaWindowActor* _tmp0_ = NULL;
	MetaWindow* _tmp1_ = NULL;
	MetaWindow* _tmp2_ = NULL;
	MetaWindow* _tmp3_ = NULL;
	MetaWindow* _tmp4_ = NULL;
	gboolean _tmp5_ = FALSE;
	MetaWindowActor* _tmp7_ = NULL;
	MetaWindow* _tmp8_ = NULL;
	MetaWindowType _tmp9_ = 0;
	MetaWindowActor* _tmp20_ = NULL;
	GHashTable* _tmp21_ = NULL;
	MetaWindowActor* _tmp22_ = NULL;
	MetaWindowActor* _tmp23_ = NULL;
	BudgieAnimationState _tmp24_ = 0;
	BudgieAnimationState* _tmp25_ = NULL;
	MetaWindowActor* _tmp26_ = NULL;
	self = (BudgieBudgieWM*) base;
	g_return_if_fail (actor != NULL);
	_tmp0_ = actor;
	_tmp1_ = meta_window_actor_get_meta_window (_tmp0_);
	_tmp2_ = _g_object_ref0 (_tmp1_);
	window = _tmp2_;
	_tmp3_ = self->priv->focused_window;
	_tmp4_ = window;
	if (_tmp3_ == _tmp4_) {
		self->priv->focused_window = NULL;
	}
	_tmp5_ = self->priv->_use_animations;
	if (!_tmp5_) {
		MetaWindowActor* _tmp6_ = NULL;
		_tmp6_ = actor;
		meta_plugin_destroy_completed ((MetaPlugin*) self, _tmp6_);
		_g_object_unref0 (window);
		return;
	}
	_tmp7_ = actor;
	budgie_budgie_wm_finalize_animations (self, _tmp7_);
	_tmp8_ = window;
	_tmp9_ = meta_window_get_window_type (_tmp8_);
	switch (_tmp9_) {
		case META_WINDOW_NOTIFICATION:
		case META_WINDOW_NORMAL:
		case META_WINDOW_DIALOG:
		case META_WINDOW_MODAL_DIALOG:
		{
			MetaWindowActor* _tmp10_ = NULL;
			ClutterPoint* _tmp11_ = NULL;
			MetaWindowActor* _tmp12_ = NULL;
			MetaWindowActor* _tmp13_ = NULL;
			MetaWindowActor* _tmp14_ = NULL;
			MetaWindowActor* _tmp15_ = NULL;
			_tmp10_ = actor;
			_tmp11_ = budgie_budgie_wm_PV_CENTER;
			g_object_set ((GObject*) _tmp10_, "pivot-point", _tmp11_, NULL);
			_tmp12_ = actor;
			clutter_actor_save_easing_state ((ClutterActor*) _tmp12_);
			_tmp13_ = actor;
			clutter_actor_set_easing_mode ((ClutterActor*) _tmp13_, CLUTTER_EASE_OUT_QUAD);
			_tmp14_ = actor;
			clutter_actor_set_easing_duration ((ClutterActor*) _tmp14_, (guint) BUDGIE_BUDGIE_WM_DESTROY_TIMEOUT);
			_tmp15_ = actor;
			g_object_set ((GObject*) _tmp15_, "scale-x", BUDGIE_BUDGIE_WM_DESTROY_SCALE, "scale-y", BUDGIE_BUDGIE_WM_DESTROY_SCALE, "opacity", 0U, NULL);
			break;
		}
		case META_WINDOW_MENU:
		{
			MetaWindowActor* _tmp16_ = NULL;
			MetaWindowActor* _tmp17_ = NULL;
			MetaWindowActor* _tmp18_ = NULL;
			_tmp16_ = actor;
			clutter_actor_save_easing_state ((ClutterActor*) _tmp16_);
			_tmp17_ = actor;
			clutter_actor_set_easing_mode ((ClutterActor*) _tmp17_, CLUTTER_EASE_OUT_QUAD);
			_tmp18_ = actor;
			g_object_set ((GObject*) _tmp18_, "opacity", 0U, NULL);
			break;
		}
		default:
		{
			MetaWindowActor* _tmp19_ = NULL;
			_tmp19_ = actor;
			meta_plugin_destroy_completed ((MetaPlugin*) self, _tmp19_);
			_g_object_unref0 (window);
			return;
		}
	}
	_tmp20_ = actor;
	g_signal_connect_object ((ClutterActor*) _tmp20_, "transitions-completed", (GCallback) _budgie_budgie_wm_destroy_done_clutter_actor_transitions_completed, self, 0);
	_tmp21_ = self->priv->state_map;
	_tmp22_ = actor;
	_tmp23_ = _g_object_ref0 (_tmp22_);
	_tmp24_ = BUDGIE_ANIMATION_STATE_DESTROY;
	_tmp25_ = __budgie_animation_state_dup0 (&_tmp24_);
	g_hash_table_insert (_tmp21_, _tmp23_, (gpointer) ((gintptr) _tmp25_));
	_tmp26_ = actor;
	clutter_actor_restore_easing_state ((ClutterActor*) _tmp26_);
	_g_object_unref0 (window);
}


static void _budgie_budgie_wm_tile_preview_transition_complete_clutter_actor_transitions_completed (ClutterActor* _sender, gpointer self) {
	budgie_budgie_wm_tile_preview_transition_complete ((BudgieBudgieWM*) self);
}


static guint8* _uint8_dup (guint8* self) {
	guint8* dup;
	dup = g_new0 (guint8, 1);
	memcpy (dup, self, sizeof (guint8));
	return dup;
}


static gpointer __uint8_dup0 (gpointer self) {
	return self ? _uint8_dup (self) : NULL;
}


static void budgie_budgie_wm_real_show_tile_preview (MetaPlugin* base, MetaWindow* window, MetaRectangle* tile_rect, gint tile_monitor_num) {
	BudgieBudgieWM * self;
	MetaScreen* screen = NULL;
	MetaScreen* _tmp0_ = NULL;
	MetaScreen* _tmp1_ = NULL;
	BudgieScreenTilePreview* _tmp2_ = NULL;
	gboolean _tmp13_ = FALSE;
	gboolean _tmp14_ = FALSE;
	gboolean _tmp15_ = FALSE;
	gboolean _tmp16_ = FALSE;
	BudgieScreenTilePreview* _tmp17_ = NULL;
	gboolean _tmp18_ = FALSE;
	gboolean _tmp19_ = FALSE;
	ClutterActor* win_actor = NULL;
	MetaWindow* _tmp40_ = NULL;
	GObject* _tmp41_ = NULL;
	ClutterActor* _tmp42_ = NULL;
	BudgieScreenTilePreview* _tmp43_ = NULL;
	BudgieScreenTilePreview* _tmp44_ = NULL;
	ClutterActor* _tmp45_ = NULL;
	gfloat _tmp46_ = 0.0F;
	gfloat _tmp47_ = 0.0F;
	ClutterActor* _tmp48_ = NULL;
	gfloat _tmp49_ = 0.0F;
	gfloat _tmp50_ = 0.0F;
	BudgieScreenTilePreview* _tmp51_ = NULL;
	ClutterActor* _tmp52_ = NULL;
	gfloat _tmp53_ = 0.0F;
	gfloat _tmp54_ = 0.0F;
	ClutterActor* _tmp55_ = NULL;
	gfloat _tmp56_ = 0.0F;
	gfloat _tmp57_ = 0.0F;
	BudgieScreenTilePreview* _tmp58_ = NULL;
	guint8* _tmp59_ = NULL;
	BudgieScreenTilePreview* _tmp60_ = NULL;
	ClutterPoint* _tmp61_ = NULL;
	BudgieScreenTilePreview* _tmp62_ = NULL;
	ClutterActor* _tmp63_ = NULL;
	BudgieScreenTilePreview* _tmp64_ = NULL;
	MetaRectangle _tmp65_ = {0};
	BudgieScreenTilePreview* _tmp66_ = NULL;
	BudgieScreenTilePreview* _tmp67_ = NULL;
	BudgieScreenTilePreview* _tmp68_ = NULL;
	BudgieScreenTilePreview* _tmp69_ = NULL;
	BudgieScreenTilePreview* _tmp70_ = NULL;
	MetaRectangle _tmp71_ = {0};
	gint _tmp72_ = 0;
	MetaRectangle _tmp73_ = {0};
	gint _tmp74_ = 0;
	BudgieScreenTilePreview* _tmp75_ = NULL;
	MetaRectangle _tmp76_ = {0};
	gint _tmp77_ = 0;
	MetaRectangle _tmp78_ = {0};
	gint _tmp79_ = 0;
	BudgieScreenTilePreview* _tmp80_ = NULL;
	BudgieScreenTilePreview* _tmp81_ = NULL;
	self = (BudgieBudgieWM*) base;
	g_return_if_fail (window != NULL);
	g_return_if_fail (tile_rect != NULL);
	_tmp0_ = meta_plugin_get_screen ((MetaPlugin*) self);
	_tmp1_ = _g_object_ref0 (_tmp0_);
	screen = _tmp1_;
	_tmp2_ = self->priv->tile_preview;
	if (_tmp2_ == NULL) {
		BudgieScreenTilePreview* _tmp3_ = NULL;
		BudgieScreenTilePreview* _tmp4_ = NULL;
		ClutterActor* screen_group = NULL;
		MetaScreen* _tmp5_ = NULL;
		ClutterActor* _tmp6_ = NULL;
		ClutterActor* _tmp7_ = NULL;
		ClutterActor* _tmp8_ = NULL;
		BudgieScreenTilePreview* _tmp9_ = NULL;
		BudgieScreenTilePreview* _tmp10_ = NULL;
		guint8 _tmp11_ = 0U;
		guint8* _tmp12_ = NULL;
		_tmp3_ = budgie_screen_tile_preview_new ();
		g_object_ref_sink (_tmp3_);
		_g_object_unref0 (self->priv->tile_preview);
		self->priv->tile_preview = _tmp3_;
		_tmp4_ = self->priv->tile_preview;
		g_signal_connect_object ((ClutterActor*) _tmp4_, "transitions-completed", (GCallback) _budgie_budgie_wm_tile_preview_transition_complete_clutter_actor_transitions_completed, self, 0);
		_tmp5_ = screen;
		_tmp6_ = meta_get_window_group_for_screen (_tmp5_);
		_tmp7_ = _g_object_ref0 (_tmp6_);
		screen_group = _tmp7_;
		_tmp8_ = screen_group;
		_tmp9_ = self->priv->tile_preview;
		clutter_actor_add_child (_tmp8_, (ClutterActor*) _tmp9_);
		_tmp10_ = self->priv->tile_preview;
		_tmp11_ = clutter_actor_get_opacity ((ClutterActor*) _tmp10_);
		_tmp12_ = __uint8_dup0 (&_tmp11_);
		_g_free0 (self->priv->default_tile_opacity);
		self->priv->default_tile_opacity = _tmp12_;
		_g_object_unref0 (screen_group);
	}
	_tmp17_ = self->priv->tile_preview;
	g_object_get ((ClutterActor*) _tmp17_, "visible", &_tmp18_, NULL);
	_tmp19_ = _tmp18_;
	if (_tmp19_) {
		BudgieScreenTilePreview* _tmp20_ = NULL;
		MetaRectangle _tmp21_ = {0};
		gint _tmp22_ = 0;
		MetaRectangle _tmp23_ = {0};
		gint _tmp24_ = 0;
		_tmp20_ = self->priv->tile_preview;
		_tmp21_ = _tmp20_->tile_rect;
		_tmp22_ = _tmp21_.x;
		_tmp23_ = *tile_rect;
		_tmp24_ = _tmp23_.x;
		_tmp16_ = _tmp22_ == _tmp24_;
	} else {
		_tmp16_ = FALSE;
	}
	if (_tmp16_) {
		BudgieScreenTilePreview* _tmp25_ = NULL;
		MetaRectangle _tmp26_ = {0};
		gint _tmp27_ = 0;
		MetaRectangle _tmp28_ = {0};
		gint _tmp29_ = 0;
		_tmp25_ = self->priv->tile_preview;
		_tmp26_ = _tmp25_->tile_rect;
		_tmp27_ = _tmp26_.y;
		_tmp28_ = *tile_rect;
		_tmp29_ = _tmp28_.y;
		_tmp15_ = _tmp27_ == _tmp29_;
	} else {
		_tmp15_ = FALSE;
	}
	if (_tmp15_) {
		BudgieScreenTilePreview* _tmp30_ = NULL;
		MetaRectangle _tmp31_ = {0};
		gint _tmp32_ = 0;
		MetaRectangle _tmp33_ = {0};
		gint _tmp34_ = 0;
		_tmp30_ = self->priv->tile_preview;
		_tmp31_ = _tmp30_->tile_rect;
		_tmp32_ = _tmp31_.width;
		_tmp33_ = *tile_rect;
		_tmp34_ = _tmp33_.width;
		_tmp14_ = _tmp32_ == _tmp34_;
	} else {
		_tmp14_ = FALSE;
	}
	if (_tmp14_) {
		BudgieScreenTilePreview* _tmp35_ = NULL;
		MetaRectangle _tmp36_ = {0};
		gint _tmp37_ = 0;
		MetaRectangle _tmp38_ = {0};
		gint _tmp39_ = 0;
		_tmp35_ = self->priv->tile_preview;
		_tmp36_ = _tmp35_->tile_rect;
		_tmp37_ = _tmp36_.height;
		_tmp38_ = *tile_rect;
		_tmp39_ = _tmp38_.height;
		_tmp13_ = _tmp37_ == _tmp39_;
	} else {
		_tmp13_ = FALSE;
	}
	if (_tmp13_) {
		_g_object_unref0 (screen);
		return;
	}
	_tmp40_ = window;
	_tmp41_ = meta_window_get_compositor_private (_tmp40_);
	_tmp42_ = _g_object_ref0 (G_TYPE_CHECK_INSTANCE_TYPE (_tmp41_, clutter_actor_get_type ()) ? ((ClutterActor*) _tmp41_) : NULL);
	win_actor = _tmp42_;
	_tmp43_ = self->priv->tile_preview;
	clutter_actor_remove_all_transitions ((ClutterActor*) _tmp43_);
	_tmp44_ = self->priv->tile_preview;
	_tmp45_ = win_actor;
	_tmp46_ = clutter_actor_get_x (_tmp45_);
	_tmp47_ = _tmp46_;
	_tmp48_ = win_actor;
	_tmp49_ = clutter_actor_get_y (_tmp48_);
	_tmp50_ = _tmp49_;
	clutter_actor_set_position ((ClutterActor*) _tmp44_, _tmp47_, _tmp50_);
	_tmp51_ = self->priv->tile_preview;
	_tmp52_ = win_actor;
	_tmp53_ = clutter_actor_get_width (_tmp52_);
	_tmp54_ = _tmp53_;
	_tmp55_ = win_actor;
	_tmp56_ = clutter_actor_get_height (_tmp55_);
	_tmp57_ = _tmp56_;
	clutter_actor_set_size ((ClutterActor*) _tmp51_, _tmp54_, _tmp57_);
	_tmp58_ = self->priv->tile_preview;
	_tmp59_ = self->priv->default_tile_opacity;
	clutter_actor_set_opacity ((ClutterActor*) _tmp58_, *_tmp59_);
	_tmp60_ = self->priv->tile_preview;
	_tmp61_ = budgie_budgie_wm_PV_CENTER;
	g_object_set ((GObject*) _tmp60_, "scale-x", BUDGIE_BUDGIE_WM_NOTIFICATION_MAP_SCALE_X, "scale-y", BUDGIE_BUDGIE_WM_NOTIFICATION_MAP_SCALE_Y, "pivot-point", _tmp61_, NULL);
	_tmp62_ = self->priv->tile_preview;
	_tmp63_ = win_actor;
	clutter_actor_lower ((ClutterActor*) _tmp62_, _tmp63_);
	_tmp64_ = self->priv->tile_preview;
	_tmp65_ = *tile_rect;
	_tmp64_->tile_rect = _tmp65_;
	_tmp66_ = self->priv->tile_preview;
	clutter_actor_show ((ClutterActor*) _tmp66_);
	_tmp67_ = self->priv->tile_preview;
	clutter_actor_save_easing_state ((ClutterActor*) _tmp67_);
	_tmp68_ = self->priv->tile_preview;
	clutter_actor_set_easing_mode ((ClutterActor*) _tmp68_, CLUTTER_EASE_OUT_QUAD);
	_tmp69_ = self->priv->tile_preview;
	clutter_actor_set_easing_duration ((ClutterActor*) _tmp69_, (guint) BUDGIE_BUDGIE_WM_MAP_TIMEOUT);
	_tmp70_ = self->priv->tile_preview;
	_tmp71_ = *tile_rect;
	_tmp72_ = _tmp71_.x;
	_tmp73_ = *tile_rect;
	_tmp74_ = _tmp73_.y;
	clutter_actor_set_position ((ClutterActor*) _tmp70_, (gfloat) _tmp72_, (gfloat) _tmp74_);
	_tmp75_ = self->priv->tile_preview;
	_tmp76_ = *tile_rect;
	_tmp77_ = _tmp76_.width;
	_tmp78_ = *tile_rect;
	_tmp79_ = _tmp78_.height;
	clutter_actor_set_size ((ClutterActor*) _tmp75_, (gfloat) _tmp77_, (gfloat) _tmp79_);
	_tmp80_ = self->priv->tile_preview;
	g_object_set ((GObject*) _tmp80_, "scale-x", 1.0, "scale-y", 1.0, NULL);
	_tmp81_ = self->priv->tile_preview;
	clutter_actor_restore_easing_state ((ClutterActor*) _tmp81_);
	_g_object_unref0 (win_actor);
	_g_object_unref0 (screen);
}


static void budgie_budgie_wm_real_hide_tile_preview (MetaPlugin* base) {
	BudgieBudgieWM * self;
	BudgieScreenTilePreview* _tmp0_ = NULL;
	self = (BudgieBudgieWM*) base;
	_tmp0_ = self->priv->tile_preview;
	if (_tmp0_ != NULL) {
		BudgieScreenTilePreview* _tmp1_ = NULL;
		BudgieScreenTilePreview* _tmp2_ = NULL;
		BudgieScreenTilePreview* _tmp3_ = NULL;
		BudgieScreenTilePreview* _tmp4_ = NULL;
		BudgieScreenTilePreview* _tmp5_ = NULL;
		BudgieScreenTilePreview* _tmp6_ = NULL;
		_tmp1_ = self->priv->tile_preview;
		clutter_actor_remove_all_transitions ((ClutterActor*) _tmp1_);
		_tmp2_ = self->priv->tile_preview;
		clutter_actor_save_easing_state ((ClutterActor*) _tmp2_);
		_tmp3_ = self->priv->tile_preview;
		clutter_actor_set_easing_mode ((ClutterActor*) _tmp3_, CLUTTER_EASE_OUT_QUAD);
		_tmp4_ = self->priv->tile_preview;
		clutter_actor_set_easing_duration ((ClutterActor*) _tmp4_, (guint) BUDGIE_BUDGIE_WM_FADE_TIMEOUT);
		_tmp5_ = self->priv->tile_preview;
		clutter_actor_set_opacity ((ClutterActor*) _tmp5_, (guint8) 0);
		_tmp6_ = self->priv->tile_preview;
		clutter_actor_restore_easing_state ((ClutterActor*) _tmp6_);
	}
}


static void budgie_budgie_wm_tile_preview_transition_complete (BudgieBudgieWM* self) {
	BudgieScreenTilePreview* _tmp0_ = NULL;
	guint8 _tmp1_ = 0U;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->tile_preview;
	_tmp1_ = clutter_actor_get_opacity ((ClutterActor*) _tmp0_);
	if (((gint) _tmp1_) == 0x00) {
		BudgieScreenTilePreview* _tmp2_ = NULL;
		_tmp2_ = self->priv->tile_preview;
		clutter_actor_hide ((ClutterActor*) _tmp2_);
	}
}


static gint budgie_budgie_wm_tab_sort (MetaWindow* a, MetaWindow* b) {
	gint result = 0;
	guint32 at = 0U;
	guint32 bt = 0U;
	MetaWindow* _tmp0_ = NULL;
	guint32 _tmp1_ = 0U;
	MetaWindow* _tmp2_ = NULL;
	guint32 _tmp3_ = 0U;
	guint32 _tmp4_ = 0U;
	guint32 _tmp5_ = 0U;
	guint32 _tmp6_ = 0U;
	guint32 _tmp7_ = 0U;
	g_return_val_if_fail (a != NULL, 0);
	g_return_val_if_fail (b != NULL, 0);
	_tmp0_ = a;
	_tmp1_ = meta_window_get_user_time (_tmp0_);
	at = _tmp1_;
	_tmp2_ = a;
	_tmp3_ = meta_window_get_user_time (_tmp2_);
	bt = _tmp3_;
	_tmp4_ = at;
	_tmp5_ = bt;
	if (_tmp4_ < _tmp5_) {
		result = -1;
		return result;
	}
	_tmp6_ = at;
	_tmp7_ = bt;
	if (_tmp6_ > _tmp7_) {
		result = 1;
		return result;
	}
	result = 0;
	return result;
}


static void budgie_budgie_wm_invalidate_tab (BudgieBudgieWM* self, MetaWorkspace* space, MetaWindow* window) {
	MetaWorkspace* _tmp0_ = NULL;
	MetaWorkspace* _tmp1_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (space != NULL);
	g_return_if_fail (window != NULL);
	_tmp0_ = space;
	_tmp1_ = self->priv->cur_workspace;
	if (_tmp0_ == _tmp1_) {
		_g_list_free0 (self->priv->cur_tabs);
		self->priv->cur_tabs = NULL;
		self->priv->cur_index = 0;
		self->priv->last_time = (guint32) -1;
	}
}


static void _budgie_budgie_wm_invalidate_tab_meta_workspace_window_added (MetaWorkspace* _sender, MetaWindow* object, gpointer self) {
	budgie_budgie_wm_invalidate_tab ((BudgieBudgieWM*) self, _sender, object);
}


static void _budgie_budgie_wm_invalidate_tab_meta_workspace_window_removed (MetaWorkspace* _sender, MetaWindow* object, gpointer self) {
	budgie_budgie_wm_invalidate_tab ((BudgieBudgieWM*) self, _sender, object);
}


static gint _budgie_budgie_wm_tab_sort_gcompare_func (gconstpointer a, gconstpointer b) {
	gint result;
	result = budgie_budgie_wm_tab_sort ((MetaWindow*) a, (MetaWindow*) b);
	return result;
}


void budgie_budgie_wm_switch_windows (BudgieBudgieWM* self, MetaDisplay* display, MetaScreen* screen, MetaWindow* window, ClutterKeyEvent* event, MetaKeyBinding* binding) {
	guint32 cur_time = 0U;
	MetaDisplay* _tmp0_ = NULL;
	guint32 _tmp1_ = 0U;
	MetaWorkspace* workspace = NULL;
	MetaScreen* _tmp2_ = NULL;
	MetaWorkspace* _tmp3_ = NULL;
	MetaWorkspace* _tmp4_ = NULL;
	gchar* data = NULL;
	MetaWorkspace* _tmp5_ = NULL;
	gconstpointer _tmp6_ = NULL;
	gchar* _tmp7_ = NULL;
	const gchar* _tmp8_ = NULL;
	gboolean _tmp13_ = FALSE;
	MetaWorkspace* _tmp14_ = NULL;
	MetaWorkspace* _tmp15_ = NULL;
	guint32 _tmp19_ = 0U;
	GList* _tmp20_ = NULL;
	GList* _tmp25_ = NULL;
	gint _tmp26_ = 0;
	gint _tmp27_ = 0;
	GList* _tmp28_ = NULL;
	guint _tmp29_ = 0U;
	MetaWindow* win = NULL;
	GList* _tmp30_ = NULL;
	gint _tmp31_ = 0;
	gconstpointer _tmp32_ = NULL;
	MetaWindow* _tmp33_ = NULL;
	MetaWindow* _tmp34_ = NULL;
	MetaWindow* _tmp35_ = NULL;
	MetaDisplay* _tmp36_ = NULL;
	guint32 _tmp37_ = 0U;
	g_return_if_fail (self != NULL);
	g_return_if_fail (display != NULL);
	g_return_if_fail (screen != NULL);
	g_return_if_fail (binding != NULL);
	_tmp0_ = display;
	_tmp1_ = meta_display_get_current_time (_tmp0_);
	cur_time = _tmp1_;
	_tmp2_ = screen;
	_tmp3_ = meta_screen_get_active_workspace (_tmp2_);
	_tmp4_ = _g_object_ref0 (_tmp3_);
	workspace = _tmp4_;
	data = NULL;
	_tmp5_ = workspace;
	_tmp6_ = g_object_get_data ((GObject*) _tmp5_, "__flagged");
	_tmp7_ = g_strdup ((const gchar*) _tmp6_);
	_g_free0 (data);
	data = _tmp7_;
	_tmp8_ = data;
	if (_tmp8_ == NULL) {
		MetaWorkspace* _tmp9_ = NULL;
		MetaWorkspace* _tmp10_ = NULL;
		MetaWorkspace* _tmp11_ = NULL;
		gchar* _tmp12_ = NULL;
		_tmp9_ = workspace;
		g_signal_connect_object (_tmp9_, "window-added", (GCallback) _budgie_budgie_wm_invalidate_tab_meta_workspace_window_added, self, 0);
		_tmp10_ = workspace;
		g_signal_connect_object (_tmp10_, "window-removed", (GCallback) _budgie_budgie_wm_invalidate_tab_meta_workspace_window_removed, self, 0);
		_tmp11_ = workspace;
		_tmp12_ = g_strdup ("yes");
		g_object_set_data_full ((GObject*) _tmp11_, "__flagged", _tmp12_, g_free);
	}
	_tmp14_ = workspace;
	_tmp15_ = self->priv->cur_workspace;
	if (_tmp14_ != _tmp15_) {
		_tmp13_ = TRUE;
	} else {
		guint32 _tmp16_ = 0U;
		guint32 _tmp17_ = 0U;
		_tmp16_ = cur_time;
		_tmp17_ = self->priv->last_time;
		_tmp13_ = (_tmp16_ - _tmp17_) >= BUDGIE_BUDGIE_WM_MAX_TAB_ELAPSE;
	}
	if (_tmp13_) {
		MetaWorkspace* _tmp18_ = NULL;
		_tmp18_ = workspace;
		self->priv->cur_workspace = _tmp18_;
		_g_list_free0 (self->priv->cur_tabs);
		self->priv->cur_tabs = NULL;
		self->priv->cur_index = 0;
	}
	_tmp19_ = cur_time;
	self->priv->last_time = _tmp19_;
	_tmp20_ = self->priv->cur_tabs;
	if (_tmp20_ == NULL) {
		MetaDisplay* _tmp21_ = NULL;
		MetaWorkspace* _tmp22_ = NULL;
		GList* _tmp23_ = NULL;
		GCompareFunc cm = NULL;
		GCompareFunc _tmp24_ = NULL;
		_tmp21_ = display;
		_tmp22_ = workspace;
		_tmp23_ = meta_display_get_tab_list (_tmp21_, META_TAB_LIST_NORMAL, _tmp22_);
		_g_list_free0 (self->priv->cur_tabs);
		self->priv->cur_tabs = _tmp23_;
		cm = _budgie_budgie_wm_tab_sort_gcompare_func;
		_tmp24_ = cm;
		self->priv->cur_tabs = g_list_sort (self->priv->cur_tabs, _tmp24_);
	}
	_tmp25_ = self->priv->cur_tabs;
	if (_tmp25_ == NULL) {
		_g_free0 (data);
		_g_object_unref0 (workspace);
		return;
	}
	_tmp26_ = self->priv->cur_index;
	self->priv->cur_index = _tmp26_ + 1;
	_tmp27_ = self->priv->cur_index;
	_tmp28_ = self->priv->cur_tabs;
	_tmp29_ = g_list_length (_tmp28_);
	if (((guint) _tmp27_) > (_tmp29_ - 1)) {
		self->priv->cur_index = 0;
	}
	_tmp30_ = self->priv->cur_tabs;
	_tmp31_ = self->priv->cur_index;
	_tmp32_ = g_list_nth_data (_tmp30_, (guint) _tmp31_);
	_tmp33_ = _g_object_ref0 ((MetaWindow*) _tmp32_);
	win = _tmp33_;
	_tmp34_ = win;
	if (_tmp34_ == NULL) {
		_g_object_unref0 (win);
		_g_free0 (data);
		_g_object_unref0 (workspace);
		return;
	}
	_tmp35_ = win;
	_tmp36_ = display;
	_tmp37_ = meta_display_get_current_time (_tmp36_);
	meta_window_activate (_tmp35_, _tmp37_);
	_g_object_unref0 (win);
	_g_free0 (data);
	_g_object_unref0 (workspace);
}


static void budgie_budgie_wm_real_kill_switch_workspace (MetaPlugin* base) {
	BudgieBudgieWM * self;
	ClutterActor* _tmp0_ = NULL;
	self = (BudgieBudgieWM*) base;
	_tmp0_ = self->priv->out_group;
	if (_tmp0_ != NULL) {
		ClutterActor* _tmp1_ = NULL;
		_tmp1_ = self->priv->out_group;
		g_signal_emit_by_name (_tmp1_, "transitions-completed");
	}
}


static void budgie_budgie_wm_switch_workspace_done (BudgieBudgieWM* self) {
	MetaScreen* screen = NULL;
	MetaScreen* _tmp0_ = NULL;
	MetaScreen* _tmp1_ = NULL;
	MetaScreen* _tmp2_ = NULL;
	GList* _tmp3_ = NULL;
	ClutterActor* _tmp16_ = NULL;
	ClutterActor* _tmp17_ = NULL;
	ClutterActor* _tmp18_ = NULL;
	ClutterActor* _tmp19_ = NULL;
	ClutterActor* _tmp20_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = meta_plugin_get_screen ((MetaPlugin*) self);
	_tmp1_ = _g_object_ref0 (_tmp0_);
	screen = _tmp1_;
	_tmp2_ = screen;
	_tmp3_ = meta_get_window_actors (_tmp2_);
	{
		GList* actor_collection = NULL;
		GList* actor_it = NULL;
		actor_collection = _tmp3_;
		for (actor_it = actor_collection; actor_it != NULL; actor_it = actor_it->next) {
			MetaWindowActor* actor = NULL;
			actor = (MetaWindowActor*) actor_it->data;
			{
				ClutterActor* orig_parent = NULL;
				MetaWindowActor* _tmp4_ = NULL;
				gconstpointer _tmp5_ = NULL;
				ClutterActor* _tmp6_ = NULL;
				ClutterActor* _tmp7_ = NULL;
				MetaWindowActor* _tmp8_ = NULL;
				MetaWindowActor* _tmp9_ = NULL;
				ClutterActor* _tmp10_ = NULL;
				MetaWindowActor* _tmp11_ = NULL;
				ClutterActor* _tmp12_ = NULL;
				MetaWindowActor* _tmp13_ = NULL;
				MetaWindowActor* _tmp14_ = NULL;
				MetaWindowActor* _tmp15_ = NULL;
				_tmp4_ = actor;
				_tmp5_ = g_object_get_data ((GObject*) _tmp4_, "orig-parent");
				_tmp6_ = _g_object_ref0 ((ClutterActor*) _tmp5_);
				orig_parent = _tmp6_;
				_tmp7_ = orig_parent;
				if (_tmp7_ == NULL) {
					_g_object_unref0 (orig_parent);
					continue;
				}
				_tmp8_ = actor;
				g_object_ref ((GObject*) _tmp8_);
				_tmp9_ = actor;
				_tmp10_ = clutter_actor_get_parent ((ClutterActor*) _tmp9_);
				_tmp11_ = actor;
				clutter_actor_remove_child (_tmp10_, (ClutterActor*) _tmp11_);
				_tmp12_ = orig_parent;
				_tmp13_ = actor;
				clutter_actor_add_child (_tmp12_, (ClutterActor*) _tmp13_);
				_tmp14_ = actor;
				g_object_unref ((GObject*) _tmp14_);
				_tmp15_ = actor;
				g_object_set_data_full ((GObject*) _tmp15_, "orig-parent", NULL, NULL);
				_g_object_unref0 (orig_parent);
			}
		}
	}
	_tmp16_ = self->priv->out_group;
	g_signal_handlers_disconnect_by_func (_tmp16_, (void*) budgie_budgie_wm_switch_workspace_done, self);
	_tmp17_ = self->priv->out_group;
	clutter_actor_remove_all_transitions (_tmp17_);
	_tmp18_ = self->priv->in_group;
	clutter_actor_remove_all_transitions (_tmp18_);
	_tmp19_ = self->priv->out_group;
	clutter_actor_destroy (_tmp19_);
	_g_object_unref0 (self->priv->out_group);
	self->priv->out_group = NULL;
	_tmp20_ = self->priv->in_group;
	clutter_actor_destroy (_tmp20_);
	_g_object_unref0 (self->priv->in_group);
	self->priv->in_group = NULL;
	meta_plugin_switch_workspace_completed ((MetaPlugin*) self);
	_g_object_unref0 (screen);
}


static void _budgie_budgie_wm_switch_workspace_done_clutter_actor_transitions_completed (ClutterActor* _sender, gpointer self) {
	budgie_budgie_wm_switch_workspace_done ((BudgieBudgieWM*) self);
}


static void budgie_budgie_wm_real_switch_workspace (MetaPlugin* base, gint from, gint to, MetaMotionDirection direction) {
	BudgieBudgieWM * self;
	gint screen_width = 0;
	gint screen_height = 0;
	gint _tmp0_ = 0;
	gint _tmp1_ = 0;
	ClutterActor* _tmp2_ = NULL;
	ClutterActor* _tmp3_ = NULL;
	MetaScreen* screen = NULL;
	MetaScreen* _tmp4_ = NULL;
	MetaScreen* _tmp5_ = NULL;
	ClutterActor* stage = NULL;
	MetaScreen* _tmp6_ = NULL;
	ClutterActor* _tmp7_ = NULL;
	ClutterActor* _tmp8_ = NULL;
	ClutterActor* _tmp9_ = NULL;
	ClutterActor* _tmp10_ = NULL;
	ClutterActor* _tmp11_ = NULL;
	ClutterActor* _tmp12_ = NULL;
	ClutterActor* _tmp13_ = NULL;
	ClutterActor* _tmp14_ = NULL;
	MetaScreen* _tmp15_ = NULL;
	gint _tmp16_ = 0;
	gint _tmp17_ = 0;
	MetaScreen* _tmp18_ = NULL;
	GList* _tmp19_ = NULL;
	gint y_dest = 0;
	gint x_dest = 0;
	gboolean _tmp55_ = FALSE;
	gboolean _tmp56_ = FALSE;
	MetaMotionDirection _tmp57_ = 0;
	gboolean _tmp67_ = FALSE;
	gboolean _tmp68_ = FALSE;
	MetaMotionDirection _tmp69_ = 0;
	ClutterActor* _tmp79_ = NULL;
	gint _tmp80_ = 0;
	gint _tmp81_ = 0;
	ClutterActor* _tmp82_ = NULL;
	ClutterActor* _tmp83_ = NULL;
	ClutterActor* _tmp84_ = NULL;
	ClutterActor* _tmp85_ = NULL;
	ClutterActor* _tmp86_ = NULL;
	ClutterActor* _tmp87_ = NULL;
	ClutterActor* _tmp88_ = NULL;
	ClutterActor* _tmp89_ = NULL;
	ClutterActor* _tmp90_ = NULL;
	ClutterActor* _tmp91_ = NULL;
	gint _tmp92_ = 0;
	gint _tmp93_ = 0;
	ClutterActor* _tmp94_ = NULL;
	self = (BudgieBudgieWM*) base;
	_tmp0_ = from;
	_tmp1_ = to;
	if (_tmp0_ == _tmp1_) {
		meta_plugin_switch_workspace_completed ((MetaPlugin*) self);
		return;
	}
	_tmp2_ = clutter_actor_new ();
	g_object_ref_sink (_tmp2_);
	_g_object_unref0 (self->priv->out_group);
	self->priv->out_group = _tmp2_;
	_tmp3_ = clutter_actor_new ();
	g_object_ref_sink (_tmp3_);
	_g_object_unref0 (self->priv->in_group);
	self->priv->in_group = _tmp3_;
	_tmp4_ = meta_plugin_get_screen ((MetaPlugin*) self);
	_tmp5_ = _g_object_ref0 (_tmp4_);
	screen = _tmp5_;
	_tmp6_ = screen;
	_tmp7_ = meta_get_stage_for_screen (_tmp6_);
	_tmp8_ = _g_object_ref0 (_tmp7_);
	stage = _tmp8_;
	_tmp9_ = stage;
	_tmp10_ = self->priv->in_group;
	clutter_actor_add_child (_tmp9_, _tmp10_);
	_tmp11_ = stage;
	_tmp12_ = self->priv->out_group;
	clutter_actor_add_child (_tmp11_, _tmp12_);
	_tmp13_ = stage;
	_tmp14_ = self->priv->in_group;
	clutter_actor_set_child_above_sibling (_tmp13_, _tmp14_, NULL);
	_tmp15_ = screen;
	meta_screen_get_size (_tmp15_, &_tmp16_, &_tmp17_);
	screen_width = _tmp16_;
	screen_height = _tmp17_;
	_tmp18_ = screen;
	_tmp19_ = meta_get_window_actors (_tmp18_);
	{
		GList* actor_collection = NULL;
		GList* actor_it = NULL;
		actor_collection = _tmp19_;
		for (actor_it = actor_collection; actor_it != NULL; actor_it = actor_it->next) {
			MetaWindowActor* actor = NULL;
			actor = (MetaWindowActor*) actor_it->data;
			{
				MetaWindow* window = NULL;
				MetaWindowActor* _tmp20_ = NULL;
				MetaWindow* _tmp21_ = NULL;
				MetaWindow* _tmp22_ = NULL;
				gboolean _tmp23_ = FALSE;
				MetaWindow* _tmp24_ = NULL;
				gboolean _tmp25_ = FALSE;
				MetaWorkspace* space = NULL;
				MetaWindow* _tmp28_ = NULL;
				MetaWorkspace* _tmp29_ = NULL;
				MetaWorkspace* _tmp30_ = NULL;
				gint win_space = 0;
				MetaWorkspace* _tmp31_ = NULL;
				gint _tmp32_ = 0;
				gboolean _tmp33_ = FALSE;
				gint _tmp34_ = 0;
				gint _tmp35_ = 0;
				_tmp20_ = actor;
				_tmp21_ = meta_window_actor_get_meta_window (_tmp20_);
				_tmp22_ = _g_object_ref0 (_tmp21_);
				window = _tmp22_;
				_tmp24_ = window;
				_tmp25_ = meta_window_showing_on_its_workspace (_tmp24_);
				if (!_tmp25_) {
					_tmp23_ = TRUE;
				} else {
					MetaWindow* _tmp26_ = NULL;
					gboolean _tmp27_ = FALSE;
					_tmp26_ = window;
					_tmp27_ = meta_window_is_on_all_workspaces (_tmp26_);
					_tmp23_ = _tmp27_;
				}
				if (_tmp23_) {
					_g_object_unref0 (window);
					continue;
				}
				_tmp28_ = window;
				_tmp29_ = meta_window_get_workspace (_tmp28_);
				_tmp30_ = _g_object_ref0 (_tmp29_);
				space = _tmp30_;
				_tmp31_ = space;
				_tmp32_ = meta_workspace_index (_tmp31_);
				win_space = _tmp32_;
				_tmp34_ = win_space;
				_tmp35_ = to;
				if (_tmp34_ == _tmp35_) {
					_tmp33_ = TRUE;
				} else {
					gint _tmp36_ = 0;
					gint _tmp37_ = 0;
					_tmp36_ = win_space;
					_tmp37_ = from;
					_tmp33_ = _tmp36_ == _tmp37_;
				}
				if (_tmp33_) {
					ClutterActor* orig_parent = NULL;
					MetaWindowActor* _tmp38_ = NULL;
					ClutterActor* _tmp39_ = NULL;
					ClutterActor* _tmp40_ = NULL;
					ClutterActor* _tmp41_ = NULL;
					gint _tmp42_ = 0;
					gint _tmp43_ = 0;
					ClutterActor* new_parent = NULL;
					MetaWindowActor* _tmp46_ = NULL;
					ClutterActor* _tmp47_ = NULL;
					ClutterActor* _tmp48_ = NULL;
					MetaWindowActor* _tmp49_ = NULL;
					ClutterActor* _tmp50_ = NULL;
					MetaWindowActor* _tmp51_ = NULL;
					ClutterActor* _tmp52_ = NULL;
					MetaWindowActor* _tmp53_ = NULL;
					MetaWindowActor* _tmp54_ = NULL;
					_tmp38_ = actor;
					_tmp39_ = clutter_actor_get_parent ((ClutterActor*) _tmp38_);
					_tmp40_ = _g_object_ref0 (_tmp39_);
					orig_parent = _tmp40_;
					_tmp42_ = win_space;
					_tmp43_ = to;
					if (_tmp42_ == _tmp43_) {
						ClutterActor* _tmp44_ = NULL;
						_tmp44_ = self->priv->in_group;
						_tmp41_ = _tmp44_;
					} else {
						ClutterActor* _tmp45_ = NULL;
						_tmp45_ = self->priv->out_group;
						_tmp41_ = _tmp45_;
					}
					new_parent = _tmp41_;
					_tmp46_ = actor;
					_tmp47_ = orig_parent;
					_tmp48_ = _g_object_ref0 (_tmp47_);
					g_object_set_data_full ((GObject*) _tmp46_, "orig-parent", _tmp48_, g_object_unref);
					_tmp49_ = actor;
					g_object_ref ((GObject*) _tmp49_);
					_tmp50_ = orig_parent;
					_tmp51_ = actor;
					clutter_actor_remove_child (_tmp50_, (ClutterActor*) _tmp51_);
					_tmp52_ = new_parent;
					_tmp53_ = actor;
					clutter_actor_add_child (_tmp52_, (ClutterActor*) _tmp53_);
					_tmp54_ = actor;
					g_object_unref ((GObject*) _tmp54_);
					_g_object_unref0 (orig_parent);
				}
				_g_object_unref0 (space);
				_g_object_unref0 (window);
			}
		}
	}
	y_dest = 0;
	x_dest = 0;
	_tmp57_ = direction;
	if (_tmp57_ == META_MOTION_UP) {
		_tmp56_ = TRUE;
	} else {
		MetaMotionDirection _tmp58_ = 0;
		_tmp58_ = direction;
		_tmp56_ = _tmp58_ == META_MOTION_UP_LEFT;
	}
	if (_tmp56_) {
		_tmp55_ = TRUE;
	} else {
		MetaMotionDirection _tmp59_ = 0;
		_tmp59_ = direction;
		_tmp55_ = _tmp59_ == META_MOTION_UP_RIGHT;
	}
	if (_tmp55_) {
		gint _tmp60_ = 0;
		_tmp60_ = screen_height;
		y_dest = _tmp60_;
	} else {
		gboolean _tmp61_ = FALSE;
		gboolean _tmp62_ = FALSE;
		MetaMotionDirection _tmp63_ = 0;
		_tmp63_ = direction;
		if (_tmp63_ == META_MOTION_DOWN) {
			_tmp62_ = TRUE;
		} else {
			MetaMotionDirection _tmp64_ = 0;
			_tmp64_ = direction;
			_tmp62_ = _tmp64_ == META_MOTION_DOWN_LEFT;
		}
		if (_tmp62_) {
			_tmp61_ = TRUE;
		} else {
			MetaMotionDirection _tmp65_ = 0;
			_tmp65_ = direction;
			_tmp61_ = _tmp65_ == META_MOTION_DOWN_RIGHT;
		}
		if (_tmp61_) {
			gint _tmp66_ = 0;
			_tmp66_ = screen_height;
			y_dest = -_tmp66_;
		}
	}
	_tmp69_ = direction;
	if (_tmp69_ == META_MOTION_LEFT) {
		_tmp68_ = TRUE;
	} else {
		MetaMotionDirection _tmp70_ = 0;
		_tmp70_ = direction;
		_tmp68_ = _tmp70_ == META_MOTION_UP_LEFT;
	}
	if (_tmp68_) {
		_tmp67_ = TRUE;
	} else {
		MetaMotionDirection _tmp71_ = 0;
		_tmp71_ = direction;
		_tmp67_ = _tmp71_ == META_MOTION_DOWN_LEFT;
	}
	if (_tmp67_) {
		gint _tmp72_ = 0;
		_tmp72_ = screen_width;
		x_dest = _tmp72_;
	} else {
		gboolean _tmp73_ = FALSE;
		gboolean _tmp74_ = FALSE;
		MetaMotionDirection _tmp75_ = 0;
		_tmp75_ = direction;
		if (_tmp75_ == META_MOTION_RIGHT) {
			_tmp74_ = TRUE;
		} else {
			MetaMotionDirection _tmp76_ = 0;
			_tmp76_ = direction;
			_tmp74_ = _tmp76_ == META_MOTION_UP_RIGHT;
		}
		if (_tmp74_) {
			_tmp73_ = TRUE;
		} else {
			MetaMotionDirection _tmp77_ = 0;
			_tmp77_ = direction;
			_tmp73_ = _tmp77_ == META_MOTION_DOWN_RIGHT;
		}
		if (_tmp73_) {
			gint _tmp78_ = 0;
			_tmp78_ = screen_width;
			x_dest = -_tmp78_;
		}
	}
	_tmp79_ = self->priv->in_group;
	_tmp80_ = x_dest;
	_tmp81_ = y_dest;
	clutter_actor_set_position (_tmp79_, (gfloat) (-_tmp80_), (gfloat) (-_tmp81_));
	_tmp82_ = self->priv->in_group;
	clutter_actor_save_easing_state (_tmp82_);
	_tmp83_ = self->priv->in_group;
	clutter_actor_set_easing_mode (_tmp83_, CLUTTER_EASE_OUT_QUAD);
	_tmp84_ = self->priv->in_group;
	clutter_actor_set_easing_duration (_tmp84_, (guint) BUDGIE_BUDGIE_WM_SWITCH_TIMEOUT);
	_tmp85_ = self->priv->in_group;
	clutter_actor_set_position (_tmp85_, (gfloat) 0, (gfloat) 0);
	_tmp86_ = self->priv->in_group;
	clutter_actor_restore_easing_state (_tmp86_);
	_tmp87_ = self->priv->out_group;
	g_signal_connect_object (_tmp87_, "transitions-completed", (GCallback) _budgie_budgie_wm_switch_workspace_done_clutter_actor_transitions_completed, self, 0);
	_tmp88_ = self->priv->out_group;
	clutter_actor_save_easing_state (_tmp88_);
	_tmp89_ = self->priv->out_group;
	clutter_actor_set_easing_mode (_tmp89_, CLUTTER_EASE_OUT_QUAD);
	_tmp90_ = self->priv->out_group;
	clutter_actor_set_easing_duration (_tmp90_, (guint) BUDGIE_BUDGIE_WM_SWITCH_TIMEOUT);
	_tmp91_ = self->priv->out_group;
	_tmp92_ = x_dest;
	_tmp93_ = y_dest;
	clutter_actor_set_position (_tmp91_, (gfloat) _tmp92_, (gfloat) _tmp93_);
	_tmp94_ = self->priv->out_group;
	clutter_actor_restore_easing_state (_tmp94_);
	_g_object_unref0 (stage);
	_g_object_unref0 (screen);
}


BudgieBudgieWM* budgie_budgie_wm_construct (GType object_type) {
	BudgieBudgieWM * self = NULL;
	self = (BudgieBudgieWM*) g_object_new (object_type, NULL);
	return self;
}


BudgieBudgieWM* budgie_budgie_wm_new (void) {
	return budgie_budgie_wm_construct (BUDGIE_TYPE_BUDGIE_WM);
}


gboolean budgie_budgie_wm_get_use_animations (BudgieBudgieWM* self) {
	gboolean result;
	gboolean _tmp0_ = FALSE;
	g_return_val_if_fail (self != NULL, FALSE);
	_tmp0_ = self->priv->_use_animations;
	result = _tmp0_;
	return result;
}


void budgie_budgie_wm_set_use_animations (BudgieBudgieWM* self, gboolean value) {
	gboolean _tmp0_ = FALSE;
	g_return_if_fail (self != NULL);
	_tmp0_ = value;
	self->priv->_use_animations = _tmp0_;
	g_object_notify ((GObject *) self, "use-animations");
}


static void _vala_ClutterPoint_free (ClutterPoint* self) {
	g_boxed_free (clutter_point_get_type (), self);
}


static void budgie_budgie_wm_class_init (BudgieBudgieWMClass * klass) {
	MetaPluginInfo _tmp0_ = {0};
	MetaPluginInfo _tmp1_ = {0};
	ClutterPoint* _tmp2_ = NULL;
	ClutterPoint* _tmp3_ = NULL;
	ClutterPoint* _tmp4_ = NULL;
	ClutterPoint* _tmp5_ = NULL;
	ClutterPoint* _tmp6_ = NULL;
	ClutterPoint* _tmp7_ = NULL;
	budgie_budgie_wm_parent_class = g_type_class_peek_parent (klass);
	g_type_class_add_private (klass, sizeof (BudgieBudgieWMPrivate));
	((MetaPluginClass *) klass)->plugin_info = budgie_budgie_wm_real_plugin_info;
	((MetaPluginClass *) klass)->confirm_display_change = budgie_budgie_wm_real_confirm_display_change;
	((MetaPluginClass *) klass)->start = budgie_budgie_wm_real_start;
	((MetaPluginClass *) klass)->show_window_menu = budgie_budgie_wm_real_show_window_menu;
	((MetaPluginClass *) klass)->map = budgie_budgie_wm_real_map;
	((MetaPluginClass *) klass)->minimize = budgie_budgie_wm_real_minimize;
	((MetaPluginClass *) klass)->unminimize = budgie_budgie_wm_real_unminimize;
	((MetaPluginClass *) klass)->destroy = budgie_budgie_wm_real_destroy;
	((MetaPluginClass *) klass)->show_tile_preview = budgie_budgie_wm_real_show_tile_preview;
	((MetaPluginClass *) klass)->hide_tile_preview = budgie_budgie_wm_real_hide_tile_preview;
	((MetaPluginClass *) klass)->kill_switch_workspace = budgie_budgie_wm_real_kill_switch_workspace;
	((MetaPluginClass *) klass)->switch_workspace = budgie_budgie_wm_real_switch_workspace;
	G_OBJECT_CLASS (klass)->get_property = _vala_budgie_budgie_wm_get_property;
	G_OBJECT_CLASS (klass)->set_property = _vala_budgie_budgie_wm_set_property;
	G_OBJECT_CLASS (klass)->finalize = budgie_budgie_wm_finalize;
	g_object_class_install_property (G_OBJECT_CLASS (klass), BUDGIE_BUDGIE_WM_USE_ANIMATIONS, g_param_spec_boolean ("use-animations", "use-animations", "use-animations", TRUE, G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB | G_PARAM_READABLE | G_PARAM_WRITABLE));
	memset (&_tmp0_, 0, sizeof (MetaPluginInfo));
	_tmp0_.name = "Budgie WM";
	_tmp0_.version = BUDGIE_VERSION;
	_tmp0_.author = "Ikey Doherty";
	_tmp0_.license = "GPL-2.0";
	_tmp0_.description = "Budgie Window Manager";
	budgie_budgie_wm_info = _tmp0_;
	_tmp1_ = budgie_budgie_wm_info;
	_tmp2_ = clutter_point_alloc ();
	__vala_ClutterPoint_free0 (budgie_budgie_wm_PV_CENTER);
	budgie_budgie_wm_PV_CENTER = _tmp2_;
	_tmp3_ = budgie_budgie_wm_PV_CENTER;
	_tmp3_->x = 0.5f;
	_tmp4_ = budgie_budgie_wm_PV_CENTER;
	_tmp4_->y = 0.5f;
	_tmp5_ = clutter_point_alloc ();
	__vala_ClutterPoint_free0 (budgie_budgie_wm_PV_NORM);
	budgie_budgie_wm_PV_NORM = _tmp5_;
	_tmp6_ = budgie_budgie_wm_PV_NORM;
	_tmp6_->x = 0.0f;
	_tmp7_ = budgie_budgie_wm_PV_NORM;
	_tmp7_->y = 0.0f;
}


static void budgie_budgie_wm_instance_init (BudgieBudgieWM * self) {
	self->priv = BUDGIE_BUDGIE_WM_GET_PRIVATE (self);
	self->priv->_use_animations = TRUE;
	self->priv->menu = NULL;
	self->priv->keyboard = NULL;
	self->priv->settings = NULL;
	self->priv->raven_proxy = NULL;
	self->priv->shim = NULL;
	self->priv->focus_interface = NULL;
	self->priv->panel_proxy = NULL;
	self->priv->winmenu = NULL;
	self->priv->logind_proxy = NULL;
	self->priv->force_unredirect = FALSE;
	self->priv->focused_window = NULL;
	self->priv->tile_preview = NULL;
	self->priv->default_tile_opacity = NULL;
	self->priv->cur_workspace = NULL;
	self->priv->cur_tabs = NULL;
	self->priv->cur_index = 0;
	self->priv->last_time = (guint32) -1;
	self->priv->out_group = NULL;
	self->priv->in_group = NULL;
}


static void budgie_budgie_wm_finalize (GObject* obj) {
	BudgieBudgieWM * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, BUDGIE_TYPE_BUDGIE_WM, BudgieBudgieWM);
	_g_object_unref0 (self->priv->background_group);
	_g_object_unref0 (self->priv->menu);
	_g_object_unref0 (self->priv->keyboard);
	_g_object_unref0 (self->priv->settings);
	_g_object_unref0 (self->priv->raven_proxy);
	_g_object_unref0 (self->priv->shim);
	_g_object_unref0 (self->priv->focus_interface);
	_g_object_unref0 (self->priv->panel_proxy);
	_g_object_unref0 (self->priv->winmenu);
	_g_object_unref0 (self->priv->logind_proxy);
	_g_hash_table_unref0 (self->priv->state_map);
	_g_object_unref0 (self->priv->tile_preview);
	_g_free0 (self->priv->default_tile_opacity);
	_g_list_free0 (self->priv->cur_tabs);
	_g_object_unref0 (self->priv->out_group);
	_g_object_unref0 (self->priv->in_group);
	G_OBJECT_CLASS (budgie_budgie_wm_parent_class)->finalize (obj);
}


GType budgie_budgie_wm_get_type (void) {
	static volatile gsize budgie_budgie_wm_type_id__volatile = 0;
	if (g_once_init_enter (&budgie_budgie_wm_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (BudgieBudgieWMClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) budgie_budgie_wm_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (BudgieBudgieWM), 0, (GInstanceInitFunc) budgie_budgie_wm_instance_init, NULL };
		GType budgie_budgie_wm_type_id;
		budgie_budgie_wm_type_id = g_type_register_static (meta_plugin_get_type (), "BudgieBudgieWM", &g_define_type_info, 0);
		g_once_init_leave (&budgie_budgie_wm_type_id__volatile, budgie_budgie_wm_type_id);
	}
	return budgie_budgie_wm_type_id__volatile;
}


static void _vala_budgie_budgie_wm_get_property (GObject * object, guint property_id, GValue * value, GParamSpec * pspec) {
	BudgieBudgieWM * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, BUDGIE_TYPE_BUDGIE_WM, BudgieBudgieWM);
	switch (property_id) {
		case BUDGIE_BUDGIE_WM_USE_ANIMATIONS:
		g_value_set_boolean (value, budgie_budgie_wm_get_use_animations (self));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}


static void _vala_budgie_budgie_wm_set_property (GObject * object, guint property_id, const GValue * value, GParamSpec * pspec) {
	BudgieBudgieWM * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (object, BUDGIE_TYPE_BUDGIE_WM, BudgieBudgieWM);
	switch (property_id) {
		case BUDGIE_BUDGIE_WM_USE_ANIMATIONS:
		budgie_budgie_wm_set_use_animations (self, g_value_get_boolean (value));
		break;
		default:
		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
		break;
	}
}


BudgieBudgieWMDBUS* budgie_budgie_wmdbus_construct (GType object_type, BudgieBudgieWM* wm) {
	BudgieBudgieWMDBUS * self = NULL;
	BudgieBudgieWM* _tmp0_ = NULL;
	self = (BudgieBudgieWMDBUS*) g_object_new (object_type, NULL);
	_tmp0_ = wm;
	self->priv->wm = _tmp0_;
	return self;
}


BudgieBudgieWMDBUS* budgie_budgie_wmdbus_new (BudgieBudgieWM* wm) {
	return budgie_budgie_wmdbus_construct (BUDGIE_TYPE_BUDGIE_WMDBUS, wm);
}


static void budgie_budgie_wmdbus_on_bus_acquired (BudgieBudgieWMDBUS* self, GDBusConnection* conn) {
	GError * _inner_error_ = NULL;
	g_return_if_fail (self != NULL);
	g_return_if_fail (conn != NULL);
	{
		GDBusConnection* _tmp0_ = NULL;
		_tmp0_ = conn;
		budgie_budgie_wmdbus_register_object (self, _tmp0_, "/com/solus_project/budgie/BudgieWM", &_inner_error_);
		if (G_UNLIKELY (_inner_error_ != NULL)) {
			goto __catch19_g_error;
		}
	}
	goto __finally19;
	__catch19_g_error:
	{
		GError* e = NULL;
		GError* _tmp1_ = NULL;
		const gchar* _tmp2_ = NULL;
		e = _inner_error_;
		_inner_error_ = NULL;
		_tmp1_ = e;
		_tmp2_ = _tmp1_->message;
		g_message ("wm.vala:1128: Unable to register BudgieWMDBUS: %s", _tmp2_);
		_g_error_free0 (e);
	}
	__finally19:
	if (G_UNLIKELY (_inner_error_ != NULL)) {
		g_critical ("file %s: line %d: uncaught error: %s (%s, %d)", __FILE__, __LINE__, _inner_error_->message, g_quark_to_string (_inner_error_->domain), _inner_error_->code);
		g_clear_error (&_inner_error_);
		return;
	}
}


static void _budgie_budgie_wmdbus_on_bus_acquired_gbus_acquired_callback (GDBusConnection* connection, const gchar* name, gpointer self) {
	budgie_budgie_wmdbus_on_bus_acquired ((BudgieBudgieWMDBUS*) self, connection);
}


void budgie_budgie_wmdbus_serve (BudgieBudgieWMDBUS* self) {
	g_return_if_fail (self != NULL);
	g_bus_own_name_with_closures (G_BUS_TYPE_SESSION, "com.solus_project.budgie.BudgieWM", G_BUS_NAME_OWNER_FLAGS_ALLOW_REPLACEMENT | G_BUS_NAME_OWNER_FLAGS_REPLACE, (GClosure*) ((_budgie_budgie_wmdbus_on_bus_acquired_gbus_acquired_callback == NULL) ? NULL : g_cclosure_new ((GCallback) _budgie_budgie_wmdbus_on_bus_acquired_gbus_acquired_callback, g_object_ref (self), g_object_unref)), (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, NULL)), (GClosure*) ((NULL == NULL) ? NULL : g_cclosure_new ((GCallback) NULL, NULL, NULL)));
}


void budgie_budgie_wmdbus_store_focused (BudgieBudgieWMDBUS* self) {
	BudgieBudgieWM* _tmp0_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->wm;
	budgie_budgie_wm_store_focused (_tmp0_);
}


void budgie_budgie_wmdbus_restore_focused (BudgieBudgieWMDBUS* self) {
	BudgieBudgieWM* _tmp0_ = NULL;
	g_return_if_fail (self != NULL);
	_tmp0_ = self->priv->wm;
	budgie_budgie_wm_restore_focused (_tmp0_);
}


static void budgie_budgie_wmdbus_class_init (BudgieBudgieWMDBUSClass * klass) {
	budgie_budgie_wmdbus_parent_class = g_type_class_peek_parent (klass);
	g_type_class_add_private (klass, sizeof (BudgieBudgieWMDBUSPrivate));
	G_OBJECT_CLASS (klass)->finalize = budgie_budgie_wmdbus_finalize;
}


static void budgie_budgie_wmdbus_instance_init (BudgieBudgieWMDBUS * self) {
	self->priv = BUDGIE_BUDGIE_WMDBUS_GET_PRIVATE (self);
}


static void budgie_budgie_wmdbus_finalize (GObject* obj) {
	BudgieBudgieWMDBUS * self;
	self = G_TYPE_CHECK_INSTANCE_CAST (obj, BUDGIE_TYPE_BUDGIE_WMDBUS, BudgieBudgieWMDBUS);
	G_OBJECT_CLASS (budgie_budgie_wmdbus_parent_class)->finalize (obj);
}


/**
 * Store/restore focused window for use of the popover manager in budgie.
 * This part of the equation is inspired by wingpanel, which uses our
 * popover manager.
 */
GType budgie_budgie_wmdbus_get_type (void) {
	static volatile gsize budgie_budgie_wmdbus_type_id__volatile = 0;
	if (g_once_init_enter (&budgie_budgie_wmdbus_type_id__volatile)) {
		static const GTypeInfo g_define_type_info = { sizeof (BudgieBudgieWMDBUSClass), (GBaseInitFunc) NULL, (GBaseFinalizeFunc) NULL, (GClassInitFunc) budgie_budgie_wmdbus_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (BudgieBudgieWMDBUS), 0, (GInstanceInitFunc) budgie_budgie_wmdbus_instance_init, NULL };
		GType budgie_budgie_wmdbus_type_id;
		budgie_budgie_wmdbus_type_id = g_type_register_static (G_TYPE_OBJECT, "BudgieBudgieWMDBUS", &g_define_type_info, 0);
		g_type_set_qdata (budgie_budgie_wmdbus_type_id, g_quark_from_static_string ("vala-dbus-register-object"), (void*) budgie_budgie_wmdbus_register_object);
		g_once_init_leave (&budgie_budgie_wmdbus_type_id__volatile, budgie_budgie_wmdbus_type_id);
	}
	return budgie_budgie_wmdbus_type_id__volatile;
}


static void _dbus_budgie_budgie_wmdbus_store_focused (BudgieBudgieWMDBUS* self, GVariant* _parameters_, GDBusMethodInvocation* invocation) {
	GError* error = NULL;
	GVariantIter _arguments_iter;
	GDBusMessage* _reply_message;
	GVariant* _reply;
	GVariantBuilder _reply_builder;
	g_variant_iter_init (&_arguments_iter, _parameters_);
	budgie_budgie_wmdbus_store_focused (self);
	_reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation));
	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
	_reply = g_variant_builder_end (&_reply_builder);
	g_dbus_message_set_body (_reply_message, _reply);
	g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
	g_object_unref (invocation);
	g_object_unref (_reply_message);
}


static void _dbus_budgie_budgie_wmdbus_restore_focused (BudgieBudgieWMDBUS* self, GVariant* _parameters_, GDBusMethodInvocation* invocation) {
	GError* error = NULL;
	GVariantIter _arguments_iter;
	GDBusMessage* _reply_message;
	GVariant* _reply;
	GVariantBuilder _reply_builder;
	g_variant_iter_init (&_arguments_iter, _parameters_);
	budgie_budgie_wmdbus_restore_focused (self);
	_reply_message = g_dbus_message_new_method_reply (g_dbus_method_invocation_get_message (invocation));
	g_variant_builder_init (&_reply_builder, G_VARIANT_TYPE_TUPLE);
	_reply = g_variant_builder_end (&_reply_builder);
	g_dbus_message_set_body (_reply_message, _reply);
	g_dbus_connection_send_message (g_dbus_method_invocation_get_connection (invocation), _reply_message, G_DBUS_SEND_MESSAGE_FLAGS_NONE, NULL, NULL);
	g_object_unref (invocation);
	g_object_unref (_reply_message);
}


static void budgie_budgie_wmdbus_dbus_interface_method_call (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* method_name, GVariant* parameters, GDBusMethodInvocation* invocation, gpointer user_data) {
	gpointer* data;
	gpointer object;
	data = user_data;
	object = data[0];
	if (strcmp (method_name, "StoreFocused") == 0) {
		_dbus_budgie_budgie_wmdbus_store_focused (object, parameters, invocation);
	} else if (strcmp (method_name, "RestoreFocused") == 0) {
		_dbus_budgie_budgie_wmdbus_restore_focused (object, parameters, invocation);
	} else {
		g_object_unref (invocation);
	}
}


static GVariant* budgie_budgie_wmdbus_dbus_interface_get_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GError** error, gpointer user_data) {
	gpointer* data;
	gpointer object;
	data = user_data;
	object = data[0];
	return NULL;
}


static gboolean budgie_budgie_wmdbus_dbus_interface_set_property (GDBusConnection* connection, const gchar* sender, const gchar* object_path, const gchar* interface_name, const gchar* property_name, GVariant* value, GError** error, gpointer user_data) {
	gpointer* data;
	gpointer object;
	data = user_data;
	object = data[0];
	return FALSE;
}


guint budgie_budgie_wmdbus_register_object (gpointer object, GDBusConnection* connection, const gchar* path, GError** error) {
	guint result;
	gpointer *data;
	data = g_new (gpointer, 3);
	data[0] = g_object_ref (object);
	data[1] = g_object_ref (connection);
	data[2] = g_strdup (path);
	result = g_dbus_connection_register_object (connection, path, (GDBusInterfaceInfo *) (&_budgie_budgie_wmdbus_dbus_interface_info), &_budgie_budgie_wmdbus_dbus_interface_vtable, data, _budgie_budgie_wmdbus_unregister_object, error);
	if (!result) {
		return 0;
	}
	return result;
}


static void _budgie_budgie_wmdbus_unregister_object (gpointer user_data) {
	gpointer* data;
	data = user_data;
	g_object_unref (data[0]);
	g_object_unref (data[1]);
	g_free (data[2]);
	g_free (data);
}



