# Compiz

Compiz es uno de los primeros gestores de ventana de composición para el sistema de ventanas X Window que es capaz de aprovechar la aceleración OpenGL.
También presenta algunas de las características que tienen otros competidores, como Exposé en Mac OS X de Apple. Compiz está construido sobre la extensión de composición de X y la extensión GLX_EXT_texture_from_pixmap de OpenGL.
Actualmente se está planeando dividir la parte del código responsable por la composición y la gestión de las ventanas, pudiendo así usar Compiz en hardware sin soporte de algunas extensiones OpenGL como la anteriormente nombrada, usando RandR como arquitectura de aceleración.

## Historia

Fue presentado por Novell en enero de 2006 junto con Xgl. La integración le permite realizar efectos de composición en el manejo de ventanas, como un efecto de minimización y una vista en forma de cubo del espacio de trabajo. Compiz forma parte del estándar ICCCM y puede ser un sustituto de los gestores por defecto de GNOME2.xx (Metacity) y KDE (Kwin).
Inicialmente Compiz sólo funcionaba en tarjetas gráficas soportados por Xgl. Pero el 22 de mayo de 2006, Red Hat decidió añadir algunas modificaciones al servidor gráfico X.Org Server para poder prescindir de Xgl, ya que este último dependía de X.Org Server, añadía otra capa de complejidad a la pila gráfica y restringía las aplicaciones OpenGL a que éstas sean aceleradas por software, mas no por hardware. Con AIGLX, las tarjetas Intel también pueden ser utilizadas, incluyendo casi todos los modelos de ATi y Nvidia ya sea usando controladores libres o propietarios. Actualmente Xgl esta en desuso.

## Características
### Plugins

Lista de plugins incluidos dentro de Compiz:
* Annotate: permite dibujar en la pantalla, ideal para presentaciones.
* Blur Windows: desenfoca los bordes de las ventanas.
* Clone Output: clona una pantalla a escala reducida.
* Desktop Cube: cada escritorio virtual se convierte en un lado del cubo.
* Window Decoration: un decorador para GNOME o KDE puede dibujar bordes de ventanas.
* Fading Windows: desvanecimiento (fade in y fade out) a las ventanas.
* Userspace File System:
* Minimize Effect: minimización y maximización con un efecto animado.
* Move Window: movimiento de la ventana.
* Place Windows: colocación de nuevas ventanas.
* Resize Window: cambio del tamaño de ventanas.
* Rotate Cube: el escritorio en cubo puede ser rotado.
* Scale: una descripción de todas la ventanas abiertas (similar al de Exposé en Mac OS X).
* Screenshot: captura la pantalla
* Application Switcher: la ventana activa puede ser cambiada mediante Alt-Tab.
* Water Effect: efecto de ondulación con el ratón y efecto de lluvia.
* Wobbly Windows: ondulación de las ventanas mientras estas se mueven.
* Zoom Desktop: magnifica una parte de la pantalla.
* Dbus
* Video Playback
* Png
* Regex Matching
* Svg
* GLib
* Inotify
Plugins de la comunidad (Compiz Fusion):
| Plugins Principales | Plugins Extra | Plugins no-soportados | Experimental/3.ª-Parte Plugins |
| Animation | 3D Windows | Fake ARGB | Compiz-Scheme |
| Color filter | ADD Helper | Snow | Sound |
| Expo | Benchmark | Mouse Switch | Visual Event |
| Enhanced Zoom Desktop | Crash handler | Tile | Cube Atlantis |
| JPEG | Cube Addon | Screensaver | Anaglyph |
| Negative | Extra WM Actions | Freewins | Wiimote + Wiitrack |
| Opacify | Fade to Desktop | Addons] | Reflection |
| Snapping Windows | Scale Window Title Filter | | |
| Text | Show desktop | | |
| Window Previews | Splash | | |
| Viewport Switcher | Trailfocus Archivado el 27 de enero de 2010 en Wayback Machine. | | |
| Desktop Wall Archivado el 19 de enero de 2010 en Wayback Machine. | Widget Layer Archivado el 23 de diciembre de 2010 en Wayback Machine. | | |
| Window Rules Archivado el 5 de diciembre de 2009 en Wayback Machine. | Wallpaper Archivado el 17 de febrero de 2010 en Wayback Machine. | | |
| Workarounds Archivado el 5 de febrero de 2010 en Wayback Machine. | | | |

### Parches

