TIP Xorg X11 et transparence

Un article de Gentoo Linux Wiki.

Cet article fait partie des Trucs et Astuces.

Terminaux / Shells CD Live X Portage Système Systèmes de fichier Autres


Sommaire

[modifier] Introduction

Ce guide va vous montrer comment obtenir X.org et le faire marcher sous Linux avec l'option X Composite (l'installation est présentée sous Gentoo, mais cela devrait marcher tout aussi bien sur d'autres distributions).

[modifier] Configuration

[modifier] Première étape

Obtenir la version d'X.org la plus récente.
Nous ne pouvons rien faire si nous n'avons pas X.org. Pour l'obtenir sur Gentoo, c'est très simple :

Code : Installation de xorg
echo "x11-base/xorg-x11 ~x86" >> /etc/portage/package.keywords
emerge xorg-x11

Une fois la compilation d'X.org effectuée, vous pourrez commencer à l'utiliser. Si vous utilisiez déjà X.org alors le fichier de configuration /etc/X11/xorg.conf sera utilisé. Si par contre, vous aviez XFree86 d'installé alors il chargera automatiquement le fichier /etc/X11/XF86Config mais il est recommandé de le renommer xorg.conf.

Pour lancer X.org, il suffit de lancer X de la même manière que d'habitude :

Code : Lancement de X
startx

Maintenant, vous avez déjà obtenu les avantages de ce nouveau X.org sans même changer le fichier de configuration. En effet, vous utilisez XDamage qui devrait afficher votre écran de manière plus efficace qu'avant. Vous allez bien sûr aussi rencontrer certaines corrections de bugs. Évidemment, ceci est intéressant, mais nous en voulons PLUS !
Allons-y.

[modifier] Deuxième étape

Mettre en place l'extension X Composite
Cette étape est très simple (et ceci pour toutes les distributions linux). Premièrement, ouvrez votre fichier xorg.conf :

Code : édition du fichier xorg.conf
nano /etc/X11/xorg.conf

