Using Xgl on older versions of SUSE Linux

Şuraya atla: kullan, ara

Disclaimer

These instructions were originally written for a beta version of SUSE 10.1. As of the released version, it is much easier to configure Xgl/compiz, as described at Using Xgl on SUSE Linux. This page is being left around to help people trying to get Xgl working on SUSE 10.0, NLD9, or other pre-10.1 versions of SUSE Linux.

Note that using Xgl on these systems is highly experimental and not supported.

NOTE: As of May 2006, the compiz packages in SuSE Factory require a XRender function call in xlibs that is not supported by Xorg-6.8 which comes with SuSE 10.0. You have to upgrade to Xorg-6.9. Recompiling the compiz source RPM fails because it explicitly requires library RPMs that also are only available on SuSE 10.1. So the instructions below apply only for older compiz RPMs.


Installing Proprietary Drivers

NVIDIA cards

Install NVIDIA drivers after booting in runlevel 3. Reboot and after that install Xgl.

ATI cards

Install ATI drivers after booting in runlevel 3. You will need to make several modifications to /etc/X11/xorg.conf after installing and configuring the driver:

In Section "Device", add these lines:

Option "EnablePrivateBackZ" "no"
Option "KernelModuleParm" "agplock=0"

and in Section "Extensions", add:

Option "DAMAGE" "no"

Reboot and after that install Xgl.

Installing Xgl and Compiz

Version:
10.0 &
earlier
Besides installing the packages beneath you need to install a compatibility package, which is now available for a varity of architectures. It contains three missing shared libraries. And you also have to install libdrm.rpm (2.0-8), presumably from SUSE 10.0 (they install without dependency problems). Note that using Xgl on these systems is highly experimental and not supported.

You will need to install the following list of packages:

  • xgl
  • compiz
  • libsvg-cairo
  • libsvg

You can retrieve the packages from: http://download.opensuse.org/distribution/SL-OSS-factory/inst-source/suse/

Alternate compiz package from the development CVS of Quinnstorm compiz-quinn x86

Quick links:

Instructions for building from CVS

  • Freedesktop.org [1]

Start Xgl as your main Xserver

In order to use Xgl, change the sysconfig variable

DISPLAYMANAGER_XSERVER
in
/etc/sysconfig/displaymanager
to
"Xgl"
,

run SuSEconfig --module xdm and restart your X session. You can add additional options for Xgl to DISPLAYMANAGER_XGL_OPTS, see /usr/share/doc/packages/xgl/README.SUSE for more information.

Caveat: If you are using an ATI graphics card, be sure to read the Troubleshooting section.

Version:
10.0 &
earlier
The above-mentioned section for setting Xgl as your main Xserver does not work when using kdm/gdm. Instead, you will need to edit the configuration file for kdm/gdm to make it start Xgl instead of X. You need to edit /etc/opt/kde3/share/config/kdm/kdmrc and change ServerCmd=/usr/X11R6/bin/X -br to ServerCmd=/usr/X11R6/bin/Xgl -br

For gdm, please edit /etc/opt/gnome/gdm/gdm.conf and replace command=/usr/X11R6/bin/X -audit 0 with command=/usr/X11R6/bin/Xgl -audit 0 in the server-Standard section.

Using compiz as your window manager

Xgl works best with a composite manager. For some effects 'composite' and 'window manager' have to interact tightly, so they should actually be the same process. compiz is the first available combined window / composite manager that uses OpenGL.

Compiz isn't your regular window manager, it uses plugins for all of its functionality. Even for its basic functionality, like moving a window. This gives enormous flexibility.
So in order to get the basic functionality , we have to load decoration move resize place in that order.

To replace your current window manager and load the basic plugins, start:
compiz --replace decoration move resize place minimize &
gnome-window-decorator &

The second line starts a 'window decorator' program to give your windows a decoration.
It's an experimental window decorator for gnome which is included with compiz.

Now you're ready to experiment with the more fancy plugins. For ex: wobbly plugin.

You can also start with all plugins by specifying gconf decoration wobbly fade minimize cube rotate zoom scale move resize place switcher water.
On subsequent startups it is enough to invoke compiz --replace gconf. You can then use gconf-editor (sorry, no KDE configuration plugin yet) for editing the parameters of all compiz plugins. More information about the plugins and their parameters are presented on the compiz page.

To start compiz automatically, open kate, paste these lines shown below, save it as compiz.desktop in /.kde/Autostart folder located in your home directory
[Desktop Entry]
Encoding=UTF-8
Exec=compiz --replace decoration wobbly fade minimize cube rotate zoom scale move resize place switcher water & gnome-window-decorator &
GenericName[en_US]=
StartupNotify=false
Terminal=false
TerminalOptions=
Type=Application
X-KDE-autostart-after=kdesktop

thats it,

Compiz is ready to greet you at next login,

Adding New Compiz Plugins to Gconf

Dosya:Gconf-editor compiz plugins key.png

Gconf learns which plugins to load from the first time you run compiz with gconf. From then on, when you start Compiz with Gconf, compiz will read the plugins list from gconf.

So, if you leave out a plugin the first time you run compiz --replace gconf ..., you can add it through gconf editor in the following key:
/apps/compiz/general/allscreens/options/active_plugins

Troubleshooting

Xgl is highly experimental code, it has been tested on only a few hardware platforms, and depending on driver state it may even crash your computer. This code is not for the faint of heart. Said that, it works remarkably well on several platforms.

For more information about Xgl in general, please read the Xgl overview. If you're having problems with Xgl, look at the Xgl troubleshooting page.

Visit #Xgl at irc.freenode.org for more support.

Glossary

Composite Extension
This extension to X causes an entire sub-tree of the window hierarchy to be rendered to an off-screen buffer. Applications can then take the contents of that buffer and do whatever they like. The off-screen buffer can be automatically merged into the parent window or merged by external programs, called compositing managers.
FBO
Frame Buffer Object (FBO) is an OpenGL extension that defines a simple interface for drawing to rendering destinations other than the buffers provided to the GL by the window system.
Pbuffer
Pixel buffers (Pbuffers for short) are additional non-visible rendering buffers for an OpenGL renderer.