On entends souvent parler de compiz, souvent des commentaires enthousiastes par rapport aux effets graphiques apportés. Souvent aussi compiz est dénigré et le qualifiant de "gadget" inutile ou pire d'effet b***g b***g (je m'auto censure, je ne peux pas blairer cette expression).
Malheureusement on parle peu du fait que compiz est un excellent Window Manager, le meilleur que j'ai jamais rencontré pour être honnête (mais je n'ai pas essayé KDE 4).

Je vais présenter dans ce billet ma façon d'utiliser compiz avec les avantages que cela apporte

Pré-requis

Les opérations présentées ici nécessite l'outil de configuration Compiz configuration settings manager, abrégé ccsm. Il est disponible dans les dépôts logiciels de votre distribution favorite sous le nom compizconfig-settings-manager. Après installation, un lanceur est crée dans le menu Préférences. Pensez aussi a installer les plugins additionnels de compiz.

Cachez moi ces effets superflus

La première chose à faire, c'est de désactiver les options qui ont rendu compiz célèbre (et qui ont aussi participé a sa mauvaise réputation), j'ai nommé le "Cube du Bureau" et "Déformer les fenêtres" (les fenêtres molles ou élastiques). La majorités des plugins dans la section Effets ont eux aussi peu d'intérêt et je ne conserve que "Animations", "Décoration de la fenêtre" et "Types de fenêtres a animer". Je rappelle que le but de ce billet est d'avoir un environnement de travail efficace et pas une démo technologique.

Meilleur que le cube: le plan

A la place du cube, je choisi le bureau sur un plan et ceci pour plusieurs raisons. La première est que rien ne différencie une face du cube d'une autre, il est donc plus difficile de retrouver ses fenêtres. Sur un plan (la méthode utilisée par les bureaux virtuels ces 20 dernières années), on peut se rappeler que telle fenêtre est en haut a gauche, une autre fenêtre en bas au milieutres.. L'autre raison de ne pas utiliser le cube est que dès qu'on dépasse les 4 faces, on est encore plus perdu, et tous les bureaux sont mis des uns à coté des autres sur une seule ligne. Pour mon bureau en plan, j'ai adopté une surface de 3x3 soit 9 bureaux. Pour mon utilisation, c'est le meilleur compromis que j'ai trouvé. Je donnerais plus de détails sur le bureau en plan dans la partie où j'aborderai le positionnement des fenêtres. La surface du bureau se défini dans les "Options générales".
Deux fonctionnalités que je juge essentielles sont la fonction "Éxposé" et l'option "Bureau sur un tore" des préférences de "Bureau sur un plan". La fonction Éxposé permet d'avoir un aperçu de tous les bureaux et de pouvoir déplacer les fenêtres entre eux. C'est l'équivalent d'un widget "pager" qui se retrouve sur de nombreux bureaux Linux. Grâce a la fonction Éxposé, je ne dispose pas de pager mais j'ai l'équivalent en plein écran avec un simple raccourci clavier (Super+E par défaut). Le bureau sur un tore permet de connecter le bord droit du dernier bureau au bord gauche du premier et le bord du bas des bureaux inférieurs aux bords haut des bureaux supérieurs, ce qui est très pratique pour déplacer ses fenêtres.
Puisque je parle de déplacer les fenêtres et de bureau en plan, je rappelle des raccourcis présents sur la majorité des Window Manager : Ctrl+Alt+Flèches pour changer de bureau, Ctrl+Alt+Shift+Flèches pour déplacer la fenêtre active.

Gestion des fenêtres

