XGL
Aus Gentoo Linux Wiki
| Installationsmethoden • LiveCDs • Kernel & Hardware • Laptops & Notebooks • Portage • System • Netzwerke & Services • X • Software • Anderes • alphabetischer HOWTO Index |
Inhaltsverzeichnis |
[Bearbeiten] Einleitung
Xgl ist ein X-Server, der OpenGL zum Rendern verwendet. Zusammen mit compiz und einem Windowmanager sind einige nette Effekte möglich. Xgl benötigt die Mesa-Erweiterung GLX_EXT_texture_from_pixmap, die nur in der aktuellen cvs-Mesaversion vorhanden ist.
Informationen in der X.org-Mailingliste (englisch) ([1] und follow-ups) sagen, dass der "GLX_EXT_texture_from_pixmap"-Befehlssatz mit den Jungs von Nvidia programmiert wird, also ist die Wahrscheinlichkeit einer Umsetzung in den Closed-Source-Nvidiatreibern relativ hoch.
| Vorsicht: Als kleine Information am Rande: Dieses Howto ist nicht up-to-date und funktionier nicht mehr, da das overlay nicht mehr existiert.
Die aktuellste Version, die ich kenne ist die englische: http://gentoo-wiki.com/HOWTO_XGL Ich habe heute (18.02.2007) mit einer Überarbeitung angefangen. |
| Vorsicht: Xgl ist Alphasoftware. |
[Bearbeiten] Hardwareanforderungen
[Bearbeiten] Karten die XGL unterstützen
- nVidia GeForce 256 Pro (mit nvidia-glx-1.0.7174)
- nVidia GeForce 2 Go 16Mb (mit nvidia-glx-1.0.8178)
- nVidia GeForce 2 MX 200 (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 2 MX 400 (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 2 MX 440 (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 2 Pro (mit nvidia-glx-1.0.7174)
- nVidia GeForce 3 (mit nvidia-glx-1.0.8178-r3)
- nVidia GeForce 3 Ti 200 (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3, kein dri)
- nVidia GeForce 3 Ti 500 (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 4 MX 420 (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 4 MX 440 (mit neusten nvidia-glx-1.0.8178)
- nVidia GeForce 4 Go 440 64Mb (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 4 MX 4000 64Mb (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 4 MX 4000 128Mb (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 4 Ti 4200 128Mb (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 4 Ti 4600 128Mb (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce FX5200 (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3, kein dri)
- nVidia GeForce FX5200 Go (mit neuesten nvidia-glx-1.0.8171 und nvidia-kernel-1.0.8178,r3)
- nVidia GeForce FX5500 (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3, kein dri)
- nVidia GeForce FX5600 (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3, kein dri)
- nVidia GeForce FX5700 (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce FX5700 LE (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce FX5900 XT (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 6200 (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 6600 GT (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 6700 XL (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 6800 (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3, kein dri)
- nVidia GeForce 6800 LE (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 6800 GT (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 6800 Go (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 6800 XT ()
- nVidia GeForce 6800 XT (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 7300 GS (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 7800 GT (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 7800 GTX (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
- nVidia GeForce 7800 GTX Go (mit neusten nvidia-glx-1.0.8178)
- nVidia Quadro FX4000 (mit neusten nvidia-glx-1.0.8178 und nvidia-kernel-1.0.8178-r3)
| Vorsicht: Für nVidia-Grafikkarten sollte mindestens der nvidia-drivers-1.0.9631 verwendet werden, da nur dieser wirklich gut mit Xorg 7.x funktioniert und ABI2.0 unterstützt!
Die Angaben oben sind veraltet! |
- ATI Technologies Inc R200 BC [Radeon All in Wonder 8500] (mit xf86-video-ati-6.5.7.3, nur rootless)
- ATI Technologies Inc RV280 [Mobility Radeon 9200SE M9+] (mit xorg-drivers, getestet auf einen iBook PPC)
- ATI Technologies Inc RV300 NE [Radeon 9700 Generic] (mit ati-drivers-8.22.5)
- ATI Technologies Inc RV350 [Mobility Radeon 9600 M10] (mit ati-drivers-8.22.5)
- ATI Technologies Inc RV350 AS [Radeon 9550] (mit ati-drivers 8.22.5)
- ATI Technologies Inc RV350 AR [Radeon 9600] (mit ati-drivers 8.22.5)
- ATI Technologies Inc RV350 AP [Radeon 9600Pro] (mit ati-drivers 8.22.5)
- ATI Technologies Inc RV350 [Radeon 9800Pro] (mit ati-drivers 8.22.5)
- ATI Technologies Inc RV370 5B60 [Radeon X300 (PCIE)] (mit ati-drivers 8.22.5, )
- ATI Technologies Inc M24 Mobility Radeon X600 (mit ati-drivers 8.22.5 & den neusten treiber auch:
Option "KernelModuleParm" "agplock=0"
muss in der xorg.conf stehen, damit dürfte es gehen
- ATI Technologies Inc RV380 0x3e50 [Radeon X600] (mit ati-drivers 8.22.5, OpenGL apps/MPlayer crashen X, screenshots garbled)
- ATI Technologies Inc [Radeon X700] (mit ati-drivers 8.22.5 auf dem amd64 scheint ok)
- ATI Technologies Inc R420 JK [Radeon X800] (mit ati-drivers 8.22.5, OpenGL windows schwarz gerendert , MPlayer und XScreenSaver crashen X)
- ATI Technologies Inc Radeon R200 QL [Radeon 8500 LE] (mit xf86-video-ati-6.5.7.3)
- ATI Technologies Inc Radeon XPRESS 200M 5955 (PCIE) (mit ati-drivers 8.22.6)
- ATI Technologies Inc RV350 [Mobility Radeon 9700] (mit ati-drivers 8.22.5)
- ATI Technologies Inc RV200 [Mobility Radeon 7500] (mit xf86-video-ati-6.5.7.3, arbeitet langsam mit 24 bpp, flackern , manche bitmaps werden nicht richtig gerendert , langsames video, schwaryes windows mit 16 bpp)
- ATI Technologies Inc Radeon RV200 QW [Radeon 7500] (mit xf86-video-ati-6.5.7.3,kein dri, langsames video)
[Bearbeiten] Xgl Installieren
[Bearbeiten] Software Vorbereitungen
Aktualisiere deinen Portage tree.
emerge --sync
Damit man Xgl benutzen kann, braucht man den modularen xorg 7 server.
Für Xgl kann ein beliebiger Windowmanager verwendet werden, z.B. Gnome, KDE oder Xfce.
Ein vollständiges Gnome System bekommt man mit:
emerge gnome
KDE Installiert man mit:
emerge kde
Xfce4 bekommt man mit:
emerge xfce-base/xfce4
Für weitere Informationen zur Installation des Windowmanagers bitte die jeweiligen Wiki-Einträge beachten.
Weiterhin benötigt man Subversion zur Nutzung des Overlays. Damit subversion nicht von einer funktionierenden WebDAV-Installation auf dem Rechner abhängig ist, wird es mit -nowebdav installiert:
echo "dev-util/subversion -nowebdav" >> /etc/portage/package.use emerge subversion
[Bearbeiten] Benutze ein Overlay
Das xeffects Overlay hat das schon etwas betagte portage-xgl Overlay von CoffeeBuzz abgelöst. Das aktuell korrekte Overlay heißt: desktop-effects Um dieses nutzen zu können muss man jedoch nach wie vor Layman installieren:
emerge -va layman echo "source /usr/portage/local/layman/make.conf" >> /etc/make.conf
Danach kann das Overlay heruntergeladen werden:
layman -f -a desktop-effects
Wenn man es dann gelegentlich aktualisieren will, geht das so:
layman -s desktop-effects # oder alternative für alle layman-gemanagten overlays: layman -s ALL
[Bearbeiten] Wichtige Pakete de-maskieren
Da es sich bei Xgl bisher nur um eine Alpha-Version handelt sind alle benötigten Pakete noch per ~x86-Keyword maskiert. Um die Pakete dennoch zu installieren muss man sie in der /etc/portage/package.keywords demaskieren.
Füge folgende Zeilen zu /etc/portage/package.keywords hinzu.
=x11-base/xgl-0.0.1_pre20070105 ~x86 =media-libs/mesa-6.5.2 ~x86 =x11-libs/libdrm-2.3.0 ~x86 =x11-wm/compiz-0.3.4 ~x86 =x11-libs/libcm-0.1.1 ~x86
Wichtig ist noch, dass sich in der /etc/make.conf die VIDEO_CARDS-Variable gesetzt wird, falls noch nicht geschehen, da ansonsten die aktuelle Xorg-Version, wie auch Mesa nicht lauffähig sind:
VIDEO_CARDS="fbdev nv nvidia vesa" #für nvidia
[Bearbeiten] Emerge Xgl
Bevor wir Xgl installieren überprüfe/füge die glitz und cairo useflags in deine /etc/make.conf ein. Dann installiere cairo:
emerge --ask --verbose cairo
Oder wenn es schon auf deinen System vorhanden ist (erkennbar an der Ausgabe von "R" oder "U" in der console):
emerge --ask --verbose --oneshot cairo
Die oneshot option ist da, um zu verhindern Pakete in dein world file aufzunehmen, die als Abhängigkeit existieren.
Dann lass uns sicher gehen, dass pango und gtk+ für cairo gebaut sind.
emerge --ask --verbose --oneshot pango gtk+
Dann lass uns nun die benötigten Pakete installieren. Stelle sicher dass die gnome und svg use flags aktiviert sind für compiz.
Wenn du coff3eBuZz's overlay benutzt musst du zuerst glproto-1.4.5-r1 installieren!
emerge --ask --verbose --oneshot glproto
Ich musste mesa mit dem motif-USE-Flag compilieren, damit es funktionierte, ansonsten wurden die Fester im Hintergrund nach Overlapping nicht wieder dargestellt.
echo "media-libs/mesa motif" >> /etc/portage/package.use emerge --ask --verbose --oneshot mesa
Um Probleme zu verhindern sollte bei Verwendung des nVidia-Treibers compiz nicht gegen nVidia, sondern gegen die x11-xorg-Treiber compiliert werden. Dazu geht man wie folgt vor:
eselect opengl set xorg-x11 emerge --ask --verbose xgl compiz eselect opengl set nvidia
ATI-User sollten alles direkt compilieren können (habe ich nicht getestet, da ich nur nVidia-Karten besitze):
emerge -av mesa xgl compiz
Wenn alles richtig gemacht wurde, ist cairo als Abhangigkeit installiert (prüfbar mit:)
equery d cairo
Wenn Pakete auf cairo basieren, dann entferne es aus /var/lib/portage/world, weil es kein primäres Paket ist.
[Bearbeiten] Alternatives Emerge Script
Dieses Script wurde im Forum gepostet für nvidia user und beseitig manche probleme mit amd64.
| Datei: emxgl |
#!/bin/bash
rm -rf /usr/portage/distfiles/cvs-src/*
rm -rf /var/tmp/portage/{xgl*,mesa*,glitz*,compiz*}
cd /usr/include/GL
rm glext.h && ln -s /usr/lib/opengl/global/include/glext.h
rm gl.h && ln -s /usr/lib/opengl/nvidia/include/gl.h
rm glxext.h && ln -s /usr/lib/opengl/global/include/glxext.h
rm glx.h && ln -s /usr/lib/opengl/nvidia/include/glx.h
rm glxmd.h && ln -s /usr/lib/opengl/xorg-x11/include/glxmd.h
rm glxproto.h && ln -s /usr/lib/opengl/xorg-x11/include/glxproto.h
rm glxtokens.h && ln -s /usr/lib/opengl/xorg-x11/include/glxtokens.h
emerge glproto
rm glext.h && ln -s /usr/lib/opengl/global/include/glext.h
rm gl.h && ln -s /usr/lib/opengl/nvidia/include/gl.h
rm glxext.h && ln -s /usr/lib/opengl/global/include/glxext.h
rm glx.h && ln -s /usr/lib/opengl/nvidia/include/glx.h
rm glxmd.h && ln -s /usr/lib/opengl/xorg-x11/include/glxmd.h
rm glxproto.h && ln -s /usr/lib/opengl/xorg-x11/include/glxproto.h
rm glxtokens.h && ln -s /usr/lib/opengl/xorg-x11/include/glxtokens.h
emerge mesa
eselect opengl set nvidia
rm glext.h && ln -s /usr/lib/opengl/global/include/glext.h
rm gl.h && ln -s /usr/lib/opengl/nvidia/include/gl.h
rm glxext.h && ln -s /usr/lib/opengl/global/include/glxext.h
rm glx.h && ln -s /usr/lib/opengl/nvidia/include/glx.h
rm glxmd.h && ln -s /usr/lib/opengl/xorg-x11/include/glxmd.h
rm glxproto.h && ln -s /usr/lib/opengl/xorg-x11/include/glxproto.h
rm glxtokens.h && ln -s /usr/lib/opengl/xorg-x11/include/glxtokens.h
emerge glitz xgl compiz compiz-plugin-opacity xbindkeys transset
|
Der Xgl-coffee overlay beinhaltet ein ähnliches script: emxgl in /usr/local/xgloverlay
Für mehr Informationen besuche Hannos online journal
| Vorsicht: glxcompmgr ist veraltet und arbeitet nicht mit den neuen mesa libs! Transset (wenn Binary transset-df installiert wird) ist trotzdem noch lauffähig! |
[Bearbeiten] Xgl updaten
Um den xgl-overlay upzudaten, gehe zum overlay und tippe svn up ein
cd /usr/local/portage-xgl/ svn up
Coffee's
cd /usr/local/xgl-coffee/ svn up
[Bearbeiten] Eine Anmerkung an die CFLAGS
AMD64 users sollten compiz mit den CFLAGS="-march=k8 -O0" compilen weil es Abstuerze mit der rotate und wobbly Extensions fixt. Wenn du Probleme mit compize hast, solltest du compiz mit -O0 erneut compilen, weil es nicht sehr stabil ist.
Benutzte die neuste compiz von Hanno. Sie sollte mit den amd64 flags korrekt funktioneren.
[Bearbeiten] Xgl starten
[Bearbeiten] Rootless
Um es als ein neues Fenster auf einen schon laufenden X server zu probieren:
| Code: Fuer ati users |
Xgl :1 -ac -accel glx:pbuffer -accel xv:pbuffer |
| Code: Fuer nvidia users |
Xgl :1 -ac -accel glx:pbuffer -accel xv |
Sollten an dieser Stelle Fehler mit TLS auftreten hilft ein Neukompilieren der glibc mit linuxthreads-tls USE-Flag. Ein Anpassen der Symlinks im nvidia-glx Treiber wie auf der Website von Nvidia angegeben brachte bei mir keine Lösung.
echo "sys-libs/glibc linuxthreads-tls" >> /etc/portage/package.use emerge -av glibc
und dann
| Code: Compiz starten |
LD_LIBRARY_PATH=/usr/lib/opengl/xorg-x11/lib/ DISPLAY=:1 compiz gconf |
Damit man von Xgl auch etwas sehen kann benötigt man noch einen Window-Manager:
| Code: Start gnome-window-decorator |
DISPLAY=:1 gnome-window-decorator |
bzw. bei aktuellerer Gnome-Version:
| Code: Start gnome-window-decorator |
DISPLAY=:1 gtk-window-decorator |
Oder
| Code: Start Window-Decorator von Xfce |
DISPLAY=:1 xfwm4 |
für den Window-Manager von Xfce. Dieser läuft jedoch nur, wenn er nicht auf dem Display :0 läuft.
Danach kann man auf dem Xgl-Server z.B. ein Terminal starten:
| Code: Start An application |
DISPLAY=:1 xterm |
| Notiz: Du kannst die compiz Plugins im gconf-editor einstellen unter /apps/compiz oder gconf weglassen und die Plugins manuel übergeben |
[Bearbeiten] Server Modus - Gnome
[Bearbeiten] Als "Startx" script
Wenn du XGL mit dem Gnome Desktop wie einen klassischen X Server starten willst erstelle folgendes Script
| Datei: ./startxgl |
#!/bin/bash echo ">Starte XGL auf dem Display: $1" echo "========= XGL ============" Xgl :$1 -ac -accel xv -accel glx:pbuffer & sleep 3 echo "======= COMPIZ ===========" DISPLAY=:$1 LD_LIBRARY_PATH=/usr/lib/opengl/xorg-x11/lib/ compiz --replace decoration wobbly fade switcher minimize cube rotate zoom scale move resize place & sleep 3 echo "====== DECORATIONS =======" DISPLAY=:$1 gnome-window-decorator & # sleep 3 echo "======= GNOME ============" DISPLAY=:$1 /usr/libexec/gnome-settings-daemon & DISPLAY=:$1 nautilus -n --sync & DISPLAY=:$1 gnome-panel & # DISPLAY=:$1 setxkbmap -model pc105 -layout de -variant basic & #echo "======= LOGOUT ============" #killall Xgl # Wenn du nicht gescheid ausloggen kannst füge folgende Teile hinzu. |
| Code: Mach das script ausführbar |
|
chmod +x ./startxgl |
Um den xglserver zu starten:
| Code: Start Xgl server auf dem port 1 |
|
~/startxgl 1 |
Anmerkung: Manche Leute hatten Probleme mit xgl auf den Standardport.
Noch 'ne Anmerkung: Ein anderes Problem war das, dass gnome-panel keine Anwendungen angezeigt hat. -> Fix: Nach einem Neustart (killall gnome-panel && gnome-panel) zeigt das Panel die Programme an.
[Bearbeiten] Gdm und gnome-session
1) Gdm einrichten:
Suche "0=Standard" im [server] Teil der gdm.conf und ändere es zu "1=Xgl" und füge den [server-Xgl] Teil ein.
Es sollte so aussehen:
| Datei: /etc/X11/gdm/gdm.conf |
... [servers] #0=Standard 1=Xgl ... [server-Xgl] name=Xgl-Server command=/usr/bin/Xgl :1 -ac -accel glx:pbuffer -accel xv:pbuffer ### ändere dies, damit es für deine Grafikarte passt (Bsp. für ati fglrx Treiber) flexible=true |
Nun sollte GDM auf einen Xgl-Server starten. Anmerkung: mit Gnome 2.13 sollten diese Änderungen in /etc/X11/gdm/custom.conf geschrieben werden.
2) Tausche Metacity aus: Hier ist ein kleines Startscript welches man in /usr/bin/ ablegt:
| Datei: /usr/bin/compizrc |
#!/bin/bash # # Starte compiz mit gnome-session # DISPLAY=:1 LD_LIBRARY_PATH=/usr/lib/opengl/xorg-x11/lib/ compiz --replace gconf & DISPLAY=:1 gnome-window-decorator & |
a) Nach dem Einloggen in Gnome starte System->Settings->Sessions (oder benutze "gnome-session-properties" im Terminal als passenden User - nicht als root!)
Hier gehst du zum dritten Tab "manual startup" und klickst den add Button. Gebe den Pfad zu deinem compiz startscript (/usr/bin/compizrc) ein und setze die Priority auf 45.
b) Nach dem Ausloggen starte Gnome erneut und Compiz wird starten, aber du wirst keine Dekorationen und Effekte sehen, da der compiz gconf Eintrag für den User ohne Plugins erstellt wurde!
c) Starte den gconf-editor (gconf-editor als user!) und gehe nach "apps/compiz/general/allscreens/options" und editirie den "active_plugins" key. Dies sollte folgende Sachen beinhalten: gconf decoration wobbly fade minimize cube rotate zoom scale move resize place menu switcher (opacity*)
d) Nachdem restarten vom XGL Server sollte Compiz mit PLugins starten.
\*opacity ist ein später beschriebenes Plugin welches man noch installieren muss - siehe below.
[Bearbeiten] KDM und KDE-session
1) KDM einrichten:
Die Datei /usr/kde/<VERSION>/share/config/kdm/kdmrc öffnen und die Zeile ServerCmd ändern zu:
| Datei: /usr/kde/<VERSION>/share/config/kdm/kdmrc |
... ServerCmd=/usr/bin/Xgl -br -ac -accel glx:pbuffer -accel xv:pbuffer |
2) compiz beim Start von KDE laden:
unter .kde/Autostart eine Datei mit folgendem Inhalt anlegen
| Datei: .kde/Autostart/compiz.desktop |
[Desktop Entry] Encoding=UTF-8 Exec=compiz --replace decoration wobbly fade switcher minimize cube rotate zoom scale move resize place & gnome-window-decorator & GenericName[en_US]= StartupNotify=false Terminal=false TerminalOptions= Type=Application X-KDE-autostart-after=kdesktop |
[Bearbeiten] Server Modus - XSESSION (Ändern von startx)
Kopiere /usr/bin/startx nach /usr/bin/startxgl und ändere
| Datei: /usr/bin/startxgl (old) |
|
xinit $clientargs -- $serverargs -deferglyphs 16 & |
zu (Das ist für nvidia Benutzer, ati Benutzer müssen die Datei anders anpassen)
| Datei: /usr/bin/startxgl (new) |
|
xinit $clientargs -- /usr/bin/Xgl -ac -accel xv -accel glx:pbuffer $serverargs -deferglyphs 16 & |
Dies startet nicht Compiz, darum musst du ein kleines Script erstellen:
| Datei: ./startcompiz |
#!/bin/sh LD_LIBRARY_PATH=/usr/lib/opengl/xorg-x11/lib/ compiz --replace gconf & sleep 2 gnome-window-decorator & xbindkeys |
Das beinhaltet auch die Tastaturbelegung für die PLugins (siehe unten).
Anmerkung: Das sollte die Session in /etc/rc.conf starten
[Bearbeiten] Server Modus - Xfce4
[Bearbeiten] Mit xfce4-session
xfce4-session ist beim xfce4 meta Package als Standard mitinstalliert.
Zuerst musst du ein Script erstellen, das compiz und gnome-window-decorator mit den richtigen Libraries und switches startet.
| Datei: /usr/bin/compizrc |
LD_LIBRARY_PATH=/usr/lib/opengl/xorg-x11/lib compiz --replace gconf & gnome-window-decorator |
| Code: Mach das Script ausführbar |
|
chmod 755 /usr/bin/compizrc |
Nun editire die xfce4-session.rc um dein script statt dem xfwm4 auszuführen.
| Datei: /etc/xdg/xfce4-session/xfce4-session.rc |
[Failsafe Session] Count=4 Client0_Commund=compizrc Client0_PerScreen=False Client1_Commund=xfce4-panel Client1_PerScreen=True Client2_Commund=xftaskbar4 Client2_PerScreen=True Client3_Commund=xfdesktop Client3_PerScreen=False |
Schließlich erstelle ein Script um XGL mit Xfce4 zu starten.
| Datei: /usr/bin/startxgl für NVIDIA |
#!/bin/bash Xgl -ac -accel xv:fbo -accel glx:pbuffer & xfce4-session |
| Datei: /usr/bin/startxgl für ATI |
#!/bin/bash Xgl -ac -accel xv:pbuffer -accel glx:pbuffer & xfce4-session |
| Code: Und Script wieder ausführbar machen |
|
chmod 755 /usr/bin/startxgl |
Du wirst bemerken, dass das xfce4-panel nun transparent ist, als würdest du xfwm4's Composite manager benutzen.
[Bearbeiten] ohne xfce4-session
Wenn du ein minimales XFCE4 installiert hast (ohne xfce4-session, xffm4, etc.), benutzte das Gnome Script von oben und modifiziere es:
#!/bin/bash echo ">Starte XGL auf Display: $1" echo "========= XGL ============" Xgl :$1 -ac -accel xv -accel glx:pbuffer & sleep 3 echo "======= COMPIZ ===========" DISPLAY=:$1 LD_LIBRARY_PATH=/usr/lib/opengl/xorg-x11/lib/ compiz --replace switcher decoration wobbly fade minimize cube rotate zoom scale move resize place & sleep 3 echo "======= XFCE ============" DISPLAY=:$1 xfce-mcs-manager DISPLAY=:$1 gnome-window-decorator & DISPLAY=:$1 xftaskbar4 & DISPLAY=:$1 xfdesktop & DISPLAY=:$1 exec xfce4-panel
Und wieder wird der xfce4-panel transparent, als würdest du die Xorg composite extension aktivieren.
[Bearbeiten] Generelles XGL Start Script
| Datei: startxgl |
#!/bin/bash
# xgl startup script by RiPz @ www.binary-pulse.co.uk
# GNU Public Licence
# woo!
# Edit: 20060301 Added xfce-svn CF (cOff3eBuZz www.tripthelihgt.net/xgloverlay)
echo "###### STARTXGL SCRIPT ######"
if [ "$1" = "" ]; then
echo "Usage: startxgl <display number> <window manager> <gfx>"
echo "<gfx> is optional, values 'ati' oder 'nvidia/other', default ist nvidia/other"
echo "Window Managers currently supported: xfce, gnome."
elif [ "$2" = "" ]; then
echo "Usage: startxgl <display number> <window manager> <gfx>"
echo "<gfx> is optional, values 'ati' or 'nvidia/other', default is nvidia/other"
echo "Window Managers currently supported: xfce, gnome."
else
echo "Starting X Server mit XGL"
echo " Using Display $1"
echo " Using WM: $2"
if [ "$3" = "ati" ]; then
echo " Using Card: ati"
Xgl :$1 -ac -accel xv:pbuffer -accel glx:pbuffer &
else
echo " Using Card: nvidia/other"
Xgl :$1 -ac -accel xv -accel glx:pbuffer &
fi
sleep 2
echo " Starting compiz"
DISPLAY=:$1 LD_LIBRARY_PATH=/usr/lib/opengl/xorg-x11/lib/ compiz --replace gconf decoration wobbly fade minimize cube rotate zoom scale move resize place switcher &
sleep 2
echo " Starting Window Manager"
if [ "$2" = "gnome" ]; then
DISPLAY=:$1 gnome-window-decorator &
DISPLAY=:$1 /usr/libexec/gnome-settings-daemon &
DISPLAY=:$1 nautilus -n --sync &
DISPLAY=:$1 gnome-panel
elif [ "$2" = "xfce" ]; then
DISPLAY=:$1 xfce-mcs-manager
DISPLAY=:$1 gnome-window-decorator &
DISPLAY=:$1 xftaskbar4 &
DISPLAY=:$1 xfdesktop &
DISPLAY=:$1 exec xfce4-panel
elif [ "$2" = "xfce-svn" ]; then
DISPLAY=:$1 xfce-mcs-manager
DISPLAY=:$1 gnome-window-decorator &
DISPLAY=:$1 xfdesktop &
DISPLAY=:$1 exec xfce4-panel
fi
echo " DONE!"
fi
|
[Bearbeiten] Compiz plugins
Diese koennen als Parameters in der Konsole ubergeben werden wenn man compiz startet , oder in der gconf (apps/compiz). Es ist eine gute idee die Optionen fuer die PLugins im gconf anzuschauen.
[Bearbeiten] Plugins lade Ordner
Vom Autor: (Nach dem Sinn ubersetzt)
- Es sind in der Zeit zwei Sachen die mit compiz verwirrend sind.
- 1. Wenn du gconf geladen hast werden die PLugins, die in der Commando Zeile
- ubergeben wurden sind ignoriert.Gconf wird die plugins welcher in der gconf db
- gespeichert sind laden.
- 2.Manche Plugins basieren auf andere Plugins und manche muessen vor
- anderen geladen werden.Der Pluginlader wird nicht versuchen das
- Problem zu fixen, wenn manche Plugins nicht geladet werden
- wegen Abhaengigkeits problem und wird diese einfach Ignoreren.
- Der Plan war andere Programme zu haben um die Plugins zu laden/configurueren
- und dieses Programm soll rausfinden welche Plugins geladen werden mussen und wann.
- Oder vielleicht sollten wir statdessen den code des Pluginsloader andern
- In dieser Ordnung sollten die Plugins geladen werden:
- gconf,decoration,wobbly,fade,minimize,cube,rotate,zoom,scale,move,resize,place,switcher
- -David
[Bearbeiten] Plugins Liste
- decoration
- Aktiviert den Window Manager.Du musst aber trotzdem einen Windowdecorator starten! e.g `gnome-window-decorator` der bei compiz vorhanden ist .
- move
- Erlaubt dir eine key/mouse-button combination einzustellen um ein Fenster uberhall hinzubewegen.
- resize
- Erlaubt dir eine key/mouse-button combination einzustellen um eine Fenstergroesse zu aendern
- place
- Plaziert die Fenster in einer logischen Reihenfolge neu wo sie sich nicht gegeneinander uberlappen.
- fade
- Lasst windows/tooltips/menus in- und ausfaden in/out wenn man sie oeffnet und schliest.
- switcher
- Alt+Tab neuer Fensterumschalter.
- wobbly
- Lasst Fensters wackeln wie Wackelpudding wenn man sie bewegt.
- Einstellungen
- focus_effect (None, Shiver): Effekt wenn das Fenster den Focus bekommt
- map_effect (None, Shiver): Effekt wenn das Fenster erstellt wird
- friction, spring_k: Affect together the wobbliness
- grid_resolution, min_grid_size: Die Auflosung des Netzes welches Wacle;n wird
- snap (shortcut): Wobbly snapping while moving windows
- minimize
- Aktiviert Minimirungs effekte von quartz(Wm von Apples MacOSx).
- cube
- Erlaubt es den Desktop in einen Wurfel zu verwandeln wie in der Xgl prasentation gezeigt wurde.Plugin ist noetwendig fuer:rotate.
- rotate
- Aktiviert die 3D Desktop Rotation mit der Mouse+Key Combo.
- zoom
- Erlaubt es in und um den Desktop zu zoomen.
- scale
- Exposé-like windowsumschalter.
- Settings
- sloppy_focus: mouse-over Fokus
[Bearbeiten] Plugins benuzten
So nachdem du dich durchgequaelt hast um XGL zu haben wie benutzt du es richtig? ;) :
Zwischen Fenstern rumschalten = Alt + Tab
Fensters anordnen und alle Zeigen = F12 schaltet den Effekt an oder aus/das Fenster zu fokusierten wird es vergrosser (in der neusten version vom xgl-overlay ist das standardmässig F11 oder rechte obere Ecke des Desktops)
Zwischen den Desktops rumschalten mit Cube = Strg + Alt + Left/Right Arrow
Zwischen den Desktops rumschalten mit Cube = Strg + Alt + Down Arrow
Zwischen den fenster rumschalten mit cube - mit aktiver Fenster verfolgung= Strg + Shift + Alt + Links/Rechts Pfeil
Rotatieren des Wuerfels = Strg + Alt + Links Click aufs WP und rumziehen
ZUm svg Bilder oben auf den Wurfel zu zeigen = Modifiziere die gconf db,und fuege das svg Bild in /apps/compiz/plugins/cube/screen0/options/svgs ein (Neustart)
Lass das Fenster transparent werden (benotigt opacity plugin) = Strg + Shift + Scroll
Zoom-in einmal = Windows-key rechts klcik
Zoom-in manuel = Windows-key + Maus rad rauf
Zoom-out manuel = Windows-key + Maus rad runter
Fenster bewegen = Alt + links klick
Snap Fenster bewegung (will stick to borders) = Strg wahrend der Bewegung (oder mit Alt + links oder per title bar)
Fenster einschalten = Alt + rechtsklick
Du kannst alles mit dem Gconf editor aendern.
| Vorsicht: Wenn du keys doppel belegst werden beide Aktionen ausgefuehrt! |
[Bearbeiten] Custom Plugins
[Bearbeiten] Opacity
opacity = Strg + Shift + Mousrad
Es ist moeglich deine eigenen PLugins fuer compiz zu ertellen. Hier ist das Opacity und Pluging zB eine Anleitung und Walkthrough durch den Code.
Um es per gentoo zu kriegen: Nutze den xgl-overlay
emerge compiz-plugin-opacity
oder
[Bearbeiten] eigenes ebuild
Du musst in ein bestimmten overlay ordner das ebuild erstellen(eg x11-plugins/compiz-plugin-opacity)
| Datei: compiz-plugin-opacity-20060217.ebuild |
# Copyright 1999-2006 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
inherit eutils cvs flag-o-matic multilib
DESCRIPTION="Opacity plugin for compiz composite manager"
HOMEPAGE="http://www.downwithnumbers.com/compiz_plugins.html"
SRC_URI="http://www.downwithnumbers.com/files/compiz_opacity.tar.gz"
LICENSE="X11"
SLOT="0"
KEYWORDS="~x86 ~amd64 ~ppc"
IUSE=""
DEPEND="x11-wm/compiz"
src_unpack() {
# Lets hack together something that works...
ewarn "This is a crappy ebuild that could stop working at any time, so no need to cry if it breaks =)"
mkdir ${S}
cd ${S}
mkdir plugins
cd plugins
unpack ${A}
cp ${FILESDIR}/Makefile-plugins.am Makefile.am
cd ..
cp ${ECVS_TOP_DIR}/compiz/autogen.sh . || die "Compiz cvs in ${ECVS_TOP_DIR}/compiz necessary"
cp ${ECVS_TOP_DIR}/compiz/configure.ac .
epatch ${FILESDIR}/configure.ac.patch
echo "SUBDIRS = plugins" > Makefile.am
# Lets satisfy autocrap
touch NEWS AUTHORS README ChangeLog
}
src_compile() {
use amd64 && replace-flags -O[1-9] -O0
./autogen.sh --host=${CHOST} \
--libdir=/usr/$(get_libdir) \
--prefix=/usr \
--infodir=/usr/share/info \
--mundir=/usr/share/man || die
# Clean out the binaries from the tarball
emake clean
emake || die
}
src_install() {
make DESTDIR="${D}" install || die
}
|
und folgende zwei Dateien in den files ordner:
| Datei: Makefile-plugins.am |
libopacity_la_LDFLAGS = -module -avoid-version -no-undefined
libopacity_la_LIBADD = @COMPIZ_LIBS@
libopacity_la_SOURCES = opacity.c
INCLUDES = \
@COMPIZ_CFLAGS@ \
@LIBSVG_CAIRO_CFLAGS@ \
@GCONF_CFLAGS@ \
@PLACE_CFLAGS@ \
-I/usr/include/compiz
moduledir = $(plugindir)
module_LTLIBRARIES = \
libopacity.la
|
| Datei: configure.ac.patch |
--- configure.ac.old 2006-02-17 20:13:40.000000000 +0100
+++ configure.ac 2006-02-17 19:26:31.000000000 +0100
@@ -182,21 +182,12 @@
QT_MOC=${QT_MOC}/bin/moc
fi
AC_SUBST(QT_MOC)
AC_OUTPUT([
-compiz.pc
Makefile
-src/Makefile
-include/Makefile
plugins/Makefile
-images/Makefile
-gnome/Makefile
-gnome/window-decorator/Makefile
-gnome/compiz.desktop
-kde/Makefile
-kde/window-decorator/Makefile
])
echo ""
echo "the following optional plugins will be compiled:"
echo " gconf: $use_gconf"
|
Erstelle die Manifest und die Digest files
| Code: Generiere Manifest und die Digest files |
ebuild compiz-plugin-opacity-20060217.ebuild digest |
Emerge das plugin
| Code: emerge compiz-plugin-opacity |
emerge compiz-plugin-opacity |
[Bearbeiten] Ubers CVS
| Code: cvs install command |
cvs -d :pserver:anoncvs@cvs.freedesktop.org:/cvs/xorg co app/compiz
cd app/compiz/plugins
wget http://www.downwithnumbers.com/files/compiz_opacity.tar.gz
# get opacity plugin.
tar zxvf compiz_opacity.tar.gz
patch -p0 < compiz-opacity.patch
cd ../
./autogen.sh
# if there is no error.
make
sudo make install
|
[Bearbeiten] Activiere Opacity
Um es zu aktivieren füge es einfach in dein xgl script ein.Wenn du gconf benutzt ändere per Gconfd deine Datei passend an.
[Bearbeiten] Tips & Tricks
[Bearbeiten] Transparency
Eine Möglichkeit ist über transset-df und xbindkeys.
Oder nuetze opacity changer plugin fur Compiz.
[Bearbeiten] Wichtige Sachen erledigen
Wenn du einige wichtige Sachen erledigen musst solltest du dies entweder ueber die Konsole machen,per vnc oder auf einem zweiten xserver auf dem nicht xgl laueft.
[Bearbeiten] Anti Aliasing
Wenn eine Nvidia Grafikkarte im Rechner steckt, kann mit
export __GL_FSAA_MODE=5
das Anti Aliasing eingeschaltet werden
[Bearbeiten] Troubleshooting
[Bearbeiten] Patch XYZ failed during unpack
Diese Meldung bedeutet dass des CVS,Ebuild fehlerhaft ist.Check die Foren oder Hanzos Blog.
[Bearbeiten] GLX_EXT_texture_from_pixmap is missing
compiz gibt folgendes aus:
compiz: GLX_EXT_texture_from_pixmap is missing compiz: Failed to manage screen: 0 compiz: No managable screens found on display localhost:2.0
Entweder hast du vergessen LD_LIBRARY_PATH=/usr/lib/opengl/xorg-x11/lib/ mit compiz zu ubermitteln.
Oder es st ein fehler von Mesa zb weil du die falsche mesa version benutzt (du solltest 6.5.0_alpha nutzten)
[Bearbeiten] MPLayer und XGL
Videoanwendungen über XGL scheinen eine wesentlich höhere Anforderung an die Hardware zu stellen. Ein Mplayer, der ohne XGL flüssige Bilder darstellt, kann mit XGL zu extremen Ruckeln führen.
Mit folgenden Einstellungen läuft MPlayer über XGL bei mir flüssig:
[Bearbeiten] Mplayer emergen
| Code: USE-Flags |
|
X aac alsa arts cdparanoia directfb encode fbcon gif gtk jpeg libcaca mad mmx nls opengl oss png sdl sse theora truetype vorbis win32codecs xv xvid -3dfx -3dnow -3dnowext -aalib -bidi -bindist -bl -cpudetection -custom-cflags -debug -dga -doc -dts -dv -dvb -dvd -dvdread -edl -esd -ggi -i8x0 -ipv6 -jack -joystick -lirc -live -livecd -lzo -matroska -matrox -mmxext -musepack -nas -nvidia -real -rtc -samba -sse2 -svga -tga -v4l -v4l2 -xanim -xinerama -xmms -xvmc |
Dann gmplayer starten -> Rechtsklick -> Einstellungen
[Bearbeiten] Video
- x11 X11(XImage/Shm)
- (aktivieren) Direct Rendering verwenden
- (aktivieren) Frame-Dropping aktivieren
- (deaktivieren!) HARTES Frame-Dropping aktivieren
[Bearbeiten] Codecs & Demuxer
- Videocodec-Familie: XviD 1.0 decoder
- Audiocodec-Familie: Ogg/Vorbis audio decoder
Leider wird das Bild so im Vollbildmodus nicht groß gezoomt.
Quelle : http://de.gentoo-wiki.com/XGL
