Xinerama

Xinerama is an extension to X server, allowing that multiple monitors as a single large behave. It is therefore possible in the X Window system to use large desktops that are displayed across multiple monitors. The extension has been around since XFree86/X.Org X11 Release 6 version 4.0.

Operation

Each session in the X Window System is associated with a display. The term refers to one or any number of monitors (screens ) and input devices such as mice or keyboards. It can be used in principle as many monitors, graphics cards thanks to the multi-head, for example, now possible with conventional personal computers. However, these screens are considered independently in the X Window System: You can have completely different properties, so for example, have different resolution or color depth. Technically, each screen has its own root window. In the X Window System, each window needs (except the root windows ) a parent window, beyond which it can not be displayed. Using the Xinerama extension, all screens can be combined into one large desktop, so a large, all screens spanning root window is created. Window can now overlap the screens as desired.

An X server, which dominates Xinerama, offers its own API to, on the one X client, eg a window manager that is able to monitor configuration. With this information, then windows can be placed so that they do not protrude beyond the single monitor borders, different background images are displayed on each screen taskbar to display only on a screen, etc.

API

The Xinerama extension provides a C API, with the size and position of the individual screens can be queried:

# include # include   int main () {     Display * dis = XOpenDisplay ( display_name );     Screen const * scn = DefaultScreenOfDisplay (dis);       / / Total size of the desktop:     const int total_width = scn - > width;     const int total_height = scn - > height;       / / Ask on whether Xinerama support available:     int Event_Base, error_base;     const bool ext_okay = XineramaQueryExtension ( dis, & Event_Base, & error_base );     if (! ext_okay ) {/ * no xinerama support! * / Return 1; }     number_of_screens int = 0;       / / Use the extension to query the size of the screen:     XineramaScreenInfo * xsi = XineramaQueryScreens ( dis, & number_of_screens );     for (int q = 0, q < number_of_screens; q)     {        XineramaScreenInfo * p = & xsi [q ];        printf (" % d # Screeh at position (% d,% d) Size:. % dx % d pixels \ n",                p-> x_org, p-> y_org, p- > width, p- > height );     }       XFree ( xsi );     XCloseDisplay (dis);     return 0; } alternatives

To Change the X RandR extension that was originally intended only to the properties of the X screens ( color depth, resolution, etc.) run-time, dominated since version 1.3. also joining several "screens" into an overall picture, as it offers Xinerama. X clients that use the old Xinerama API can thus also in X RandR, but with the restriction that they can not be informed of subsequent changes in the arrangement of the screens.

Some graphics card manufacturers have different names on an improved version of the multi- screen operation. For graphics cards that have multiple screen outputs, it is possible to distribute a desktop on multiple monitors without sacrificing the screen layout speed.

When this extension is called nVidia TwinView, ATI and Matrox MergedFB or BigDesktop (only ATI binary driver ).

831096
de