ubuntuusers.de

Xgl

Archivierte Anleitung

Dieser Artikel wurde archiviert. Das bedeutet, dass er nicht mehr auf Richtigkeit überprüft oder anderweitig gepflegt wird. Der Inhalt wurde für keine aktuell unterstützte Ubuntu-Version getestet. Wenn du Gründe für eine Wiederherstellung siehst, melde dich bitte in der Diskussion zum Artikel. Bis dahin bleibt die Seite für weitere Änderungen gesperrt.

Hinweis:

Die Entwicklung von Xgl wurde eingestellt, und seit Ubuntu 8.10 ist Xgl nicht mehr verfügbar.

Der Xgl-Server ist eine Implementierung des X-Window-Systems, der durch OpenGL hardwarebeschleunigt ist. Dieser befindet sich gegenwärtig in der Frühphase der Entwicklung. Die Entwicklung der Xgl-Architektur wurde Ende 2004 durch den Novell-Mitarbeiter David Reveman bekanntgegeben. Im Zuge dessen wurde die Programmstruktur stark umgestellt, um die Aufnahme zusätzlicher Grafiktreiber zu erleichtern. Xgl soll auf dem Linux-Desktop zusätzliche Effekte wie Transparenz, Schattierungen und Animationen ermöglichen, ohne den Prozessor stark zu belasten, da die 3D-Funktionen moderner Grafikkarten benutzt werden. (aus der Quelle)

Der Code von Xgl wurde aus dem X.org-Quelltextverwaltungssystem entfernt. Xgl wurde als vollwertiger X-Server entwickelt, der OpenGL zum Rendern verwendet. So wurden transparente Fenster und andere Desktopeffekte möglich. Die Konkurrenztechnik Aiglx gelangte jedoch zu einer größeren Verbreitung. (Stand: Mitte 2008, Quelle:Golem 🇩🇪)

Voraussetzungen

Um Xgl zu nutzen, benötigt man zwingend 3D-Beschleunigung, wogegen man AIGLX auch ohne diese einsetzen kann. Welche Hardware- bzw. genauer Grafikkartenanforderungen der Xgl-Server hat, kann auf der Übersichtsseite nachgelesen werden.

Bei Ubuntu Gutsy 7.10 reicht es für gewöhnlich, wenn man unter "System → Systemverwaltung → Verwaltung eingeschränkter Treiber" den proprietären Treiber aktiviert.

Installation

Unter Gutsy

Folgendes Pakete muss installiert [1] werden:

  • xserver-xgl (universe, [2])

Konfiguration unter Dapper

Hinweis:

Unter Ubuntu Gutsy Gibbon 7.10 werden automatisch sämtliche Startskripte angelegt, das bedeutet die folgenden Schritte sind für diese Ubuntu-Version unrelevant. Direkt nach der Installation funktioniert der Xgl-Server, und man kann z.B. Compiz einfach über das Menü "Erscheinungsbild" aktivieren.

Es gibt eigentlich zwei Methoden, um den Xgl-Server zu benutzen. Die zweite Methode wird hier aber nicht genauer erklärt, da man meistens mit ersterer Methode bessere Ergebnisse erhält und diese auch (fast) unabhängig von der verwendeten Desktop-Umgebung ist.

Hinweis:

Methode 1 schaltet durch die Option -ac (siehe unten) die Access Control aus. Dies ermöglicht allen lokalen Benutzern Zugang zum aktuellen Display. Da dies ein Sicherheitsrisiko darstellen kann, wird vor allem auf Multiuser-Systemen Methode 2 empfohlen.

Methode 2 kann (als Method B) im englischen Wiki 🇬🇧 nachgeschlagen werden.

Xgl-Sitzung einrichten

Diese Methode erzeugt eine eigene Sitzung, die man beim Einloggen im Displaymanager auswählen kann. Der Vorteil hiervon ist, dass die herkömmlichen Sitzungen davon nicht beeinflusst werden und ganz normal gestartet werden können, falls Xgl hängen bleiben sollte. Der Xgl-Server startet auf "DISPLAY=:1" als Teil der Sitzung und wird erst beendet, wenn diese geschlossen wird. Dies ist besonders hilfreich, wenn man die reguläre Sitzung starten möchte, falls der Xgl-Server nicht starten sollte. Der normale XServer läuft weiterhin auf "DISPLAY=:0".

Startdateien anlegen

