---
name: "XOpenDisplay"
section: "3"
platform: "linux"
package: "libx11"
version: "1.8.14-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/XOpenDisplay"
---

# XOpenDisplay(3)

connect or disconnect to X server

## NAME

XOpenDisplay, XCloseDisplay - connect or disconnect to X server

## SYNTAX

Display \*XOpenDisplay(\_Xconst char \**display\_name*);

int XCloseDisplay(Display \**display*);

## ARGUMENTS

- *display*

  Specifies the connection to the X server.

- *display\_name*

  Specifies the hardware display name, which determines the display and communications domain to be used. On a POSIX-conformant system, if the display\_name is NULL, it defaults to the value of the DISPLAY environment variable.

## DESCRIPTION

The **XOpenDisplay** function returns a **Display** structure that serves as the connection to the X server and that contains all the information about that X server. **XOpenDisplay** connects your application to the X server through TCP or DECnet communications protocols, or through some local inter-process communication protocol. If the hostname is a host machine name and a single colon (:) separates the hostname and display number, **XOpenDisplay** connects using TCP streams. If the hostname is not specified, Xlib uses whatever it believes is the fastest transport. If the hostname is a host machine name and a double colon (::) separates the hostname and display number, **XOpenDisplay** connects using DECnet. A single X server can support any or all of these transport mechanisms simultaneously. A particular Xlib implementation can support many more of these transport mechanisms.

If successful, **XOpenDisplay** returns a pointer to a **Display** structure, which is defined in **X11/Xlib.h**. If **XOpenDisplay** does not succeed, it returns NULL. After a successful call to **XOpenDisplay**, all of the screens in the display can be used by the client. The screen number specified in the display\_name argument is returned by the **DefaultScreen** macro (or the **XDefaultScreen** function). You can access elements of the **Display** and **Screen** structures only by using the information macros or functions. For information about using macros and functions to obtain information from the **Display** structure, see section 2.2.1.

The **XCloseDisplay** function closes the connection to the X server for the display specified in the **Display** structure and destroys all windows, resource IDs (**Window**, **Font**, **Pixmap**, **Colormap**, **Cursor**, and **GContext**), or other resources that the client has created on this display, unless the close-down mode of the resource has been changed (see **XSetCloseDownMode**). Therefore, these windows, resource IDs, and other resources should never be referenced again or an error will be generated. Before exiting, you should call **XCloseDisplay** explicitly so that any pending errors are reported as **XCloseDisplay** performs a final **XSync** operation.

**XCloseDisplay** can generate a **BadGC** error.

## SEE ALSO

[**AllPlanes**(3)](/AllPlanes/3.md), [**XFlush**(3)](/XFlush/3.md), [**XSetCloseDownMode**(3)](/XSetCloseDownMode/3.md)\
 *Xlib - C Language X Interface*
