XGL

Aus Gentoo Linux Wiki

Wechseln zu: Navigation, Suche
Dieser Artikel ist Teil der HOWTO Sammlung.
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

[Bearbeiten] Weblinks

[Bearbeiten] Videos

'Persönliche Werkzeuge