Zuerst erstellt man die Datei /usr/bin/startxgl.sh in einem Editor mit Root-Rechten [4] und fügt je nach Hardware und Desktopumgebung einen der folgenden Texte ein:

  • NVIDIA (mit GNOME) #!/bin/sh
    Xgl :1 -nolisten tcp -fullscreen -ac -accel xv:fbo -accel glx:pbuffer &
    DISPLAY=:1
    exec gnome-session
    NVIDIA (mit KDE) #!/bin/sh
    Xgl :1 -nolisten tcp -fullscreen -ac -accel xv:fbo -accel glx:pbuffer &
    DISPLAY=:1
    exec startkde
    NVIDIA (mit Xfce) #!/bin/sh
    Xgl :1 -nolisten tcp -fullscreen -ac -accel xv:fbo -accel glx:pbuffer &
    DISPLAY=:1
    exec xfce4-session
    ATI und Intel (mit GNOME) #!/bin/sh
    Xgl :1 -nolisten tcp -fullscreen -ac -accel xv:pbuffer -accel glx:pbuffer &
    DISPLAY=:1
    exec gnome-session
    ATI und Intel (mit KDE) #!/bin/sh
    Xgl :1 -nolisten tcp -fullscreen -ac -accel xv:pbuffer -accel glx:pbuffer &
    DISPLAY=:1
    exec startkde
    ATI und Intel (mit Xfce) #!/bin/sh
    Xgl :1 -nolisten tcp -fullscreen -ac -accel xv:pbuffer -accel glx:pbuffer &
    DISPLAY=:1
    exec xfce4-session

Die Datei wird gespeichert und der Editor geschlossen. Das Skript muss noch ausführbar gemacht werden, dies wird mittels folgendem Befehl erledigt [3]:

sudo chmod +x /usr/bin/startxgl.sh 

Nun wird der Xgl-Server als Sitzung im Anmeldebildschirm eingerichtet. In einem Editor legt man die Datei /usr/share/xsessions/xgl.desktop an, was wieder Root-Rechte erfordert [4]. Folgenden Text fügt man ein und speichert die Datei:

[Desktop Entry]
Encoding=UTF-8
Name=Xgl
Comment= Eigene Xgl-Sitzung starten
Exec=/usr/bin/startxgl.sh
Icon=
Type=Application

Da neuere Versionen des Xgl-Servers sich automatisch bei jeder Sitzung starten, muss nun noch unter /home/user/.config/xserver-xgl/ eine Datei mit dem Namen "disable" angelegt werden. Alternativ kann auch das Autostartskript mit dem Befehl

sudo rm /etc/X11/Xsession.d/00xserver-xgl_start-server

#oder
sudo rm /etc/X11/Xsession.d/98xserver-xgl_start-server 

im Terminal [3] gelöscht werden.

Der erste Start

Um Xgl zu starten, muss im Anmeldebildschirm "Optionen und Sitzungsmanager" ausgewählt werden. Nun kann Xgl als Sitzung gewählt werden. Dies ist natürlich nur möglich, sofern man Methode 1 befolgt hat. In diesem Fall wird man also gefragt, ob die derzeitige Sitzung als Standardsitzung eingerichtet werden soll. Für den ersten Start ist es allerdings ratsam die Option "Nur für diese Sitzung" zu wählen.

Der nächste Schritt ist die Einrichtung des Composite-Managers, Genaueres kann auf der Übersichtsseite für Desktop-Effekte nachgelesen werden.

⚓︎

XGL unter Gutsy deaktivieren

XGL kann deaktiviert werden, indem man im Homeverzeichnis des entsprechenden Benutzers die Datei .config/xserver-xgl/disable anlegt. Dabei ist der Inhalt irrelevant.

⚓︎

Problembehebung

Fehlende Optionen zum Ausschalten

Hat man sich eine eigene Xgl-Sitzung eingerichtet, fehlen im Abmelde-Dialog die Schaltflächen für das Herunterfahren, den Neustart und "Standby". Um diese Optionen zu erreichen, muss man sich erst aus der Sitzung abmelden und dies im Displaymanager auswählen.

Möchte man diesen Zustand beheben, muss das Startskript um folgende Zeilen ergänzt werden:

cookie="$(xauth -i nextract - :0 | cut -d ' ' -f 9)"
xauth -i add :1 . "$cookie"

Diese müssen nach dem Befehl "DISPLAY=:1" eingefügt werden - zum Beispiel sähe das Startskript für den Fall "ATI und Intel (mit GNOME)" dann so aus:

#!/bin/sh
Xgl :1 -nolisten tcp -fullscreen -ac -accel xv:pbuffer -accel glx:pbuffer &
DISPLAY=:1
cookie="$(xauth -i nextract - :0 | cut -d ' ' -f 9)"
xauth -i add :1 . "$cookie"
exec gnome-session

Ein entsprechender Forenbeitrag mit näheren Informationen ist hier zu finden.

Keine Sonderzeichen mehr verfügbar

Hat man in der Xgl-Sitzung Probleme mit seiner Tastaturbelegung, muss dieses unter "System → Einstellungen-> Tastatur → Belegungen" eigens bestimmt werden. Am besten gleicht man seine Einstellungen mit der "normalen" Sitzung ab.

Kein benutzerdefiniertes Theme mehr

Unter GNOME kann es vorkommen, dass in einer Xgl-Sitzung alle Fensterinhalte grau erscheinen und dies auch nicht über die Themeneinstellung geändert werden kann. In diesem Fall muss der Befehl

gnome-settings-daemon 

nachträglich gestartet [5] oder in den Autostart eingetragen [6] werden.

100% CPU-Auslastung mit gnome-settings-daemon

