TIP Xorg X11 and Transparency

Uit Gentoo Linux Wiki

Ga naar: navigatie, zoeken

Inhoud

[bewerken] Introductie

Deze how-to legt uit hoe men X.org 6.8 werkende kan krijgen onder linux en hoe men daarna gebruik maakt van de Composite extensie om allerlei 3D effecten te verkrijgen zoals venstertransparantie en shaduwen. Deze how-to is voornamelijk bedoeld voor Gentoo Linux, maar zou ook voor andere distributies moeten werken.

--Lordmyth 5 feb 2006 13:00 (GMT) Vertaling - copyright (c) voorbehouden aan de originele auteurs.

[bewerken] De recentste X.org installeren

We kunnen natuurlijks niets zonder X.org. Het installen in Gentoo is simpel:

emerge --sync
emerge xorg-x11

Van zodra de X.org installatie afgerond is, is het klaar voor gebruik. Als u voordien al X.org gebruikt hebt, dan is wordt uw configuratiebestand (te vinden op /etc/X11/xorg.conf) gebruikt. Als u een XFree86 gebruiker bent die de overstap maakt op X.org dan wordt automatisch uw /etc/X11/XF86Config bestand geladen, maar aangeraden word om het te hernoemen naar xorg.conf.

Het fantastische is dat u nu al de voordelen ondervindt van van de nieuwe X.org, zonder zelfs een enkel configuratiebestand te wijzigen. U gebruikt nu http://freedesktop.org/Software/XDamage, wat tekenen op het scherm efficienter dan ooit zou moeten maken. Natuurlijk verkrijgt u ook bug-fixes en zulke. Dit is allemaal goed en wel, maar natuurlijk willen we MEER! Dus hier gaan we:

[bewerken] Het opzetten van de X Composite Extensie

Deze stap is zeer simpel (en hetzelfde voor elke linuxdistributie). Allereerst moet u uw /etc/X11/xorg.conf configuratiebestand bewerken:

Dan moet u het volgende toevoegen aan het bestand (maakt niet uit waar)

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

Let wel dat, in tegenstelling wat hier vroeger vermeld werd, Option "RENDER" "Enable" niet, en ook nooit nodig was. De Render extensie is was al standaard in gebruikt. Die liet namelijk dingen als "antialiased fonts" (gladde lettertypen) toe.

De volgende keer dat u X.org herstart zal het gebruik maken van de Composite extensie. Deze laat to dat al het tekenen eerst in een buiten scherm buffer gebeurt, en dan naar de eigenlijke framebuffer gestuurd wordt wanneer al het tekenen gedaan is. Dit laat toe om zonder flikkeringen te werken en ook allerlei leuke effecten (zoals transparantie en schaduwen... die nu volgen!).

Om zeker te zijn dat deze extensie geladen werd, moet u gewoon het commando

xdpyinfo | grep Composite

uitvoeren en checken dat er iets van uitvoer wordt getoond.

[bewerken] Schaduwen en echte transparantie instellen

[bewerken] KDE 3.4 of recenter

Beginnende bij versie 3.4, heeft KDE ondersteuning voor de composite doorlatendheidsfunctie. Open het KDE Configuratie Centrum vanuit het KMenu. In de lijst links, klik Vanaf versie 3.4 heeft KDE ondersteuning voor de composite transluency feature. Open de KDE Control center vanuit het KMenu. Klik op de lijst links op Desktop -> window behavior. Klik op de Transparantie tab en vink de optie 'Gebruik transparantie/shaduwen' aan. Verschillende instellingen in het configuratieframe zijn dan bruikbaar om het gedrag van deze te veranderen.

[bewerken] xcompmgr en transset

Nu is het tijd om de vruchten te plukken van het werk; tijd voor wat 'eye candy'! Omdat deze release nog nieuw is, ondersteunen weinige van de window managers deze nieuwe functies van X.org al. Dus voorlopig is het nog behelpen met twee speciale programma's om deze effecten te gebruiken. Allereerst moet u xcompmgr en transset installeren:

emerge xcompmgr
emerge transset

In bepaalde gevallen kan het nodig zijn om transset te unmasken om het te kunnen installeren.

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

Nu hebben we alle benodigdheden om vensterschaduwen, leuke "fade out" effecten en echte trasparantie te gebruiken. Allereerst moet u xcompmgr starten. Typ vanuit een terminalvenster in X.org dit:

xcompmgr -c

Dit zal u het effect van xcompmgr draaien laten zien - als u deze niet aangenaam vindt, doe dan gewoon "control c" vanuit het terminalvenster waarin u xcompmgr aan aan het draaien bent. Als u het wel goed vindt, doe dan "control c" en dan:

xcompmgr -c &

Het "&" teken zorgt ervoor dat xcompmgr in the achtergrond wordt gedraaid - in deze toestand zult u "kill" of "killall" moeten gebruiken om xcompmgr te stoppen.

(Tip: In plaats van CTRL+C te doen en het programma af te sluiten kunt u ook CTRl+Z om het programma tijdelijk in slaapstand te brengen en dan 'bg' typen om het process in de achtergrond te laten draaien zonder "&" te hoeven gebruiken. Taken in de achtergrond kunnen getoond worden met het 'jobs' commando en gestopt worden met het 'kill %1' commando bij welke 1 het nummer is dat door de uitvoer van het 'jobs' commando wordt getoond.)

