# Compiz

Compiz est un gestionnaire de fenêtres composite libre qui a révolutionné l'environnement de bureau du serveur X, et notamment sur les distributions Linux. Compiz permet des effets graphiques avancés comme la transparence, des effets 3D et d'ombres. Compiz compose l’affichage en exploitant l'accélération matérielle disponible sur la carte graphique.
Dès la publication de son code source en février 2006, Compiz est très vite adopté. Mais peu de temps après, la communauté de développeurs se sépare : le projet Beryl commence en septembre de la même année. En mars 2007, la réunification du projet se fait sous le nom de Compiz Fusion, pour finalement revenir à son nom initial en février 2009.

## Description

Compiz fournit des effets visuels permettant d'améliorer la convivialité des environnements graphiques. Ce projet vise par conséquent à améliorer la simplicité d'utilisation de l'outil informatique.

### Gestionnaire et compositeur

Il combine un gestionnaire de fenêtres existant (par exemple Metacity) et un compositeur d'images :
* Le gestionnaire de fenêtres permet la manipulation de toutes les applications et objets qui sont affichés à l’écran ;
* Le compositeur d'images assemble des fenêtres et autres graphiques pour former une image composée affichée à l’écran.

### Accélération graphique

La plupart des gestionnaires de fenêtres et des compositeurs d'images n'exploitent pas ou peu l'accélération matérielle, ce qui représente une perte au niveau de la répartition des calculs : le processeur central (CPU) de l'ordinateur s'occupe de tâches graphiques alors que la carte graphique qui a un processeur dédié et optimisé pour les graphismes reste peu utilisée.
Compiz permet de tirer profit de la carte graphique, déchargeant ainsi le processeur central pour dessiner l'interface, sans ralentissement même lors de l'utilisation d'une machine de faible puissance. Le processeur graphique, qui est alors davantage sollicité, permet d'obtenir des effets visuels impressionnants tout en libérant le CPU de cette tâche, qui peut donc se consacrer aux fonctions qui lui sont attribuées plus rapidement.
Pour accéder aux accélérations matérielles de la carte graphique, Compiz se base sur la bibliothèque OpenGL en passant par le serveur graphique X. Deux serveurs X sont compatibles :
* Xgl, ce serveur X a été amélioré en secret par Novell qui l'a dévoilé en même temps que Compiz, mais il n'est plus utilisé aujourd'hui ;
* AIGLX, ce serveur X a été adapté à Compiz par le projet Fedora, il contourne la bibliothèque OpenGL pour accéder directement au pilote de la carte graphique sur certaines fonctionnalités, ce qui le rend plus rapide.

### Environnements de bureau

Des plugins permettent de profiter des effets graphiques de Compiz sur la plupart des environnements de bureau : GNOME, KDE, Xfce, LXDE, Unity, Enlightenment (Ecomorph)...

### Quelques effets graphiques

* réduction avec l'effet « flammes ».
* réduction avec l'effet « lampe magique ».
* bureau sur un cube.
* effet fenêtre molle.

### Décorateurs de fenêtres

Contrairement aux gestionnaires de fenêtres traditionnels, un processus séparé gère la décoration des fenêtres. Trois décorateur de fenêtres sont disponibles, nommés selon des variétés de béryl (minerai en Anglais) :
* Emerald, le décorateur de fenêtre utilisé par défaut, un fork de cgwd, qui dispose de son propre format (*.emerald) et supporte des effets, comme la transparence, il est le seul à être considéré comme stable ;
* Heliodor, un fork de gnome-window-decorator, développé par Compiz, qui supporte les thèmes de Metacity ;
* Aquamarine supporte les thèmes de KWin.

### Commandes

Quelques raccourcis clavier :
* Ctrl + Alt + Flèche gauche/droite/haut/bas = Bascule le cube ;
* Ctrl + Alt + Clic gauche enfoncé + Déplacement de la souris = Basculer le cube de façon 3D (les faces du cube sont en fait les différents bureaux virtuels) ;
* Alt + molette de la souris (sur une fenêtre active) = augmente ou diminue la transparence de celle-ci ;
* Ctrl + molette de la souris (sur une fenêtre active) = augmente ou diminue la saturation des couleurs de celle-ci ;
* Shift + molette de la souris (sur une fenêtre active) = augmente ou diminue la luminosité de celle-ci.
Note : des raccourcis clavier étant aussi gérés à plusieurs niveaux par des couches logicielles qui ne s'en informent pas entre elles, certaines de ces combinaisons de touches peuvent ne pas fonctionner dans certains contextes

## Historique
### Avant

Depuis 2002, Mac OS X utilise le principe de l'accélération matérielle pour la composition de l'affichage grâce à la technologie Quartz Extreme. Cette technologie a été ajoutée au moteur graphique Quartz Compositor dans Mac OS X v10.2.
Microsoft Windows n'utilisait pas encore ce principe avant la sortie de Compiz (mais à peu près 10 mois après, le 30 novembre 2006 avec Windows Vista).

