gnome-shell/src/shell-global.h
Florian Müllner ae2751a68b main: Move pref overrides back into C
Commit 6c2f3d1d17 moved pref overrides into JS to implement
session mode specific overrides in a clean and generic way.
However that approach comes with a cost - doing the overrides only
after having handled over control to JS means that the core will
be initialized with the non-overridden settings before changing
to the correct values. In the best case this is unnecessary work,
but it can in fact have a worse effect: when initializing workspaces,
we will restore the previous number of workspaces when using
dynamic-workspaces and reset to the configured number otherwise.
As the non-overridden default for dynamic-workspaces is FALSE, we
can easily end up moving the user's windows to the "wrong" workspace.

Now GSettings is expected to grow support for session specific defaults,
which will render our entire override system obsolete (yay!). Given
that, it seems acceptable to use a less generic (and uglier) approach
in the meanwhile, in order to fix aforementioned problems. So move
overrides back before core initialization and just hardcode the
session-mode => override-schema relation.

https://bugzilla.gnome.org/show_bug.cgi?id=695487
2014-06-09 21:52:03 +02:00

148 lines
7.0 KiB
C

/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
#ifndef __SHELL_GLOBAL_H__
#define __SHELL_GLOBAL_H__
#include <clutter/clutter.h>
#include <glib-object.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gtk/gtk.h>
#include <meta/meta-plugin.h>
G_BEGIN_DECLS
typedef struct _ShellGlobal ShellGlobal;
typedef struct _ShellGlobalClass ShellGlobalClass;
#define SHELL_TYPE_GLOBAL (shell_global_get_type ())
#define SHELL_GLOBAL(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SHELL_TYPE_GLOBAL, ShellGlobal))
#define SHELL_GLOBAL_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SHELL_TYPE_GLOBAL, ShellGlobalClass))
#define SHELL_IS_GLOBAL(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SHELL_TYPE_GLOBAL))
#define SHELL_IS_GLOBAL_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SHELL_TYPE_GLOBAL))
#define SHELL_GLOBAL_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SHELL_TYPE_GLOBAL, ShellGlobalClass))
struct _ShellGlobalClass
{
GObjectClass parent_class;
};
GType shell_global_get_type (void) G_GNUC_CONST;
ShellGlobal *shell_global_get (void);
ClutterStage *shell_global_get_stage (ShellGlobal *global);
MetaScreen *shell_global_get_screen (ShellGlobal *global);
GdkScreen *shell_global_get_gdk_screen (ShellGlobal *global);
MetaDisplay *shell_global_get_display (ShellGlobal *global);
GList *shell_global_get_window_actors (ShellGlobal *global);
GSettings *shell_global_get_settings (ShellGlobal *global);
GSettings *shell_global_get_overrides_settings (ShellGlobal *global);
guint32 shell_global_get_current_time (ShellGlobal *global);
/* Input/event handling */
gboolean shell_global_begin_modal (ShellGlobal *global,
guint32 timestamp,
MetaModalOptions options);
void shell_global_end_modal (ShellGlobal *global,
guint32 timestamp);
void shell_global_freeze_keyboard (ShellGlobal *global,
guint32 timestamp);
void shell_global_set_stage_input_region (ShellGlobal *global,
GSList *rectangles);
void shell_global_get_pointer (ShellGlobal *global,
int *x,
int *y,
ClutterModifierType *mods);
typedef struct {
guint glibc_uordblks;
guint js_bytes;
guint gjs_boxed;
guint gjs_gobject;
guint gjs_function;
guint gjs_closure;
/* 32 bit to avoid js conversion problems with 64 bit */
guint last_gc_seconds_ago;
} ShellMemoryInfo;
/* Run-at-leisure API */
void shell_global_begin_work (ShellGlobal *global);
void shell_global_end_work (ShellGlobal *global);
typedef void (*ShellLeisureFunction) (gpointer data);
void shell_global_run_at_leisure (ShellGlobal *global,
ShellLeisureFunction func,
gpointer user_data,
GDestroyNotify notify);
/* Misc utilities / Shell API */
void shell_global_sync_pointer (ShellGlobal *global);
GAppLaunchContext *
shell_global_create_app_launch_context (ShellGlobal *global,
int timestamp,
int workspace);
void shell_global_play_theme_sound (ShellGlobal *global,
guint id,
const char *name,
const char *description,
ClutterEvent *for_event);
void shell_global_play_theme_sound_full (ShellGlobal *global,
guint id,
const char *name,
const char *description,
ClutterEvent *for_event,
const char *application_id,
const char *application_name);
void shell_global_play_sound_file (ShellGlobal *global,
guint id,
const char *file_name,
const char *description,
ClutterEvent *for_event);
void shell_global_play_sound_file_full (ShellGlobal *global,
guint id,
const char *file_name,
const char *description,
ClutterEvent *for_event,
const char *application_id,
const char *application_name);
void shell_global_cancel_theme_sound (ShellGlobal *global,
guint id);
void shell_global_notify_error (ShellGlobal *global,
const char *msg,
const char *details);
void shell_global_init_xdnd (ShellGlobal *global);
void shell_global_reexec_self (ShellGlobal *global);
const char * shell_global_get_session_mode (ShellGlobal *global);
void shell_global_set_runtime_state (ShellGlobal *global,
const char *property_name,
GVariant *variant);
GVariant * shell_global_get_runtime_state (ShellGlobal *global,
const char *property_type,
const char *property_name);
void shell_global_set_persistent_state (ShellGlobal *global,
const char *property_name,
GVariant *variant);
GVariant * shell_global_get_persistent_state (ShellGlobal *global,
const char *property_type,
const char *property_name);
G_END_DECLS
#endif /* __SHELL_GLOBAL_H__ */