Search:  
Gentoo Wiki

Xorg/Transparency


 XOrg IndexConfigurationHIDevices
FontsVideo CardsMonitors  


Firefox,Thunderbird, aterm with gimp compiling, amarok and gaim.
Firefox,Thunderbird, aterm with gimp compiling, amarok and gaim.

Enlightenment e16-cvs, with gkrellm on the right, pullout transparent aterm, transparent gmplayer playing.
Enlightenment e16-cvs, with gkrellm on the right, pullout transparent aterm, transparent gmplayer playing.

gaim, thunderbird, firefox, sancho, gmpc, gimp, gtkpod
gaim, thunderbird, firefox, sancho, gmpc, gimp, gtkpod

Contents

Introduction

While I used postings on http://forums.gentoo.org to get my X.org setup going, I thought I would put together a simple guide here to make life easier for anyone who wanted it easier.

Note: If you have some time to spare, trying out the Xgl HOWTO first might be worthwhile. It has the advantage of being faster, and many users have reported using it without any problems.

This guide is going to show you how to get X.org 7.1 up and running on Linux (the emphasis will be on using Gentoo, but it should work on any other Linux distro as well).

Warning: X11 Transparency may still be unstable. It works perfectly on some systems, but badly crashes on others.
Warning: ATI users: At this time (ati-drivers 8.35.5), enabling Composite extension disables direct rendering (ie hardware OpenGL support). Also Composite extensions does not even work correctly with 8.14.13-r2, using KDE 3.4 with ati cards. Try to use the opensource version xf86-video-ati instead and submit a bug report if any issues.

Getting the latest X.org

We of course can't possibly do anything if we are missing X.org. To obtain this in Gentoo is very simple:

emerge --sync
emerge xorg-x11
Note: First make sure the VIDEO_CARDS variable in /etc/make.conf is appropriately set for the video driver you are using.

Once X.org is done building, you will be ready to get started using it. If you previously used X.org, then your config file at /etc/X11/xorg.conf will be used. If you are a XFree86 user moving over, then X.org will automatically load your /etc/X11/XF86Config, but I would recommend renaming the config to xorg.conf for consistency.

Now, the great thing is you are already getting some of the advantages of the new X.org without even changing any configs. You are now using XDamage extension, which should make drawing your screen more efficient than ever. You of course are also getting some bug fixes and what-not along the way. While that is nice, we of course want MORE MORE MORE! So let's get more.

Setting up X Composite Extension

This step is very simple (and holds true for any linux distro). First you need to edit your /etc/X11/xorg.conf:

