Next: , Previous: Creating Frames, Up: Frames


29.2 Multiple Displays

A single Emacs can talk to more than one X 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. However, only one of those frames is “the selected frame” at any given moment, see Input Focus.

A few Lisp variables are terminal-local; that is, they have a separate binding for each terminal. The binding in effect at any time is the one for the terminal that the currently selected frame belongs to. These variables include default-minibuffer-frame, defining-kbd-macro, last-kbd-macro, and system-key-alist. They are always terminal-local, and can never be buffer-local (see Buffer-Local Variables) or frame-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 must-succeed

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 xrm-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.

If must-succeed is non-nil, failure to open the connection terminates Emacs. Otherwise, it is an ordinary Lisp error.

— 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).