(note: remplacer nano par votre éditeur favori)
Ajoutez (pas modifier) simplement les lignes suivantes à ce fichier (au début ou à la fin du fichier, cela n'a aucune importance).

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

À présent, la prochaine fois que vous redémarrerez X.org l'extension X Composite sera activée. Cette extension permet d'écrire tous les changements dans l'affichage de l'écran dans un buffer extérieur, puis le renvoie au framebuffer Cela permet certains effets tels que la vraie transparence et des ombres (ce que nous allons voir juste après).
Afin de vérifier que cette extension est bien chargée, regardez simplement si la ligne suivante apparaît dans /var/log/Xorg.0.log.

(II) Initializing built-in extension COMPOSITE

[modifier] Troisième étape

Certains gestionnaires de fenètres comme fwmn et e17 utilisent leur propre gestionaire pour l'extension composite, vous ne pouvez pas utiliser xcompmgr avec eux.
Voyez directement leurs documentations.

[modifier] Activer les ombres et la vraie transparence

Il est temps maintenant de se faire plaisir !

Nous utiliserons deux outils indépendants de votre gestionnaire de fenêtres.

  • xcompmgr pour l'extensions composite
  • transset pour activer nos effets
Code : Installation de xcompmgr
echo "x11-misc/xcompmgr ~x86" >> /etc/portage/package.keywords
emerge xcompmgr

(note : Nous devons ajouter x11-misc/xcompmgr au fichier package.keywords car c'est une version "beta" considérée comme instable. Mais ne vous inquiétez pas, vous pouvez arrêter xcompmgr quand vous le souhaitez sans abimer quoique ce soit.)

Après avoir obtenu xcompmgr, nous avons besoin de transset.

Code : Installation de transset
echo "x11-misc/transset ~x86" >> /etc/portage/package.keywords
 emerge transset

Nous avons maintenant tout ce dont nous avons besoin pour activer les ombres et la vraie transparence. Commençons par lancer xcompmgr. À partir d'une console à l'intérieur de X.org, exécutez ceci :

Code : Exécution de xcompmgr
xcompmgr -c &

Ceci active des ombres générées par xcompmgr. Vous devriez maintenant voir des ombres sous toutes vos fenêtres.
Si ça ne fonctionne pas, peut-être n'avez vous pas redémarré X ?
Astuce : il est possible que vous ayez des problèmes de rafraichissement, par exemple si xcompmgr s'exécute plus vite que votre gestionnaire de fenêtre (surtout avec des pc très puissants et des gestionnaire de fenêtre très léger). Dans ce cas, affectez toujours à la commande xcompmgr, une priorité plus faible.

Code : Exécution de xcompmgr avec une valeur nice de +10
nice xcompmgr -c &

Nous voulons maintenant voir à travers nos fenêtres. Exécutez ceci dans la même console :

Code : Exécution de transset
transset

Votre curseur a dû changer, cliquez simplement sur la fenêtre que vous souhaitez rendre transparente. Vous pouvez aussi définir une certaine valeur définissant l'opacité de la fenêtre. Essayez :

Code : Exemple d'utilisation de transset
transset .2

(note : 0 = transparence totale, 1 = pas de transparence)

Afin d'avoir une fenêtre complètement opaque, exécuter de nouveau transset et cliquer sur la fenêtre en question.

À présent, vous devez obtenir quelque chose comme ceci :

Image : Xorg+Transparence


Afin de tout désactiver, il suffit simplement de taper dans la console :

Code : Désactivation des effets visuels
killall xcompmgr

Ceci éteindra xcompmgr et désactivera les ombres ainsi que les transparences définies.

Ceci est seulement un aperçu de ce que peu réaliser X.org 6.8. Une fois que les gestionnaires de fenêtres et les applications commenceront à utiliser ces options, nous n'auront plus besoin de commande telle que transset pour obtenir ces options. Nous verrons aussi des applications qui utilise la tranparence intelligemment en rendant par exemple qu'une seule partie de l'application transparente.

[modifier] Executer xcompmgr a chaque session

Rajouter xcompmgr dans votre fichier ~/.xsession

xcompmgr &
xcompmgr -c &
xcompmgr -c -r 10  &
xcompmgr -c -r 10 -f -F &

[modifier] Utilisateur des drivers nVidia propriétaires :

Si vous utilisez une carte graphique nVidia et les drivers nVidia, il est intéressant d'ajouter la ligne suivante dans la section Device de xorg.conf, Vous obtiendrez une accélération notable lorsque vous utiliserez l'extension X Composite.

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

Pour les cartes Nvidia qui supporte l'Option Backingstore, rajouter la ligne suivante dans la section Screen.

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

Cette ligne active le support du backing store pour le serveur X, un mécanisme grâce auquel chaque pixel est gardé en mémoire par le serveur, ce qui allège les envois effectués au clients X lorsque les données doivent être réaffichées.


Pour utilser l'accélération 3D avec l'extension X Composite, il vous faudra aussi rajouter la ligne suivante dans la section Device.

Fichier : /etc/X11/xorg.conf

Option "AllowGLXWithComposite" "True"

[modifier] Utilisateur des drivers ATI propriétaires :

Si vous utilisez une carte graphique ATI et les drivers ATI, il est intéressant d'ajouter la ligne suivante dans la section Screen de xorg.conf :

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

Cette ligne active le support du backing store pour le serveur X, un mécanisme grâce auquel chaque pixel est gardé en mémoire par le serveur, ce qui allège les envois effectués au clients X lorsque les données doivent être réaffichées.

[modifier] Problèmes et solutions

[modifier] Xcompmgr refuse de se lancer

Certains gestionaires de fenetres utilisent leur propre service de gestion de l'extension composite (fwmn et xfce par exemple). Voyez directement leur configuration pour activer la tranparence.

Another composite manager is already running

Si vous lancez deux xcompmgr vous obtiendrer aussi ce message d'erreur (il ne peut exister qu'un seul instance de xcompmgr par serveur X et par display).

[modifier] Problèmes avec mplayer

Si vous avez des problèmes avec la vidéo en utilisant mplayer, où si vous souhaiter rendre celle-ci transparente (ou encore, si vous n'arrivez pas à voir la fenêtre à travers une autre fenêtre transparente), essayez ceci :

Code : Résolution de problèmes avec mplayer
mplayer -vo x11 ma_vidéo

[modifier] Problèmes avec OpenGL/GLX

Descriptions : Blender, Quake3, doom3, stellarium et meme glxinfo fait planter ma machine.
Solution : killall xcompmgr

[modifier] Commentaires

Attention : cette commande peut augmenter fortement la charge du CPU par rapport à un lancement sans l'option. (par exemple, 19% chez moi devient 44%).


source : TIP Xorg X11 and Transparency