## GdkDisplay GdkDisplay — Controls a set of monitors and their associated input devices |

## Functions

GdkDisplay * | gdk_display_open ()
GdkDisplay * | gdk_display_get_default ()
const char * | gdk_display_get_name ()
gboolean | gdk_display_device_is_grabbed ()
void | gdk_display_beep ()
void | gdk_display_sync ()
void | gdk_display_flush ()
void | gdk_display_close ()
gboolean | gdk_display_is_closed ()
gboolean | gdk_display_is_rgba ()
gboolean | gdk_display_is_composited ()
gboolean | gdk_display_supports_input_shapes ()
GdkAppLaunchContext * | gdk_display_get_app_launch_context ()
void | gdk_display_notify_startup_complete ()
GdkSeat * | gdk_display_get_default_seat ()
GList * | gdk_display_list_seats ()
GListModel * | gdk_display_get_monitors ()
GdkMonitor * | gdk_display_get_monitor_at_surface ()
GdkClipboard * | gdk_display_get_clipboard ()
GdkClipboard * | gdk_display_get_primary_clipboard ()
gboolean | gdk_display_get_setting ()
const char * | gdk_display_get_startup_notification_id ()
void | gdk_display_put_event ()
gboolean | gdk_display_map_keyval ()
gboolean | gdk_display_map_keycode ()
gboolean | gdk_display_translate_key ()

## Properties

gboolean | composited | Read
gboolean | input-shapes | Read
gboolean | rgba | Read

## Signals

void | closed | Run Last
void | opened | Run Last
void | seat-added | Run Last
void | seat-removed | Run Last
void | setting-changed | Run Last

## Types and Values

| GdkDisplay

## Object Hierarchy

        GObject
        ╰── GdkDisplay

## Includes

    #include <gdk/gdk.h>

## Description

GdkDisplay objects are the GDK representation of a workstation.

Their purpose are two-fold:

- To manage and provide information about input devices (pointers, keyboards, etc)

- To manage and provide information about output devices (monitors, projectors, etc)

Most of the input device handling has been factored out into separate GdkSeat objects. Every display has a one or more seats, which can be accessed with `gdk_display_get_default_seat()` and `gdk_display_list_seats()`.

Output devices are represented by GdkMonitor objects, which can be accessed with `gdk_display_get_monitor_at_surface()` and similar APIs.

## Functions

### gdk_display_open ()

    GdkDisplay *
    gdk_display_open (const char *display_name);

Opens a display.

#### Parameters

display_name | the name of the display to open |

#### Returns

a GdkDisplay, or `NULL` if the display could not be opened.

[nullable][transfer none]

### gdk_display_get_default ()

    GdkDisplay *
    gdk_display_get_default (void);

Gets the default GdkDisplay. This is a convenience function for: `gdk_display_manager_get_default_display (`gdk_display_manager_get()`)`.

#### Returns

a GdkDisplay, or `NULL` if there is no default display.

[nullable][transfer none]

### gdk_display_get_name ()

    const char *
    gdk_display_get_name (GdkDisplay *display);

Gets the name of the display.

#### Parameters

display | a GdkDisplay |

#### Returns

a string representing the display name. This string is owned by GDK and should not be modified or freed.

### gdk_display_device_is_grabbed ()

    gboolean
    gdk_display_device_is_grabbed (GdkDisplay *display,
                                   GdkDevice *device);

Returns `TRUE` if there is an ongoing grab on `device` for `display` .

#### Parameters

display | a GdkDisplay |
device | a GdkDevice |

#### Returns

`TRUE` if there is a grab in effect for `device` .

### gdk_display_beep ()

    void
    gdk_display_beep (GdkDisplay *display);

Emits a short beep on `display`

#### Parameters

display | a GdkDisplay |

### gdk_display_sync ()

    void
    gdk_display_sync (GdkDisplay *display);

Flushes any requests queued for the windowing system and waits until all requests have been handled. This is often used for making sure that the display is synchronized with the current state of the program. Calling `gdk_display_sync()` before `gdk_x11_display_error_trap_pop()` makes sure that any errors generated from earlier requests are handled before the error trap is removed.

This is most useful for X11. On windowing systems where requests are handled synchronously, this function will do nothing.