### Enthousiasme de la communauté

Le 2 janvier 2006, Novell indique travailler en secret sur un nouveau gestionnaire de fenêtre révolutionnaire : Compiz basé sur Xgl. Puis le 1er février 2006, au salon Solutions Linux, Novell termine sa présentation de sa distribution Novell Linux Desktop sur Compiz qui époustoufle littéralement les spectateurs. Le 8 février 2006, Novell récidive au X Developers Conference (XDevConf) et le publie ainsi que ses adaptations de Xgl en tant que logiciel libre (licence GNU GPL).
Les effets graphiques présentés sont alors en avance par rapport aux deux principaux systèmes d'exploitation de bureau de l'époque : Mac OS X « Tiger » et Windows XP$^,$. Et donc, ces démonstrations remportent un vif enthousiasme parmi la communauté geeks linux qui adapte/installe Compiz sur différentes distributions. C'est ainsi que le 6 mars 2006, Kristian Høgsberg porte Compiz sur AIGLX, un serveur graphique concurrent à Xgl.
Au début, Compiz ne fonctionnait pleinement qu'avec quelques pilotes de carte graphique comme le pilote propriétaire de Nvidia. Et en octobre 2007, le pilote propriétaire ATI Technologies est finalement supporté avec AIGLX$^,$.

### Le fork Beryl

Assez rapidement, deux stratégies dans le développement de Compiz s'opposent. D'une part, l'équipe initiale recherche la stabilité. D'autre part, la communauté de développeurs bénévoles souhaitent intégrer de nouvelles fonctionnalités. Pendant des mois le mainteneur principal de Compiz refuse d'intégrer la majorité des contributions de Quinn Storm, un contributeur très actif. Les discussions entre les deux mettent en lumière des dissensions sur les priorités du développement.
Finalement, le 19 septembre 2006, Quinn Storm et de nombreux autres contributeurs comme iXce dupliquent le code source de Compiz pour créer le projet Beryl sur le site www.beryl-project.org.
Beryl a choisi de préférer des solutions rapides aux problèmes des utilisateurs (tels que celui du multi écran, des thèmes de fenêtre) ou encore au niveau de l'intégration avec les différents environnements de bureau, alors que Compiz a une approche de validation plus progressive de ses modifications, moins réactive mais plus stable.
Beryl est développé par une communauté de développeurs bénévoles, réunis autour de Quinn Storm, qui préfère toutefois se décrire comme un « agrégateur » d'idées et d'opinions.
Le projet vivra six mois avant de rejoindre à nouveau le projet Compiz. Mais, la communauté très enthousiaste est prolifique. De nombreuses effets et fonctionnalités sont introduites$^,$ :
* flammes (burn) lors de la fermeture d'application ;
* cube transparent ;
* différents effets pour la minimisation de fenêtre ;
* regroupement des fenêtres en onglet (group and tab windows) ;
* vagues d'eau en arrière-plan autour d'une fenêtre ;
* neige qui tombe en arrière-plan…
La dernière version de Beryl est la 0.2.1 sortie le 18 mars 2007. Il n'y a plus d'autre version sous le nom Beryl puisque le projet s'est réunifié avec Compiz.

### La réconciliation : Compiz Fusion

En mars 2007, les deux projets Compiz et Beryl se réunifient$^,$. Cet événement donne lieu à son nouveau nom : Compiz Fusion.
Compiz Fusion est donc la réunification de deux projets qui avaient pris des chemins différents. Les développeurs travaillent de concert et le projet est organisé en deux couches :
* Compiz Core, la base ;
* Compiz Extra, les plugins, les utilitaires de configuration, les scripts et les autres composants.
Depuis le 16 août 2007, Compiz Fusion remplace Metacity comme gestionnaire de fenêtres par défaut d'Ubuntu (version 7.10) et est intégré à Unity.
Par contre, KDE 4.2 (janvier 2009) et GNOME Shell (avril 2011), ces deux gros environnements de bureau n'utilisent plus Compiz par défaut.

### Autres branches et réunification

En 2008, deux nouvelles branches sont créés :
* Compiz++ ;
* Nomad.
Le 2 février 2009, Compiz-Fusion et les autres projets Compiz (Compiz-Core, Compiz++, Nomad) fusionnent.
Tous les projets utilisent alors le même numéro de version.

### Synchronisation sur les sorties de Ubuntu

Canonical a recruté des développeurs de Compiz. La roadmap de Compiz est synchronisée sur les nouvelles sorties de Ubuntu. Pour une meilleure interaction avec Ubuntu, les outils de développements de Compiz ont été migrés sur Launchpad.