K Desktop Environment 3.2 im Test: Neue und bewährte Features vorgestellt

 11/12
Steffen Weber
22 Kommentare

FreeDesktop XServer

Seit Jahren ist XFree86 die einzige praxistaugliche Möglichkeit, grafische Oberflächen darzustellen. Es stellt die Grundfunktionalitäten für Desktop-Umgebungen wie KDE dar. In den letzten Jahren ist mehrfach der Ruf nach einem Ersatz für XFree86 laut geworden, da dieses Projekt nicht mehr mit den Anforderungen moderner Desktops mithalten könne. Eines der populärsten Features, das bis heute vermisst wird, ist die native Unterstützung von Transparenz. Denn alle Transparenz-Effekte, die man heutzutage auf einem auf XFree86 aufbauenden Desktop-System zu sehen bekommt, sind sozusagen geschummelt. Möchte eine Anwendung z.B. ihren Hintergrund transparent gestalten, muss sie praktisch in regelmäßigen Abständen Screenshots von dem Desktop machen, auf diesen ihr Interface zeichnen und dem X-Server zur Darstellung übermitteln. Das ist nicht besonders effizient, wünschenswert wäre eine serverseitige Lösung dieses Problems.

Artefakte bei Fenster-Bewegung
Artefakte bei Fenster-Bewegung

Gegen eine Implementierung von Transparenz hat bisher der vergleichsweise hohe Speicherverbrauch gesprochen. Das ist einfach erklärt, denn anstatt lediglich einem vollständig zusammengesetzten Bild, das so aussieht, wie man es auf dem Bildschirm zu sehen bekommt, muss der XServer zudem den Inhalt jedes Fensters einzeln im Speicher bereithalten, um diese dann übereinanderlegen zu können. Schließlich sollen jene Anwendungen, die teilweise oder vollständig von anderen verdeckt, dann aber durch Verschieben eines Fensters sichtbar werden, nicht bei jeder Bewegung um wenige Pixel ihren Fenster-Inhalt für die aufgedeckten Bereiche neu zeichnen müssen, obwohl sich dieser sehr wahrscheinlich gar nicht ändert. An dieser Stelle sieht man nämlich deutlich eine Schwäche von XFree86. Konqueror braucht zum Beispiel vergleichsweise lange, um den Fenster-Inhalt neu zu zeichnen. Bewegt man ein anderes Fenster über dem Konqueror Fenster hin und her, wird man Artefakte zu sehen bekommen, da Konqueror den Fenster-Inhalt nicht so oft neu zeichnen kann, wie weitere Bereiche seines Fensters aufgedeckt werden. Der nebenstehende Screenshot verdeutlicht dies.

Dass eine Realisierung heutzutage jedoch kein Wunschdenken mehr ist, hat Ende des Jahres 2003 Keith Packard mit seinem im Rahmen der Initiative FreeDesktop.org entwickelten XServer bewiesen. Dieser unterstützt bereits Fenster-Schatten sowie Transparenz-Effekte und auch wenn man den XServer derzeit bestenfalls als experimentell bezeichnen kann, sehen viele in ihm die Zukunft von grafischen Oberflächen in der UNIX-Welt. Wie bereits erwähnt, behält der XServer den Inhalt jedes einzelnen Fensters zusätzlich zum Gesamt-Bild im Arbeitsspeicher, sodass das wiederholte Neuzeichnen des Fenster-Inhalts bei Verschieben eines Fenster entfällt. Derzeit arbeitet man unter anderem daran, das Zusammensetzen der einzelnen Fenster zu einem Gesamtbild den Grafikkarten zu überlassen, welche dies um ein Vielfaches schneller können als die CPUs. Dabei ist man jedoch auf die Unterstützung der Hardware-Hersteller angewiesen und insbesondere nVidia hat sich in dieser Hinsicht in der Vergangenheit, milde ausgedrückt, wenig kooperativ gezeigt. Zwar gibt es qualitativ durchaus hochwertige nVidia-Treiber für Linux, diese liegen jedoch nicht im Quelltext vor und können somit nicht an die Bedürfnisse des XServers angepasst werden. Sollte sich der XServer etablieren, wird nVidia sicherlich eigenhändig für Abhilfe schaffen, eine zumindest teilweise Veröffentlichung der Spezifikationen zur Erstellung eines OpenSource-Treibers zum jetzigen Zeitpunkt wäre jedoch mehr als wünschenswert.

FreeDesktop.org X Server
FreeDesktop.org X Server
FreeDesktop.org X Server (Transparenz)
FreeDesktop.org X Server (Transparenz)

Denn das Problem des neuen XServers ist momentan die Performance. Das Ändern der Fenstergröße geht quälend langsam vonstatten und auch die Geschwindigkeit, mit der sich Fenster verschieben lassen, ist alles andere als zufriedenstellend, und zwar insbesondere dann, wenn man ein Fenster transparent macht. Während sich kleine Fenster noch flüssig bewegen lassen, merkt man bei größeren Fenstern eine deutliche Verzögerung. Es bleibt abzuwarten, ob an dieser Stelle weitere Optimierungen am XServer-Code etwas bewirken können oder ob man letztendlich auf Hardware-Beschleunigung angewiesen ist. Aufgrund von Problemen mit neueren Versionen der Composite Extension, welche das Zusammensetzen der einzelnen Fenster regelt, mussten wir auf eine relativ alte Version von Ende November 2003 zurückgreifen und können daher nicht beurteilen, ob sich mittlerweile etwas getan hat.