#### Parameters

display | a GdkDisplay |

### gdk_display_flush ()

    void
    gdk_display_flush (GdkDisplay *display);

Flushes any requests queued for the windowing system; this happens automatically when the main loop blocks waiting for new events, but if your application is drawing without returning control to the main loop, you may need to call this function explicitly. A common case where this function needs to be called is when an application is executing drawing commands from a thread other than the thread where the main loop is running.

This is most useful for X11. On windowing systems where requests are handled synchronously, this function will do nothing.

#### Parameters

display | a GdkDisplay |

### gdk_display_close ()

    void
    gdk_display_close (GdkDisplay *display);

Closes the connection to the windowing system for the given display, and cleans up associated resources.

#### Parameters

display | a GdkDisplay |

### gdk_display_is_closed ()

    gboolean
    gdk_display_is_closed (GdkDisplay *display);

Finds out if the display has been closed.

#### Parameters

display | a GdkDisplay |

#### Returns

`TRUE` if the display is closed.

### gdk_display_is_rgba ()

    gboolean
    gdk_display_is_rgba (GdkDisplay *display);

Returns whether surfaces on this `display` are created with an alpha channel.

Even if a `TRUE` is returned, it is possible that the surface’s alpha channel won’t be honored when displaying the surface on the screen: in particular, for X an appropriate windowing manager and compositing manager must be running to provide appropriate display. Use `gdk_display_is_composited()` to check if that is the case.

On modern displays, this value is always `TRUE`.

#### Parameters

display | a GdkDisplay |

#### Returns

`TRUE` if surfaces are created with an alpha channel or `FALSE` if the display does not support this functionality.

### gdk_display_is_composited ()

    gboolean
    gdk_display_is_composited (GdkDisplay *display);

Returns whether surfaces can reasonably be expected to have their alpha channel drawn correctly on the screen. Check `gdk_display_is_rgba()` for whether the display supports an alpha channel.

On X11 this function returns whether a compositing manager is compositing on `display` .

On modern displays, this value is always `TRUE`.

#### Parameters

display | a GdkDisplay |

#### Returns

Whether surfaces with RGBA visuals can reasonably be expected to have their alpha channels drawn correctly on the screen.

### gdk_display_supports_input_shapes ()

    gboolean
    gdk_display_supports_input_shapes (GdkDisplay *display);

Returns `TRUE` if `gdk_surface_set_input_region()` can be used to modify the input shape of surfaces on `display` .

On modern displays, this value is always `TRUE`.

#### Parameters

display | a GdkDisplay |

#### Returns

`TRUE` if surfaces with modified input shape are supported

### gdk_display_get_app_launch_context ()

    GdkAppLaunchContext *
    gdk_display_get_app_launch_context (GdkDisplay *display);

Returns a GdkAppLaunchContext suitable for launching applications on the given display.

#### Parameters

display | a GdkDisplay |

#### Returns

a new GdkAppLaunchContext for `display` . Free with `g_object_unref()` when done.

[transfer full]

### gdk_display_notify_startup_complete ()

    void
    gdk_display_notify_startup_complete (GdkDisplay *display,
                                         const char *startup_id);

Indicates to the GUI environment that the application has finished loading, using a given identifier.

GTK will call this function automatically for GtkWindow with custom startup-notification identifier unless `gtk_window_set_auto_startup_notification()` is called to disable that feature.

#### Parameters

display | a GdkDisplay |
startup_id | a startup-notification identifier, for which notification process should be completed |

### gdk_display_get_default_seat ()

    GdkSeat *
    gdk_display_get_default_seat (GdkDisplay *display);

Returns the default GdkSeat for this display.

Note that a display may not have a seat. In this case, this function will return `NULL`.

#### Parameters

display | a GdkDisplay |

#### Returns

the default seat.

[transfer none][nullable]

### gdk_display_list_seats ()

    GList *
    gdk_display_list_seats (GdkDisplay *display);

Returns the list of seats known to `display` .

#### Parameters

display | a GdkDisplay |

#### Returns

the list of seats known to the GdkDisplay.

[transfer container][element-type GdkSeat]

### gdk_display_get_monitors ()

    GListModel *
    gdk_display_get_monitors (GdkDisplay *self);

