PREV UP NEXT GNU Emacs Lisp Reference Manual

26.2: Multiple Displays

A single Emacs can talk to more than one X Windows display. Initially, Emacs uses just one display---the one chosen with the DISPLAY environment variable or with the --display option (see Initial Options). To connect to another display, use the command make-frame-on-display or specify the display frame parameter when you create the frame.

Emacs treats each X server as a separate terminal, giving each one its own selected frame and its own minibuffer windows. A few Lisp variables have values local to the current terminal (that is, the terminal corresponding to the currently selected frame): these are default-minibuffer-frame, defining-kbd-macro, last-kbd-macro, multiple-frames and system-key-alist. These variables are always terminal-local and can never be buffer-local.

A single X server can handle more than one screen. A display name host.server.screen has three parts; the last part specifies the screen number for a given server. When you use two screens belonging to one server, Emacs knows by the similarity in their names that they share a single keyboard, and it treats them as a single terminal.

Command: make-frame-on-display display &optional parameters
This creates a new frame on display display, taking the other frame parameters from parameters. Aside from the display argument, it is like make-frame (see Creating Frames).
Function: x-display-list
This returns a list that indicates which X displays Emacs has a connection to. The elements of the list are strings, and each one is a display name.
Function: x-open-connection display &optional xrm-string
This function opens a connection to the X display display. It does not create a frame on that display, but it permits you to check that communication can be established with that display.

The optional argument resource-string, if not nil, is a string of resource names and values, in the same format used in the .Xresources file. The values you specify override the resource values recorded in the X server itself; they apply to all Emacs frames created on this display. Here's an example of what this string might look like:

"*BorderWidth: 3\n*InternalBorder: 2\n"

See Resources.

Function: x-close-connection display
This function closes the connection to display display. Before you can do this, you must first delete all the frames that were open on that display (see Deleting Frames).