Junto con los plugins, la comunidad Compiz desarrolla a menudo parches para plugins existentes cuando la característica no es garantizada por un plugin propio, o cuando esta utiliza muchas porciones de uno existente. Sin embargo, los parches solo pueden ser aplicados a Compiz cuando este ha sido compilado sobre el usuario del sistema, a menos que el desarrollador también libere las bibliotecas .so y las modificaciones para los ajustes de CCSM.

## Forks y proyectos relacionados

Desde febrero de 2009 se intenta llevar a cabo un proceso de reintegración de todos los forks y regrupación de los desarrolladores repartidos entre ellos.
La idea es simple, no confundir al usuario con muchos nombres y por tanto centralizar todos los esfuerzos bajo el nombre de Compiz.
Sin embargo, no es habitual que un proyecto con tan poco tiempo de vida haya tenido tantas divisiones internas en el equipo de desarrollo. A continuación se describen algunos de los forks más conocidos.

### Beryl

En 2006 una gran comunidad de desarrolladores crearon una rama de Compiz, a la que llamaron Quinnstorm, que incluía un conjunto completo de plugins, modificaciones, y aplicaciones.
Beryl fue el nombre de un proyecto nuevo para la rama Quinnstorm de Compiz, anunciado el 19 de septiembre de 2006, en el foro de Compiz.org, después de que Quinnstorm y el equipo de desarrollo decidieron que la bifurcación se había alejado demasiado de Compiz-vanilla, la rama de Compiz iniciada por Novell.
Contribuyó la aparición de este fork el hecho de que el equipo de Novell XGL/Compiz, y en especial David Reveman, rechazara la proposición para combinar los cambios de Quinnstorm con Compiz-vanilla, y por tanto se decidió hacer una verdadera diferenciación. El 29 de septiembre de 2006, la versión 0.1.0 fue liberada en el repositorio original de compiz-quinnstorm y en diversas réplicas.
Las principales diferencias entre Compiz y Beryl fueron:
* El decorador de ventanas, formalmente conocido como cgwd, se cambió por emerald ("esmeralda" en español). Aunque los temas de cgwd se podían portar a emerald cambiando solo la extensión del archivo, de .cgwd a .emerald.
* Se usaba un archivo plano como backend en vez de gconf, lo que daba lugar a tener casi ninguna dependencia de GNOME.
* El número de plugins extras y características mejoradas en otros plugins ya existentes fue más que notable.
* Se creó un gestor de temas propio llamado emerald-themer.
El 24 de marzo de 2007 se anuncia por parte de los desarrolladores de Beryl su reunificación con Compiz, dando origen a un nuevo proyecto, Compiz Fusion.
Beryl será incluido complementando a los plugins de Compiz, las dos comunidades serán reunificadas, sin embargo, los foros por separado estarán disponibles hasta que la unificación sea completa.

### Compiz++

En diciembre del 2008 se anunció en la lista de correo de Compiz un nuevo fork llamado Compiz++. Algunas de las principales diferencias entre Compiz y Compiz++ fueron:
* Portar Compiz del lenguaje de programación C a C++ ya que tal y como expresaron sus creadores en la lista de correo:
* Eliminar el soporte de multi-pantalla y multi-monitor por estar incompleto y, en el caso de la multi-pantalla, casi abandonado.
* Separar las capas OpenGL y de composición permitiendo el uso de este gestor de ventanas aun cuando nuestra tarjeta gráfica o sus controladores no soportasen estas tecnologías. Un ejemplo es el funcionamiento de KWin de KDE 4.
* Cambiar el sistema de desarrollo de autotools a CMake
Sin embargo, este fork sólo quedó en una propuesta, el 3 de febrero de 2009 se anunció en las listas de correo del proyecto la integración de las ideas de Compiz++ en Compiz 0.9.

### Compiz Fusion

Es importante aclarar que Compiz Fusion no es un fork de Compiz sino un proyecto relacionado con Compiz que resulta de la unión entre el paquete "Compiz Extras" de Compiz y los plugins del proyecto Beryl, que era independiente del núcleo del gestor de ventanas.
El propósito del proyecto es, usando como núcleo Compiz, transportar casi todas las características de Beryl a los plugins de Compiz.
En febrero de 2009 se decidió volver a fusionar Compiz Fusion en Compiz.

## Imágenes de algunos plugins de Compiz

* switcher-Plugin
* scale-Plugin
* cube- y rotate-Plugin
* opacity-Plugin
* firepaint-Plugin
* snow-Plugin, con hojas
* Window-Switcher-Plugin, Modo Cover
* Window-Switcher-Plugin, Modo Flip