Gets the list of monitors associated with this display.

Subsequent calls to this function will always return the same list for the same display.

You can listen to the GListModel::items-changed signal on this list to monitor changes to the monitor of this display.

#### Parameters

self | a GdkDisplay |

#### Returns

a GListModel of GdkMonitor.

[transfer none]

### gdk_display_get_monitor_at_surface ()

    GdkMonitor *
    gdk_display_get_monitor_at_surface (GdkDisplay *display,
                                        GdkSurface *surface);

Gets the monitor in which the largest area of `surface` resides, or a monitor close to `surface` if it is outside of all monitors.

#### Parameters

display | a GdkDisplay |
surface | a GdkSurface |

#### Returns

the monitor with the largest overlap with `surface` .

[transfer none]

### gdk_display_get_clipboard ()

    GdkClipboard *
    gdk_display_get_clipboard (GdkDisplay *display);

Gets the clipboard used for copy/paste operations.

#### Parameters

display | a GdkDisplay |

#### Returns

the display's clipboard.

[transfer none]

### gdk_display_get_primary_clipboard ()

    GdkClipboard *
    gdk_display_get_primary_clipboard (GdkDisplay *display);

Gets the clipboard used for the primary selection. On backends where the primary clipboard is not supported natively, GDK emulates this clipboard locally.

#### Parameters

display | a GdkDisplay |

#### Returns

the primary clipboard.

[transfer none]

### gdk_display_get_setting ()

    gboolean
    gdk_display_get_setting (GdkDisplay *display,
                             const char *name,
                             GValue *value);

Retrieves a desktop-wide setting such as double-click time for the `display` .

#### Parameters

display | a GdkDisplay |
name | the name of the setting |
value | location to store the value of the setting |

#### Returns

`TRUE` if the setting existed and a value was stored in `value` , `FALSE` otherwise

### gdk_display_get_startup_notification_id ()

    const char *
    gdk_display_get_startup_notification_id
                                   (GdkDisplay *display);

Gets the startup notification ID for a Wayland display, or `NULL` if no ID has been defined.

#### Parameters

display | a GdkDisplay |

#### Returns

the startup notification ID for `display` , or `NULL`

### gdk_display_put_event ()

    void
    gdk_display_put_event (GdkDisplay *display,
                           GdkEvent *event);

Appends the given event onto the front of the event queue for `display` .

This function is only useful in very special situations and should not be used by applications.

#### Parameters

display | a GdkDisplay |
event | a GdkEvent. | [transfer none]

### gdk_display_map_keyval ()

    gboolean
    gdk_display_map_keyval (GdkDisplay *display,
                            guint keyval,
                            GdkKeymapKey **keys,
                            int *n_keys);

Obtains a list of keycode/group/level combinations that will generate `keyval` . Groups and levels are two kinds of keyboard mode; in general, the level determines whether the top or bottom symbol on a key is used, and the group determines whether the left or right symbol is used.

On US keyboards, the shift key changes the keyboard level, and there are no groups. A group switch key might convert a keyboard between Hebrew to English modes, for example.

GdkEventKey contains a `group` field that indicates the active keyboard group. The level is computed from the modifier mask.

The returned array should be freed with `g_free()`.

#### Parameters

display | a GdkDisplay |
keyval | a keyval, such as `GDK_KEY_a`, `GDK_KEY_Up`, `GDK_KEY_Return`, etc. |
keys | return location for an array of GdkKeymapKey. | [out][array length=n_keys][transfer full]
n_keys | return location for number of elements in returned array |

#### Returns

`TRUE` if keys were found and returned

### gdk_display_map_keycode ()

    gboolean
    gdk_display_map_keycode (GdkDisplay *display,
                             guint keycode,
                             GdkKeymapKey **keys,
                             guint **keyvals,
                             int *n_entries);

Returns the keyvals bound to `keycode` . The Nth GdkKeymapKey in `keys` is bound to the Nth keyval in `keyvals` .

When a keycode is pressed by the user, the keyval from this list of entries is selected by considering the effective keyboard group and level.

Free the returned arrays with `g_free()`.

#### Parameters

