## shell-global shell-global |

## Functions

ShellGlobal * | shell_global_get ()
MetaContext * | shell_global_get_context ()
ClutterStage * | shell_global_get_stage ()
MetaDisplay * | shell_global_get_display ()
GList * | shell_global_get_window_actors ()
GSettings * | shell_global_get_settings ()
guint32 | shell_global_get_current_time ()
MetaWorkspaceManager * | shell_global_get_workspace_manager ()
void | shell_global_set_stage_input_region ()
void | shell_global_get_pointer ()
void | shell_global_begin_work ()
void | shell_global_end_work ()
void | (*ShellLeisureFunction) ()
void | shell_global_run_at_leisure ()
GDBusProxy * | shell_global_get_switcheroo_control ()
GAppLaunchContext * | shell_global_create_app_launch_context ()
void | shell_global_notify_error ()
void | shell_global_reexec_self ()
const char * | shell_global_get_session_mode ()
void | shell_global_set_runtime_state ()
GVariant * | shell_global_get_runtime_state ()
void | shell_global_set_persistent_state ()
GVariant * | shell_global_get_persistent_state ()
ShellWindowTracker * | shell_global_get_window_tracker ()
ShellAppSystem * | shell_global_get_app_system ()
ShellAppUsage * | shell_global_get_app_usage ()

## Types and Values

#define | SHELL_TYPE_GLOBAL
| ShellMemoryInfo
| ShellGlobal

## Description

## Functions

### shell_global_get ()

    ShellGlobal *
    shell_global_get (void);

Gets the singleton global object that represents the desktop.

#### Returns

the singleton global object.

[transfer none]

### shell_global_get_context ()

    MetaContext *
    shell_global_get_context (ShellGlobal *global);

#### Returns

The MetaContext.

[transfer none]

### shell_global_get_stage ()

    ClutterStage *
    shell_global_get_stage (ShellGlobal *global);

#### Returns

The default ClutterStage.

[transfer none]

### shell_global_get_display ()

    MetaDisplay *
    shell_global_get_display (ShellGlobal *global);

#### Returns

The default MetaDisplay.

[transfer none]

### shell_global_get_window_actors ()

    GList *
    shell_global_get_window_actors (ShellGlobal *global);

Gets the list of MetaWindowActor for the plugin's screen

#### Returns

the list of windows.

[element-type Meta.WindowActor][transfer container]

### shell_global_get_settings ()

    GSettings *
    shell_global_get_settings (ShellGlobal *global);

Get the global GSettings instance.

#### Parameters

global | A ShellGlobal |

#### Returns

The GSettings object.

[transfer none]

### shell_global_get_current_time ()

    guint32
    shell_global_get_current_time (ShellGlobal *global);

#### Parameters

global | A ShellGlobal |

#### Returns

the current X server time from the current Clutter, Gdk, or X event. If called from outside an event handler, this may return `Clutter`.CURRENT_TIME (aka 0), or it may return a slightly out-of-date timestamp.

### shell_global_get_workspace_manager ()

    MetaWorkspaceManager *
    shell_global_get_workspace_manager (ShellGlobal *global);

#### Returns

The default MetaWorkspaceManager.

[transfer none]

### shell_global_set_stage_input_region ()

    void
    shell_global_set_stage_input_region (ShellGlobal *global,
                                         GSList *rectangles);

Sets the area of the stage that is responsive to mouse clicks when we don't have a modal or grab.

#### Parameters

global | the ShellGlobal |
rectangles | a list of MtkRectangle describing the input region. | [element-type Mtk.Rectangle]

### shell_global_get_pointer ()

    void
    shell_global_get_pointer (ShellGlobal *global,
                              int *x,
                              int *y,
                              ClutterModifierType *mods);

Gets the pointer coordinates and current modifier key state.

#### Parameters

global | the ShellGlobal |
x | the X coordinate of the pointer, in global coordinates. | [out]
y | the Y coordinate of the pointer, in global coordinates. | [out]
mods | the current set of modifier keys that are pressed down. | [out]

### shell_global_begin_work ()

    void
    shell_global_begin_work (ShellGlobal *global);

Marks that we are currently doing work. This is used to to track whether we are busy for the purposes of `shell_global_run_at_leisure()`. A count is kept and `shell_global_end_work()` must be called exactly as many times as `shell_global_begin_work()`.

#### Parameters

global | the ShellGlobal |

### shell_global_end_work ()

    void
    shell_global_end_work (ShellGlobal *global);

Marks the end of work that we started with `shell_global_begin_work()`. If no other work is ongoing and functions have been added with `shell_global_run_at_leisure()`, they will be run at the next opportunity.

#### Parameters

global | the ShellGlobal |

### ShellLeisureFunction ()

    void
    (*ShellLeisureFunction) (gpointer data);