Dit zal xcompmgr starten met "zachte" schaduwen aan. U zou nu leuke kleine schaduwen onder al uw vensters moeten krijgen. Optioneel kunt u de -s vlag gebruiken voor "harde" schaduwen (maar die zijn eerder lelijk vind ik).

Mijn xcompmgr instellingen voor mijn GlaDiaC kaart met schadumen en "fading"-effecten zijn:

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

Vervolgens hebben we wat doorkijkvensters nodig! In hetzelfde terminalvenster:

transset

Nu zal uw cursor veranderd zijn. Klik dan gewoon op het venster dat u als doorkijkvenster zou willen hebben. U kunt aan transset een transparantiewaarde doorgeven. Probeer eens

transset .2

(opmerking: 0 = volledig transparant, 1 = niet transparant)

Om dit allemaal buiten werking te stellen nadat u het in gang gekregen hebt hoeft u alleen maar

killall xcompmgr

in een terminalvenster te typen. Dit zal xcompmgr uitschakelen en daarmee alle schaduwen en transparantie-instellingen.

Dit is alleen het begin van wat we van X.org 6.8 zullen zien. Als Window Managers en toepassingen volledig gebruik zullen maken van deze nieuwe functies zullen we niet eens meer dingen als transset hoeven gebruiken om deze fantastische mogelijkheden te benutten. Ook zullen er toepassingen verschijnen die transparantie en zulke intelligenter zullen gebruiken (waarom het hele konsole venster transparant maken, waarom niet alleen het inhoudsvenster?). Nu al zijn er toepassingen zoals kwin, de KDE window manager, die worden overgebracht. Persoonlijk ben ik zeer benieuwd naar wat er komen zal!

[bewerken] transset-df

Als u niet wilt wachten en transset niet zo handig vindt, dan kunt transset-df gebruiken (ebuild gepost als bug 94216).

download transset-df
tar zxf transset-df-X.tar.gz waarbij X het versienummer is.
cd transset-df-X/
make
mv transset-df /usr/bin/ (hiervoor moet je root gebruiker zijn)

De "scrollwheel methode" heb ik gerealiseerd met xbindkeys.

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

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

Hiermee kunt u de transparantie van gelijk welk venster "on demand" wijzigen.

[bewerken] Bijzondere vermeldingen

Als u een NVidia grafische card gebruikt met de NVidia stuurprogramma's, dan is het waarschijnlijk wenselijk om het volgende aan de "Device" sectie van xorg.conf toe te voegen (de tweede, met de kloksnelheden (clock) en de stuurprogramma selectie):

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

U zult een duidelijke snelheidsverhoging verkrijgen als u dit gebruikt samen met de Composite extensie. Dit werkt momenteel niet als NVidia TwinView gebruikt word -- composite zal wel werken, maar veel trager dan met een enkele uitvoer.

Tips: Dit werkt ook goed met mijn Intel 845G.

Als u een ATI grafische kaact gebruikt met de ATI stuurprogramma's, dan zou u dit aan de "Device" sectie van xorg.conf toe willen voegen:

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

Dit wordt gebruikt om de ondersteuning voor "backing store" in te schakelen voor de X server, een mechanisme waarbij pixelgegevens voor verscholen vensterdelen onthouden worden door de X server en zo te voorkomen dat er telkens opnieuw getekend moet worden.

[bewerken] Troubleshooting

[bewerken] Nvidia + Xorg

glxgears (and other applications that use GLX) won't run

Try adding the following to your device section (again, the second device section with the clock lines and driver selection):

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):

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

[bewerken] ati-drivers + 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.14.13-r1), enabling Composite extension disables direct rendering (ie hardware OpenGL support)

[bewerken] Mozilla (Firefox) crash Issue with Flash

If your mozilla/firefox crashes whenever you visit some sites with flash and you enabled the Composite module in xorg.conf, the workaround is:

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 inserting it to a file under /etc/env.d (maybe a new file is better for you)


File: /usr/bin/firefox
 export MOZILLA_LAUNCHER=firefox-bin
 export XLIB_SKIP_ARGB_VISUALS=1
 exec /usr/libexec/mozilla-launcher
 

[bewerken] 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://grebowiec.net

[bewerken] mplayer problem

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

mplayer -vo x11 my_video

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 my_video

For me only the following option works:

mplayer -vo gl2 my_video

But the 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.

[bewerken] 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 and look for the line :

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

ebuild /var/portage/x11-wm/metacity-x-x-x digest

Otherwise, it will complain about the file size

[bewerken] xcompmgr errors when setting root background

This seems to be an error with xsetbg. Try emerging feh and using fbsetbg to set your background (which will then use feh).

[bewerken] 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.

[bewerken] 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.

[bewerken] What's it look like?

Afkomstig van de Nederlandstalige Gentoo Wiki, het vrije Gentoo handboek. "http://nl.gentoo-wiki.com/TIP_Xorg_X11_and_Transparency"
Persoonlijke instellingen