Ou window management en anglais, ce qui est quand même un peu le but d'un Window Manager. Dans cette section de ccsm, il existe des tonnes d'option, certaines sont complexes a apprivoiser, d'autres sont indispensables. Dans le plugin "Actions supplémentaires du Gestionnaire de fenêtre" il est possible d'activer un raccourci pour mettre n'importe quelle fenêtre en plein écran avec la combinaison Ctrl+F11, du vrai plein écran, sans barre des tâches.
Le plugin Grille est très intéressant puisqu'il permet de redimensionner et positionner les fenêtres avec la combinaison Ctrl+Alt et les touches du pavé numérique. Par exemple Ctrl+Alt+1 va positionner la fenêtre active dans le coin en bas a gauche de l'écran. Si on appuye de nouveau sur ce raccourci, la fenêtre occupera 2/3 de l'écran au lieu de la moitié. Une autre pression et la fenêtre occupera 1/3 de l'écran. Le plugin "Redimensionner la fenêtre" reproduit une fonction déjà présente sur la majorité des Window Manager : pouvoir déplacer une fenêtre avec Alt+Bouton du milieu. D'une manière similaire, Déplacer la fenêtre permet de déplacer avec Alt+Bouton gauche. Tellement utile qu'on oublie vite qu'on a utilisé dans le passé la barre de titres pour déplacer et une zone minuscule de quelques pixels de large sur les coté pour redimensionner.
Les règles de fenêtres (ou "Window Rules" chez moi, un oubli de traduction) , sont un peu complexes a maitriser mais apportent beaucoup. Ici, on va aborder pour la première fois la notion de titre de fenètre et de classe de fenêtre. Dans le jargon de Xorg on appelle ces propriétés WM_NAME et WM_CLASS et ce sont des informations que l'on peut connaitre avec la commande xprop. Ces règles permettent de fixer certaines conditions pour des classes de fenêtres que vous aurez définies. Si vous souhaitez par exemple faire apparaitre Pidgin sur tous les bureaux, vous rajouterez class=Pidgin sur la ligne "Afficher sur tous les bureaux". Cette fonction étant déjà présente avec un clic droit sur la barre de titres cela ne présente qu'un intérêt faible, mais d'autres possibilités sont offertes comme forcer un programme en plein écran. De la même manière on pourra forcer la taille de certaines fenêtres dans l'onglet "Règles de tailles". Le plugin "Placer des fenêtres" utilise le même principe et permet d'ouvrir un programme sur un bureau que vous aurez défini. Ainsi je sais que mon terminal est a gauche au centre, firefox sur le bureau central, amarok à droite au centre, Netbeans en haut au milieu.

Compiz et le jeu vidéo

Cette partie du billet pourra surprendre certains car on a souvent transmis l'idée que pour jouer, il valait mieux couper Compiz. J'ai constaté dans les benchmarks publiés sur ce blog il y a plus d'un an que cette manipulation n'apporte (avec une carte Nvidia) qu'un gain négligeable. Ma carte est loin d'être du haut de gamme (9600 GT) et je ne me prive pas de jouer a Left4dead ou Borderlands avec Compiz activé. Peut être que la différence entre Compiz/Metacity est plus visible sur ATI / intel, je vous laisse répondre a cette question dans les commentaires.
Toujours est il que compiz apporte beaucoup pour les jeux. Il faut reconnaitre que la plupart des jeux sur Linux ont une gestion pitoyable du plein écran : Toute interaction avec le bureau est bloquée, impossibilité de changer le volume sonore, impossibilité de switcher vers un autre programme avec Alt+Tab, deuxième écran noir, bref une fois en plein écran, on est bloqué et le seul recours pour avoir la main sur sa machine sont les terminaux TTY (avec une possibilité de tout faire planter). Heureusement compiz est là, et si le jeu en question supporte le mode fenêtré alors on a toutes les chances de bénéficier d'une meilleure expérience. Jouer en mode fenêtré est surement la pire chose qui soit, et j'avoue préférer ne pas jouer plutôt que jouer dans une fenêtre. Cependant avec compiz il est simple avec les méthodes expliquées ci dessus de faire des fenêtres plein-écran, ce qui offre le meilleur des deux mondes. Cette méthode ne marchera pas avec tous les jeux, par exemple OpenArena qui insiste pour vous emprisonner dans le jeu, mais dans la grande majorité des cas c'est la fin de "Je peux pas répondre sur Pidgin, je suis en train de jouer".

Résultat

Pour finir voici un screenshot pour illustrer ce que donne cette configuration de Compiz CompizExpose
On y voit Evince, Netbeans, Thunderbird, Terminator, Firefox, Amarok 1.4, Left4Dead sur Cedega, VirtualBox, Pidgin et une application surprise ;)