Xinerama

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Xinerama-Aufbau mit vier Monitoren in einer Reihe.

Xinerama ist eine Erweiterung für X-Server, die es ermöglicht, dass sich mehrere Bildschirme wie ein einzelner großer verhalten. Es ist damit in X Window Systemen möglich, große Desktops zu benutzen, die über mehrere Monitore angezeigt werden. Die Erweiterung gibt es seit XFree86/X.Org X11 Release 6 Version 4.0.

Funktionsweise[Bearbeiten]

Screens müssen nicht zwangsläufig echte Monitore sein. Mit Xnest ist es möglich, virtuelle Screens zu erzeugen und so einen Xinerama-Aufbau mit vier Monitoren zu simulieren. In diesem Beispiel sind sie quadratförmig angeordnet, ein alle vier Screens überspannendes Fenster wird angezeigt.

Jede Sitzung im X Window System ist einem Display zugeordnet. Der Begriff bezeichnet ein oder beliebig viele Monitore (Screens) und Eingabegeräte wie Mäuse oder Tastaturen. Es können prinzipiell beliebig viele Monitore benutzt werden, dank Grafikkarten mit Multi Head ist das z. B. heutzutage mit handelsüblichen Personal Computern möglich. Jedoch werden diese Screens im X Window System unabhängig voneinander betrachtet: Sie können völlig unterschiedliche Eigenschaften haben, also zum Beispiel unterschiedliche Auflösungen oder Farbtiefe aufweisen. Technisch gesehen verfügt jeder Screen über ein eigenes Root-Window. Im X Window System braucht jedes Fenster (außer den Root-Fenstern) ein Elternfenster, außerhalb welchem es nicht angezeigt werden kann. Mit der Xinerama-Erweiterung können alle Screens zu einem großen Desktop zusammengelegt werden, sodass ein großes, alle Screens überspannendes Root-Fenster entsteht. Fenster können nun die Bildschirme beliebig überschneiden.

Ein X-Server, der Xinerama beherrscht, bietet eine eigene API an, über die ein X-Client, z.B. ein Fenstermanager, die Monitorkonfiguration abfragen kann. Mit diesen Informationen können dann Fenster so platziert werden, dass sie nicht über die einzelnen Monitorgrenzen hinausragen, verschiedene Hintergrundbilder auf den einzelnen Bildschirmen angezeigt werden, Taskleisten nur auf einem Bildschirm anzeigen usw.

API[Bearbeiten]

Die Xinerama-Erweiterung bietet eine C-API an, mit der die Größe und Position der einzelnen Screens abgefragt werden kann:

#include <X11/extensions/Xinerama.h>
#include <stdio.h>
 
int main()
{
   Display* dis = XOpenDisplay( display_name );
   const Screen* scn = DefaultScreenOfDisplay(dis);
 
   // Gesamtgröße des Desktops:
   const int total_width  = scn->width;
   const int total_height = scn->height;
 
   // Frag ab, ob Xinerama-Support vorhanden:
   int event_base, error_base;
   const bool ext_okay = XineramaQueryExtension( dis, &event_base, &error_base);
   if(!ext_okay) { /* no xinerama support! */ return 1; }
   int number_of_screens = 0;
 
   // Benutze die Extension, um Größe der Screens abzufragen:
   XineramaScreenInfo* xsi = XineramaQueryScreens( dis, &number_of_screens);
   for(int q=0; q<number_of_screens; ++q)
   {
      XineramaScreenInfo* p = &xsi[q];
      printf("Screeh #%d at position (%d, %d). Size: %d x %d pixels\n",
              p->x_org, p->y_org, p->width, p->height);
   }
 
   XFree(xsi);
   XCloseDisplay(dis);
   return 0;
}

Alternativen[Bearbeiten]

Die X RandR-Erweiterung, die ursprünglich nur dazu gedacht war, die Eigenschaften des X Screens (Farbtiefe, Auflösung u.a.) zur Laufzeit ändern zu können, beherrscht seit Version 1.3. auch das Zusammenfügen mehrerer „Screens“ zu einem Gesamtbild, wie es Xinerama anbietet. X Clients, die die alte Xinerama-API benutzen, funktionieren somit auch unter X RandR, allerdings mit der Einschränkung, dass sie über nachträgliche Änderungen in der Anordnung der Bildschirme nicht informiert werden können.

Einige Grafikkartenhersteller bieten unter verschiedenen Namen eine verbesserte Version des Mehrbildschirmbetriebes an. Bei Grafikkarten, die mehrere Bildschirmausgänge besitzen, ist es so möglich, ohne Einbußen der Bildschirmaufbaugeschwindigkeit einen Desktop auf mehrere Bildschirme zu verteilen.

Bei nVidia heißt diese Erweiterung TwinView, bei ATI und Matrox MergedFB oder BigDesktop (nur ATI-Binärtreiber).

Siehe auch[Bearbeiten]

Weblinks[Bearbeiten]