 and #GetWindowSize() and #GetFramebufferSize().

        To create a full screen window, you need to specify the monitor the window will cover. If no monitor is specified, the window will be windowed mode.
        Unless you have a way for the user to choose a specific monitor, it is recommended that you pick the primary monitor. For more information on how to
        query connected monitors, see ${url("http://www.glfw.org/docs/latest/monitor.html\\#monitor_monitors", "monitors")}.

        For full screen windows, the specified size becomes the resolution of the window's <i>desired video mode</i>. As long as a full screen window is not
        iconified, the supported video mode most closely matching the desired video mode is set for the specified monitor. For more information about full
        screen windows, including the creation of so called <i>windowed full screen</i> or <i>borderless full screen</i> windows, see
        ${url("http://www.glfw.org/docs/latest/window.html\\#window_windowed_full_screen", "full screen")}.

        Once you have created the window, you can switch it between windowed and full screen mode with #SetWindowMonitor(). If the window has an OpenGL or
        OpenGL ES context, it will be unaffected.

        By default, newly created windows use the placement recommended by the window system. To create the window at a specific position, make it initially
        invisible using the #VISIBLE window hint, set its ${url("http://www.glfw.org/docs/latest/window.html\\#window_pos", "position")} and then
        ${url("http://www.glfw.org/docs/latest/window.html\\#window_hide", "show")} it.

        As long as at least one full screen window is not iconified, the screensaver is prohibited from starting.

        Window systems put limits on window sizes. Very large or very small window dimensions may be overridden by the window system on creation. Check the
        actual ${url("http://www.glfw.org/docs/latest/window.html\\#window_size", "size")} after creation.

        The ${url("http://www.glfw.org/docs/latest/window.html\\#buffer_swap", "swap interval")} is not set during window creation and the initial value may vary
        depending on driver settings and defaults.

        ${note(ul(
            "This function must only be called from the main thread.",
            "<b>Windows</b>: Window creation will fail if the Microsoft GDI software OpenGL implementation is the only one available.",
            """
            <b>Windows</b>: If the executable has an icon resource named {@code GLFW_ICON}, it will be set as the initial icon for the window. If no such icon
            is present, the {@code IDI_APPLICATION} icon will be used instead. To set a different icon, see #SetWindowIcon().
            """,
            "<b>Windows</b>: The context to share resources with may not be current on any other thread.",
            """
            The OS only supports core profile contexts for OpenGL versions 3.2 and later. Before creating an OpenGL context of version 3.2 or later you must
            set the #OPENGL_PROFILE hint accordingly. OpenGL 3.0 and 3.1 contexts are not supported at all on macOS.
            """,
            """
            <b>macOS</b>: The GLFW window has no icon, as it is not a document window, but the dock icon will be the same as the application bundle's icon. For
            more information on bundles, see the
            ${url("https://developer.apple.com/library/content/documentation/CoreFoundation/Conceptual/CFBundles/", "Bundle Programming Guide")} in the Mac
            Developer Library.
            """,
            """
            <b>macOS</b>: On macOS 10.10 and later the window frame will not be rendered at full resolution on Retina displays unless the
            #COCOA_RETINA_FRAMEBUFFER hint is #TRUE and the {@code NSHighResolutionCapable} key is enabled in the application bundle's {@code Info.plist}. For
            more information, see ${url(
                "https://developer.apple.com/library/content/documentation/GraphicsAnimation/Conceptual/HighResolutionOSX/Explained/Explained.html",
                "High Resolution Guidelines for macOS")
            } in the Mac Developer Library.
            """,
            """
            <b>macOS</b>: When activating frame autosaving with #COCOA_FRAME_NAME, the specified window size and position may be overridden by previously saved
            values.
            """,
            "<b>X11</b>: Some window managers will not respect the placement of initially hidden windows.",
            """
            <b>X11</b>: Due to the asynchronous nature of X11, it may take a moment for a window to reach its requested state. This means you may not be able
            to query the final size, position or other attributes directly after window creation.
            """,
            """
            <b>X11</b>: The class part of the {@code WM_CLASS} window property will by default be set to the window title passed to this function. The instance
            part will use the contents of the {@code RESOURCE_NAME} environment variable, if present and not empty, or fall back to the window title. Set the
            #X11_CLASS_NAME and #X11_INSTANCE_NAME window hints to override this.
            """,
            """
            <b>Wayland</b>: Compositors should implement the xdg-decoration protocol for GLFW to decorate the window properly. If this protocol isn't
            supported, or if the compositor prefers client-side decorations, a very simple fallback frame will be drawn using the {@code wp_viewporter}
            protocol. A compositor can still emit close, maximize or fullscreen events, using for instance a keybind mechanism. If neither of these protocols
            is supported, the window won't be decorated.
            """,
            "<b>Wayland</b>: A full screen window will not attempt to change the mode, no matter what the requested size or refresh rate.",
            "<b>Wayland</b>: Screensaver inhibition requires the idle-inhibit protocol to be implemented in the user's compositor."
        ))}
        """,

        int("width", "the desired width, in screen coordinates, of the window"),
        int("height", "the desired height, in screen coordinates, of the window"),
        charUTF8.const.p("title", "initial, UTF-8 encoded window title"),
        nullable..GLFWmonitor.p("monitor", "the monitor to use for fullscreen mode, or #NULL for windowed mode"),
        nullable..GLFWwindow.p("share", " the window whose context to share resources with, or #NULL to not share resources"),

        returnDoc = "the handle of the created window, or #NULL if an error occurred",
        since = "version 1.0"
    )

    void(
        "DestroyWindow",
        """
        Destroys the specified window and its context. On calling this function, no further callbacks will be called for that window.

        If the context of the specified window is current on the main thread, it is detached before being destroyed.

        ${note(ul(
            "This function must only be called from the main thread.",
            "This function must not be called from a callback.",
            "The context of the specified window must not be current on any other thread when this function is called."
        ))}
        """,

        nullable..GLFWwindow.p("window", "the window to destroy"),
        since = "version 1.0"
    )

    intb(
        "WindowShouldClose",
        """
        Returns the value of the close flag of the specified window.

        This function may be called from any thread.
        """,

        GLFWwindow.p("window", "the window to query"),

        returnDoc = "the value of the close flag",
        since = "version 3.0"
    )

    void(
        "SetWindowShouldClose",
        """
        Sets the value of the close flag of the specified window. This can be used to override the user's attempt to close the window, or to signal that it
        should be closed.

        This function may be called from any thread. Access is not synchronized.
        """,

        GLFWwindow.p("window", "the window whose flag to change"),
        intb("value", "the new value"),

        since = "version 3.0"
    )

    void(
        "SetWindowTitle",
        """
        Sets the window title, encoded as UTF-8, of the specified window.

        This function must only be called from the main thread.

        <b>macOS</b>: The window title will not be updated until