Then you need to add the following to the file (top or bottom of the file, it doesn't matter)

File: /etc/X11/xorg.conf
Section "Extensions"
    Option "Composite" "Enable"
EndSection


Note that contrary to what was previously stated here, Option "RENDER" "Enable" is not, and never has been needed. The Render extension has been enabled by default since it was integrated, and is what has allowed things like antialiased fonts.

DAMAGE/XDAMAGE tells the X-server to only redraw those parts of the screen which have been "damaged", thus saving CPU cycles by not redrawing the whole screen when only small parts have been changed ("damaged") while moving a window for example.

Now next time you restart X.org it will have the Composite Extension enabled. This extension allows for all drawing to occur on an offscreen buffer first, then it is blitted to the actual framebuffer when all drawing is done. This allows for flicker free rendering and some other cool effects (like real transparency and shadows...which are next!).

To ensure this extension was loaded, simply run

xdpyinfo | grep Composite

and make sure it shows up. Emerge x11-apps/xdpyinfo if you need it.

If this isnt working, and you have followed these instructions from with in a working and running X session you should make sure to log out of X and restart your X session for the changes to take place.

Note: I needed to emerge xcompmgr and restart xorg before Composite actually worked --Triffid_Hunter

If you change xorg.conf, you'll need to restart X. That's why it says "next time you restart X.org" above...

Note: If you use X.Org X servers older than X11R6.9.0 with Nvidia's GLX, you have to set Option "AllowGLXWithComposite" "true" for X to load with composite. This needs to be set in the Device section for your Nvidia card.

Enabling shadows and real transparency

KDE4

KDE 4 has built-in 3D-plugins, like pruned version of Compiz. Just enable composite and compile kde's packages with use flag xcomposite (...and configure X and restart it...) and you are ready to enable kde's Desktop Effects from Systemsettings -> Desktop.

I didn't spotted _any_ speed lowering. I wonder how true this is with old machine, but for new machines kde4 is the absolute must.

KDE 3.4 or later

Starting in version 3.4, KDE has support for the composite translucency feature provided you set the xcomposite USE flag when emerging kwin and kicker for the split ebuilds or kdebase using the monolithic ebuilds. Open up KDE Control Center from the KMenu. On the tree on the left, click Desktop->Window Behavior. Click on the Translucency tab and check the Use translucency/shadows option. The various settings are then available for tweaking in the configuration frame. Restarting KDE may be required to enable your new settings.

Enlightenment DR16 Version 0.16.8 or later

Since the 0.16.8 release Enlightenment supports the composite extension natively including transparency and shadows. It requires no special useflag for Enlightenment. In the default configuration it is not enabled, you have to rightclick on the desktop and select Composite Settings. Now you are able to control the features for the different windows by rightclicking on the titlebar (the menu where you can set all differnt kinds of Window properties. No restart is required.

Enlightenment DR17

Enlightenment DR17 cvs does have a module called Bling for controlling drop shadows and window fades. Just unmask and emerge e_modules after emerging e. The module can be activated from Configuration->Modules->Bling.

It is crucial that you issue as the user who is running e17

enlightenment_remote -use-composite-set 1

And you will have to deactivate the Dropshadow module in order to get nice shadows which do not interfer with the bling shadows.

xcompmgr and transset

Warning: It's been reported that xcompmgr has memory leak problems. It's encouraged to use built-in composite effects in xfwm and metacity.

Now it is time for the pay off; time for some eye candy! Since this is such a new release, many of the popular window managers don't yet have native support for Xorg's new features. So for now we will use two special tools to enable our effects. First we need to obtain xcompmgr and transset:

Note: A standard XFCE4 installation includes a transparency manager which is installed by default and is activated when the Composite-extension is enabled!
emerge xcompmgr transset

It might be necessary to unmask transset in order to merge it.

echo "x11-misc/transset ~x86" >> /etc/portage/package.keywords

At this point we have all we need to enable drop shadows, cool "fade out" effects and real transparency. First we need to launch xcompmgr. From a console inside of X.org do this:

xcompmgr -c

This will let you see the effects of running xcompmgr - if you don't like them, just do "control-c" from the console you are running xcompmgr in. If you do like them, do "control c" and then:

xcompmgr -c &

The & asks xcompmgr to run in the background - when it's like this you will have to use kill or killall to stop xcompmgr.


Tip: Rather than doing CTRL+C and killing the program you can also CTRL+Z to suspend the program momentarily and type 'bg' to put the process in the background without having to use &. Background jobs can be listed with the 'jobs' command and killed with the 'kill %1' command where 1 is the number listed in the 'jobs' command output. Note, that after suspending composite manager your screen will freeze until you type 'bg'

This will enable xcompmgr with "soft" drop shadows turned on. You should now have happy little drop shadows on all your windows. You could optionally use the -s flag instead for "harsh" shadows as I call them (they are ugly if you ask me).

My (GlaDiaC) settings for xcompmgr with shadow and fading are:

xcompmgr -cCfF -r7 -o.65 -l-10 -t-8 -D7 &

Next we need some see-through windows! Do this in the same console:

transset

Now your cursor will have changed, simply click on the window you want to make see through. You can also pass transset a value to define how transparent to make the windows. Try:

transset .2
Note: 0 = fully see through, 1 = no transparency

To disable all of this after you have got it going simply type this in a console:

killall xcompmgr

This will turn xcompmgr off and disable all drop shadows and transparency settings.

This is only the beginning of what we will see from X.org 6.8. As Window Managers and applications start making full use of the new tools we won't even need these things like transset to get these great features. We will also see apps that can use transparency and such intelligently (like why make my whole konsole window transparent...how about only the content window?). Already, some applications like kwin, the KDE window manager, are being ported. I'm personally really looking forward to what is to come!

transset-df

If you don't want to wait and transset is not too handy for you, you can use transset-df:

emerge -a transset-df.

Then, you can use keyboard or mouse shortcuts to set the transparency value to the focused windows.

Example: the "scrollwheel method" can be realized via xbindkeys.

emerge xbindkeys
File: ~/.xbindkeysrc
"transset-df --min 0.1 -p --dec 0.2"
 control + b:4

"transset-df -p --inc 0.1"
 control + b:5

This way you can adjust transparency of any windows "on demand".

Special Notes

If you are using an NVIDIA graphics card and using the NVIDIA drivers you will want to add this to the Device section (the second one, with the clock lines and driver selection) of your /etc/X11/xorg.conf file:

File: /etc/X11/xorg.conf
Option      "RenderAccel" "true"

You will get a noticable speed increase when using this along with the Composite Extension. Acceleration currently does not work if NVIDIA TwinView is being used — composite will work, but much slower than if you were running with one output.


Tip: It works fine on my (cooyeah) Intel 845G as well.

To improve performance with ATI and NVIDIA cards, you will want to add this option to your /etc/X11/xorg.conf:

File: /etc/X11/xorg.conf
Option      "backingstore" "true"

When enabled with a Nvidia card, you will find the following lines in your xorg log file /var/log/Xorg.0.log:

File: /var/log/Xorg.0.log
(**) NVIDIA(0): Option "BackingStore" "true"
(**) NVIDIA(0): Backing store enabled"

This option is used to enable the server's support for backing store, a mechanism by which pixel data for occluded window regions is remembered by the server thereby alleviating the need to send expose events to X clients when the data needs to be redisplayed. Note that this can significantly increase performance in nVidia TwinView setups.

Troubleshooting

If you experience crashes, you may - as a quick workaround, before testing something else - try to set XLIB_SKIP_ARGB_VISUALS=1 and run the program again. In a few cases it helps.

$ /usr/bin/qiv .
Gdk-ERROR **: BadMatch (invalid parameter attributes)
serial 113 error_code 8 request_code 2 minor_code 0
$ XLIB_SKIP_ARGB_VISUALS=1 /usr/bin/qiv .
$

Nvidia + Xorg

Applications that use GLX (like glxgears)won't run: For pre-9xxx drivers, Try adding the following to your device section (again, the second device section with the clock lines and driver selection). 9xxx drivers (and perhaps late 8xxx drivers) interact with Composite correctly, rendering this option null.

File: /etc/X11/xorg.conf
Option "AllowGLXWithComposite" "true"

Workstations overlays and Composite are mutually exclusive. If you're using a Nvidia Quadro4 XGL or Quadro FX based card, you can use either Composite or OpenGL overlays, but not both. To use overlays (and you most likely want to, as it's one of the most important features of the Quadro cards), you have to disable the Composite extension.

Note: If xcompmgr hangs or crashes within seconds, check your nVidia driver's version. The 1.0.7xxx series are known to have problems with composite rendering (among others). Try a 1.0.6xxx driver instead.

If things seem really slow, try adding the following to your device section (again, the second device section with the clock lines and driver selection). This option is enabled by default on 9xxx drivers:

File: /etc/X11/xorg.conf
Option "RenderAccel" "true"
Note: RenderAccel has become a lot more stable using nivida 1.0.8178 or newer drivers, but was considered experimental on older drivers. Set this option to false if you experience lockups.

Another issue (which manifests itself in all Nvidia-Drivers to date).

When composite is enabled (either via xcompmgr or third party manager, like enlightenments), all windows/icons/menus on the desktop disappear, replaced with a gray screen. The only way to stop this once its occured is to kill the composite manager (upon which everything returns to normal). This problem has manifested itself in the NVIDIA Inno3D PCI card and GForce2/400 AGP8x card to date, with no known fix as yet.

Xinerama

Composite currently does not work Xinerama, you will have to use Twinview. Nvidia says this is due to a limitation in the xserver.

ATi + Xorg

You can get hardware accelled Render (EXA) for 9200 and below, using X.org 7.0 driver 'radeon', thus making Composite ridiculously fast and even overcome NVidia cards, since they don't support EXA yet. Setting the 'AGPMode' to its maximum applicable value and enabling 'AGPFastWrite' makes a huge difference in X.org's useability. For best performance take a look at HOWTO Modular Xorg

Only version 8.8.25 and above of ATI's binary drivers work with xorg >=6.8.0. At this time (ati-drivers 8.27.10), enabling Composite extension disables direct rendering (ie hardware OpenGL support). Also Composite extensions do not even work correctly with 8.14.13-r2, using KDE 3.4

Update: As of ati-drivers 8.37.6, Composite with direct rendering is supported. However, it is incredibly buggy and creates myriad artifacts across the screen.

This is with Open Source "radeon" driver.

Mozilla (Firefox) crash Issue with Flash

If Mozilla/Firefox crashes whenever you visit some sites with Flash objects and you've enabled the Composite module in xorg.conf, you may use the following as a workaround:

export XLIB_SKIP_ARGB_VISUALS=1

You can either add this line to the startup script for Mozilla/Firefox (/usr/bin/firefox), or export it globally by placing it in a new or existing file in /etc/env.d/

File: /usr/bin/firefox
export MOZILLA_LAUNCHER=firefox-bin
export XLIB_SKIP_ARGB_VISUALS=1
exec /usr/libexec/mozilla-launcher
File: /etc/env.d/09flashfix
XLIB_SKIP_ARGB_VISUALS=1

Be sure to do an env-update and log out and back in if you choose the /etc/env.d/ route.

Fluxbox windows won't raise

Try enabling Configure » Slit » Layer » Desktop.

If you have anything I need to add to this article please email me at nathan AT grebowiec.net.

This guide was originally posted at http://fluxbox-wiki.org/index.php/Transparency

MPlayer problem

If you have some difficulties with MPlayer (transparency, bad display...), try the following option:

mplayer -vo x11 <inputfile>

Notice that you cannot resize the window in this mode by default, to use software scaling to be able to resize as normal add -zoom to the commandline entry (or add zoom=yes to your mplayer.conf), for example:

mplayer -vo x11 -zoom <inputfile>

For me only the following option works:

mplayer -vo gl2 <inputfile>

But then again it can crash your X. (Using NVidia + 6.8.2 {Betelgeuse 20:01, 8 Mar 2005 (GMT)})

You probably have to play around a bit with MPlayer's video output option. NOTE: using -vo x11 and -zoom dramatically slow down MPlayer! -vo xv will provide best preformance when working!

MythTV problem

You must tell MythTV not to use XVideo to get proper transparency when using nVidia drivers. To do this define the NO_XV environment variable. With bash:

NO_XV="1" mythfrontend

Metacity Issues

If you're noticing that metacity is not displaying the title bar and window borders correctly or if transparency is not working at all under metacity, try this:

Recompile metacity disabling rendering. To do this, open up your metacity ebuild

nano /usr/portage/x11-wm/metacity/metacity-x.xx.x.ebuild
File:

and look for the line (about line 35):

G2CONF="${G2CONF} $(use_enable xinerama) --disable-compositor"

Then add --disable-render to it so it should look something like :

G2CONF="${G2CONF} $(use_enable xinerama) --disable-compositor --disable-render"

Always remember to execute ebuild /usr/portage/x11-wm/metacity/metacity-x.xx.x.ebuild digest, otherwise portage will complain about the file size.

Gnome-Panel Issues

If your windows ignore your gnome-panels after starting xcompmgr, simply run

killall gnome-panel
Note: Better to kill metacity as gnome-panel is dangerous - can kill alot of other programs (like things iconifyed in the notification-tray).

xcompmgr compatibility with xsetbg

xcompmgr does not seem to run well on a background set with xsetbg. The solution is simply to emerge feh and replace you xsetbg line with feh --bg-center, --bg-scale, --bg-tile, or --bg-seamless options,

example: feh --bg-scale ~/desktop.jpg.

Note: Fluxbox users can keep using fbsetbg, which should nearly always chose feh against the others when it is installed.

xmms crashes in double-size mode

Make a script that sets XLIB_SKIP_ARGB_VISUALS=1 before running xmms to fix this:

#!/bin/sh
XLIB_SKIP_ARGB_VISUALS=1 xmms "$@"

This prevents xmms from seeing the extra ARGB modes that the Composite extension enables. Unfortunately this also means that you can't make xmms translucent.

xcompmgr crashes within minutes of running

Do not use the fade effects with xcompmgr if you find that it consistently crashes. For whatever reason, fades make xcompmgr much more unstable than it already is.

KDE fails to resize windows properly if a composite manager is running

If xcompmgr or kompmgr is active you may experience strange effects depending on your window decorations. This is a known bug and hopefully will be fixed soon. It seems this bug only occurs for decorations with rounded corners.

Workaround: use xrefresh to update your screen. Perhaps you want to bind this to a key via hotkeys...

Composite manager is already running with Xfce4

xfwm4 has a builtin composite manager. To disable this open a terminal and run the following:

killall xfwm4
xfwm4 --compositor=off --daemon & >> /dev/null

Now you will be able to run xcompmgr with more eyecandy ;)

Composite mysteriously not working

If you enabled composite in xorg.conf, and xdpyinfo still does not report that it is enabled, you can try the following change in your kdmrc file (if you use KDM):

[X-:*-Core]
ServerCmd=/usr/bin/X -br +extension Composite
Retrieved from "http://www.gentoo-wiki.info/Xorg/Transparency"

Last modified: Fri, 19 Sep 2008 02:06:00 +0000 Hits: 444,601