display | a GdkDisplay |
keycode | a keycode |
keys | return location for array of GdkKeymapKey, or `NULL`. | [out][array length=n_entries][transfer full][optional]
keyvals | return location for array of keyvals, or `NULL`. | [out][array length=n_entries][transfer full][optional]
n_entries | length of `keys` and `keyvals` |

#### Returns

`TRUE` if there were any entries

### gdk_display_translate_key ()

    gboolean
    gdk_display_translate_key (GdkDisplay *display,
                               guint keycode,
                               GdkModifierType state,
                               int group,
                               guint *keyval,
                               int *effective_group,
                               int *level,
                               GdkModifierType *consumed);

Translates the contents of a GdkEventKey (ie `keycode` , `state` , and `group` ) into a keyval, effective group, and level. Modifiers that affected the translation and are thus unavailable for application use are returned in `consumed_modifiers` .

The `effective_group` is the group that was actually used for the translation; some keys such as Enter are not affected by the active keyboard group. The `level` is derived from `state` .

`consumed_modifiers` gives modifiers that should be masked outfrom `state` when comparing this key press to a keyboard shortcut. For instance, on a US keyboard, the `plus` symbol is shifted, so when comparing a key press to a `<Control>plus` accelerator `<Shift>` should be masked out.

This function should rarely be needed, since GdkEventKey already contains the translated keyval. It is exported for the benefit of virtualized test environments.

#### Parameters

display | a GdkDisplay |
keycode | a keycode |
state | a modifier state |
group | active keyboard group |
keyval | return location for keyval, or `NULL`. | [out][optional]
effective_group | return location for effective group, or `NULL`. | [out][optional]
level | return location for level, or `NULL`. | [out][optional]
consumed | return location for modifiers that were used to determine the group or level, or `NULL`. | [out][optional]

#### Returns

`TRUE` if there was a keyval bound to keycode/state/group.

## Types and Values

### GdkDisplay

    typedef struct _GdkDisplay GdkDisplay;

The GdkDisplay struct contains only private fields and should not be accessed directly.

## Property Details

### The `“composited”` property

      “composited”               gboolean

`TRUE` if the display properly composites the alpha channel. See `gdk_display_is_composited()` for details.

Owner: GdkDisplay

Flags: Read

Default value: TRUE

### The `“input-shapes”` property

      “input-shapes”             gboolean

`TRUE` if the display supports input shapes. See `gdk_display_supports_input_shapes()` for details.

Owner: GdkDisplay

Flags: Read

Default value: TRUE

### The `“rgba”` property

      “rgba”                     gboolean

`TRUE` if the display supports an alpha channel. See `gdk_display_is_rgba()` for details.

Owner: GdkDisplay

Flags: Read

Default value: TRUE

## Signal Details

### The `“closed”` signal

    void
    user_function (GdkDisplay *display,
                   gboolean    is_error,
                   gpointer    user_data)

The ::closed signal is emitted when the connection to the windowing system for `display` is closed.

#### Parameters

display | the object on which the signal is emitted |
is_error | `TRUE` if the display was closed due to an error |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“opened”` signal

    void
    user_function (GdkDisplay *display,
                   gpointer    user_data)

The ::opened signal is emitted when the connection to the windowing system for `display` is opened.

#### Parameters

display | the object on which the signal is emitted |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“seat-added”` signal

    void
    user_function (GdkDisplay *display,
                   GdkSeat    *seat,
                   gpointer    user_data)

The ::seat-added signal is emitted whenever a new seat is made known to the windowing system.

#### Parameters

display | the object on which the signal is emitted |
seat | the seat that was just added |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“seat-removed”` signal

    void
    user_function (GdkDisplay *display,
                   GdkSeat    *seat,
                   gpointer    user_data)

The ::seat-removed signal is emitted whenever a seat is removed by the windowing system.

#### Parameters

display | the object on which the signal is emitted |
seat | the seat that was just removed |
user_data | user data set when the signal handler was connected. |

Flags: Run Last

### The `“setting-changed”` signal

    void
    user_function (GdkDisplay *display,
                   char       *setting,
                   gpointer    user_data)

The ::setting-changed signal is emitted whenever a setting changes its value.

#### Parameters

display | the object on which the signal is emitted |
setting | the name of the setting that changed |
user_data | user data set when the signal handler was connected. |

Flags: Run Last