Startet man den gnome-settings-daemon kann es passieren, dass der Prozessor voll ausgelastet wird. Dies hängt mit den Tastatureinstellungen zusammen. Unter "System → Einstellungen → Tastatur → Belegungen" darf höchsten eine Belegung in der Liste eingetragen sein.

Kein Einloggen nach Logout("cannot open display")

Der XServer legt die Datei /tmp/.X11-unix/X1 an, die nach dem Abmelden ("logout") nicht mehr gelöscht wird. Will man sich anmelden ("login"), darf die Datei allerdings nicht existieren. Dazu trägt man in der Datei "startxgl.sh" ganz oben folgende Zeile ein (die die X1 Datei löscht):

rm -f /tmp/.X11-unix/X1

Flackernder Mauszeiger

Falls der Mauszeiger flackert oder Artefakte zeichnet oder beides auftritt, muss in der XServer-Konfigurationsdatei /etc/X11/xorg.conf im Abschnitt "Device" die Option

"HWCursor" "On"

gesetzt werden [4].

GNOME-Panel: Verzögerter Start von Anwendungen

Unter GNOME starten Anwendungen, für die man einen Anwendungsstarter im Panel eingerichtet hat, nach einer kleinen Animation von einer Abfolge schmaler Rahmen. Diese erscheinen unter Xgl plötzlich gelb, und deren Bewegung wird extrem langsam dargestellt - somit verzögern sie den gesamten Programmstart. Um diesen Effekt zu deaktivieren, muss man im Konfigurationseditor [7] das Häkchen beim Schlüssel "apps → panel → global → enable_animations" entfernen.

Gitterstruktur beim Start von Xgl

Hierbei handelt es sich weniger um eine Problemlösung als um Kosmetik. Startet man eine Xgl-Sitzung, wird dieses durch eine Gitterstruktur, die den gesamten Desktop ausfüllt, angezeigt (es handelt sich hierbei um das "Root-Fenster"). Diesen "grauen Hintergrund", kann man durch einen schwarzen ersetzen (andere Farben stehen nicht zur Auswahl). Hierfür muss dem Startbefehl von Xgl die Option -br hinzugefügt werden. Hat man eine eigene Xgl-Sitzung eingerichtet, befindet sich dieser im Startskript unter /usr/bin/startxgl.sh. Für ATI-Nutzer lautet er dann also z.B.

Xgl :1 -nolisten tcp -fullscreen -ac -br -accel xv:pbuffer -accel glx:pbuffer &

⚓︎

3D-Anwendungen laufen nicht

Es kann vorkommen, dass sich 3D-Anwendungen unter Xgl nicht starten lassen. Zwar unterstützt der Xgl-Server selbst kein DRI ("Direct Rendering Interface"), jedoch sollten die Anwendungen - wenn auch etwas langsamer - laufen. Will man XGL nicht beenden, aber Anwendungen nutzen, die partout ihren Dienst verweigern, existieren zwei Lösungsansätze für dieses Problem:

Gezielt eine bestimmte Bibliothek nutzen

Ab Edgy Eft oder für Systeme, die auf aktuelle ATI-Treiber >=8.26.18 angewiesen sind, bietet sich folgende Lösung an. In /usr/lib/fglrx ist die Bibliothek libGL.so.1.2.xlibmesa abgelegt, mit der 3D-Anwendungen in aller Regel problemlos laufen. Um diese Bibliothek zu benutzen, muss sie im Terminal [3] oder über ein entsprechendes Skript (siehe oben) mit folgender Syntax vor der Anwendung geladen werden:

LD_PRELOAD=/usr/lib/fglrx/libGL.so.1.2.xlibmesa [Anwendung] 

Ebenso soll das Ersetzen der libGL.so.1.2 mit einer älteren fglrx-Version zur Lösung des Problems geführt haben, siehe hier.

Bei Nvidia-Grafikkarten kann oben genannte Lösung auch versucht werden. In aller Regel läuft es mit aktuellen Treibern jedoch problemlos.

Auf einem anderen XServer starten

Dies funktioniert nur, wenn man für Xgl eine eigene Sitzung angelegt hat. Da man, wie oben beschrieben, in diesem Fall weiterhin über den "normalen" XServer verfügt, kann dieser auch für Anwendungen genutzt werden:

DISPLAY=:0 [Anwendung] 

Da Xgl die Grafikbeschleunigung dort nicht negativ beeinflussen kann, laufen die Anwendungen wie man es aus seiner "normalen" Sitzung gewohnt ist. Fundamentaler Nachteil dieser Lösung ist aber, dass auf dem zweiten XServer kein Fenstermanager läuft und man somit die Anwendung u.a. nicht verschieben kann.

Zu diesem Lösungsansatz existiert eine eigene Forendiskussion: Google Earth läuft unter Xgl/Beryl nicht mehr!

Diese Revision wurde am 19. März 2011 17:31 von Shakesbier erstellt.
Die folgenden Schlagworte wurden dem Artikel zugewiesen: Desktop