### shell_global_run_at_leisure ()

    void
    shell_global_run_at_leisure (ShellGlobal *global,
                                 ShellLeisureFunction func,
                                 gpointer user_data,
                                 GDestroyNotify notify);

Schedules a function to be called the next time the shell is idle. Idle means here no animations, no redrawing, and no ongoing background work. Since there is currently no way to hook into the Clutter master clock and know when is running, the implementation here is somewhat approximation. Animations may be detected as terminating early if they can be drawn fast enough so that the event loop goes idle between frames.

The intent of this function is for performance measurement runs where a number of actions should be run serially and each action is timed individually. Using this function for other purposes will interfere with the ability to use it for performance measurement so should be avoided.

#### Parameters

global | the ShellGlobal |
func | function to call at leisure |
user_data | data to pass to `func` |
notify | function to call to free `user_data` |

### shell_global_get_switcheroo_control ()

    GDBusProxy *
    shell_global_get_switcheroo_control (ShellGlobal *global);

Get the global GDBusProxy instance for the switcheroo-control daemon.

#### Parameters

global | A ShellGlobal |

#### Returns

the GDBusProxy for the daemon, or `NULL` on error.

[transfer none]

### shell_global_create_app_launch_context ()

    GAppLaunchContext *
    shell_global_create_app_launch_context
                                   (ShellGlobal *global,
                                    guint32 timestamp,
                                    int workspace);

Create a GAppLaunchContext set up with the correct timestamp, and targeted to activate on the current workspace.

#### Parameters

global | A ShellGlobal |
timestamp | the timestamp for the launch (or 0 for current time) |
workspace | a workspace index, or -1 to indicate the current one |

#### Returns

A new GAppLaunchContext.

[transfer full]

### shell_global_notify_error ()

    void
    shell_global_notify_error (ShellGlobal *global,
                               const char *msg,
                               const char *details);

Show a system error notification. Use this function when a user-initiated action results in a non-fatal problem from causes that may not be under system control. For example, an application crash.

#### Parameters

global | a ShellGlobal |
msg | Error message |
details | Error details |

### shell_global_reexec_self ()

    void
    shell_global_reexec_self (ShellGlobal *global);

Restart the current process. Only intended for development purposes.

#### Parameters

global | A ShellGlobal |

### shell_global_get_session_mode ()

    const char *
    shell_global_get_session_mode (ShellGlobal *global);

### shell_global_set_runtime_state ()

    void
    shell_global_set_runtime_state (ShellGlobal *global,
                                    const char *property_name,
                                    GVariant *variant);

Change the value of serialized runtime state.

#### Parameters

global | a ShellGlobal |
property_name | Name of the property |
variant | A GVariant, or `NULL` to unset. | [nullable]

### shell_global_get_runtime_state ()

    GVariant *
    shell_global_get_runtime_state (ShellGlobal *global,
                                    const char *property_type,
                                    const char *property_name);

The shell maintains "runtime" state which does not persist across logout or reboot.

#### Parameters

global | a ShellGlobal |
property_type | Expected data type |
property_name | Name of the property |

#### Returns

The value of a serialized property, or `NULL` if none stored.

[transfer floating]

### shell_global_set_persistent_state ()

    void
    shell_global_set_persistent_state (ShellGlobal *global,
                                       const char *property_name,
                                       GVariant *variant);

Change the value of serialized persistent state.

#### Parameters

global | a ShellGlobal |
property_name | Name of the property |
variant | A GVariant, or `NULL` to unset. | [nullable]

### shell_global_get_persistent_state ()

    GVariant *
    shell_global_get_persistent_state (ShellGlobal *global,
                                       const char *property_type,
                                       const char *property_name);

The shell maintains "persistent" state which will persist after logout or reboot.

#### Parameters

global | a ShellGlobal |
property_type | Expected data type |
property_name | Name of the property |

#### Returns

The value of a serialized property, or `NULL` if none stored.

[transfer none]

### shell_global_get_window_tracker ()

    ShellWindowTracker *
    shell_global_get_window_tracker (ShellGlobal *global);

Gets window tracker.

#### Returns

the window tracker.

[transfer none]

### shell_global_get_app_system ()

    ShellAppSystem *
    shell_global_get_app_system (ShellGlobal *global);

Gets app system.

#### Returns

the app system.

[transfer none]

### shell_global_get_app_usage ()

    ShellAppUsage *
    shell_global_get_app_usage (ShellGlobal *global);

Gets app usage.

#### Returns

the app usage.

[transfer none]

## Types and Values

### SHELL_TYPE_GLOBAL

    #define SHELL_TYPE_GLOBAL (shell_global_get_type ())

### ShellMemoryInfo

    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;

### ShellGlobal

    typedef struct _ShellGlobal ShellGlobal;