Xinerama is an extension to the X Window System that enables X applications and window managers to use two or more physical displays as one large virtual display.
Developed under the name PanoramiX by Madeline T. Asmus of the Digital Equipment Corporation's Unix X Server Engineering Group, the software was contributed to The Open Group for X11 Release 6.4 (X11R6.4) and renamed Xinerama. It was then incorporated into the XFree86 4.0 release in 1998 and the Solaris 7 11/99 release. According to X Server project lead Rob Lembree, the name was inspired by the Cinerama widescreen theatre process. "We were frustrated by having big Alpha machines with multiple displays, and being unable to move applications from one to another. It was developed as much out of frustration as out of competitive advantage." Xinerama advantages include the ability to only maximize windows to the dimensions of the active physical display, and to allow new pop-up windows on the active physical display.
When Xinerama is enabled in the X server, multiple X screens can be unified into a single workspace. This unified work area allows windows to be transferred across X screens.
The Xinerama extension provides clients with information about the layout of viewports within the unified workspace. Its information regarding offset and size information allows clients to make intelligent decisions about window placement, window maximization and other user interaction events.
The X server's client/server architecture allows the server to expose Xinerama information to the client regardless of whether the Xinerama infrastructure is active. RandR and NVidia's twinview utilize this feature to provide window managers and clients with information about the output layout relative to the framebuffer.
Xinerama requires that all of the physical screens have the same bit depth. For example, an 8-bit screen cannot be combined with a 16-bit screen.
In some[which?] implementations, OpenGL direct-rendering only works on one screen. Windows that should show 3D graphics on other screens tend to appear black, a problem most commonly seen with 3D screen savers. The Solaris SPARC OpenGL implementation and ATI and nVidia proprietary Linux drivers support hardware-accelerated rendering of all screens in Xinerama mode.
Physical screens cannot be added or removed dynamically, and there is no way to change the resolution of a screen. This is particularly difficult for mobile computer users, who may use an external physical display in addition to the computer's built-in screen, but only at certain locations. It is recommended that RandR or ATI's or nVidia's single GPU method be used in these cases. Xinerama's lack of support for adding or removing screens causes several problems:
These problems are related to Xinerama's implementation rather than its design, and can be corrected with further development.
Some window managers and desktop environments have limited awareness of the separate physical screens in Xinerama, so that the desktop is simply stretched over the physical screens instead of arranged as a single large desktop. The window manager may place a new window on an unexpected screen, which can be confusing and annoying. Xinerama nevertheless offers the advantage that windows can be moved between screens.
The physical displays do not need to be the same resolution, and the virtual display area is not necessarily rectangular if the component physical displays are not the same size. Some window managers assume a rectangular display area, and enforce this by creating excess "dead space" at the edges of a display. The window manager needs awareness of Xinerama to avoid placing new windows in this dead space.