## GdkDisplayManager GdkDisplayManager — Maintains a list of all open GdkDisplays |

## Functions

GdkDisplayManager * | gdk_display_manager_get ()
GdkDisplay * | gdk_display_manager_get_default_display ()
void | gdk_display_manager_set_default_display ()
GSList * | gdk_display_manager_list_displays ()
GdkDisplay * | gdk_display_manager_open_display ()
void | gdk_set_allowed_backends ()

## Properties

GdkDisplay * | default-display | Read / Write

## Signals

void | display-opened | Run Last

## Types and Values

| GdkDisplayManager

## Object Hierarchy

        GObject
        ╰── GdkDisplayManager

## Includes

    #include <gdk/gdk.h>

## Description

The purpose of the GdkDisplayManager singleton object is to offer notification when displays appear or disappear or the default display changes.

You can use `gdk_display_manager_get()` to obtain the GdkDisplayManager singleton, but that should be rarely necessary. Typically, initializing GTK opens a display that you can work with without ever accessing the GdkDisplayManager.

The GDK library can be built with support for multiple backends. The GdkDisplayManager object determines which backend is used at runtime.

When writing backend-specific code that is supposed to work with multiple GDK backends, you have to consider both compile time and runtime. At compile time, use the GDK_WINDOWING_X11, GDK_WINDOWING_WIN32 macros, etc. to find out which backends are present in the GDK library you are building your application against. At runtime, use type-check macros like `GDK_IS_X11_DISPLAY()` to find out which backend is in use:

#### Backend-specific code

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    #ifdef GDK_WINDOWING_X11
      if (GDK_IS_X11_DISPLAY (display))
        {
          // make X11-specific calls here
        }
      else
    #endif
    #ifdef GDK_WINDOWING_QUARTZ
      if (GDK_IS_QUARTZ_DISPLAY (display))
        {
          // make Quartz-specific calls here
        }
      else
    #endif
      g_error ("Unsupported GDK backend");

## Functions

### gdk_display_manager_get ()

    GdkDisplayManager *
    gdk_display_manager_get (void);

Gets the singleton GdkDisplayManager object.

When called for the first time, this function consults the `GDK_BACKEND` environment variable to find out which of the supported GDK backends to use (in case GDK has been compiled with multiple backends). Applications can use `gdk_set_allowed_backends()` to limit what backends can be used.

#### Returns

The global GdkDisplayManager singleton.

[transfer none]

### gdk_display_manager_get_default_display ()

    GdkDisplay *
    gdk_display_manager_get_default_display
                                   (GdkDisplayManager *manager);

Gets the default GdkDisplay.

#### Parameters

manager | a GdkDisplayManager |

#### Returns

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

[nullable][transfer none]

### gdk_display_manager_set_default_display ()

    void
    gdk_display_manager_set_default_display
                                   (GdkDisplayManager *manager,
                                    GdkDisplay *display);

Sets `display` as the default display.

#### Parameters

manager | a GdkDisplayManager |
display | a GdkDisplay |

### gdk_display_manager_list_displays ()

    GSList *
    gdk_display_manager_list_displays (GdkDisplayManager *manager);

List all currently open displays.

#### Parameters

manager | a GdkDisplayManager |

#### Returns

a newly allocated GSList of GdkDisplay objects. Free with `g_slist_free()` when you are done with it.

[transfer container][element-type GdkDisplay]

### gdk_display_manager_open_display ()

    GdkDisplay *
    gdk_display_manager_open_display (GdkDisplayManager *manager,
                                      const char *name);

Opens a display.

#### Parameters

manager | a GdkDisplayManager |
name | the name of the display to open |

#### Returns

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

[nullable][transfer none]

### gdk_set_allowed_backends ()

    void
    gdk_set_allowed_backends (const char *backends);

Sets a list of backends that GDK should try to use.

This can be useful if your application does not work with certain GDK backends.

By default, GDK tries all included backends.

For example,

    1
    gdk_set_allowed_backends ("wayland,quartz,*");

instructs GDK to try the Wayland backend first, followed by the Quartz backend, and then all others.

If the `GDK_BACKEND` environment variable is set, it determines what backends are tried in what order, while still respecting the set of allowed backends that are specified by this function.

The possible backend names are x11, win32, quartz, broadway, wayland. You can also include a * in the list to try all remaining backends.

This call must happen prior to `gdk_display_open()`, `gtk_init()`, or `gtk_init_check()` in order to take effect.

#### Parameters

backends | a comma-separated list of backends |

## Types and Values

### GdkDisplayManager

    typedef struct _GdkDisplayManager GdkDisplayManager;

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

## Property Details

### The `“default-display”` property

      “default-display”          GdkDisplay *

The default display for GDK.

Owner: GdkDisplayManager

Flags: Read / Write

## Signal Details

### The `“display-opened”` signal

    void
    user_function (GdkDisplayManager *manager,
                   GdkDisplay        *display,
                   gpointer           user_data)

The ::display-opened signal is emitted when a display is opened.

#### Parameters

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

Flags: Run Last