Está en la página 1de 7

grfica La revolucin grfica en Linux

La revolucin grfica en Linux


Franco Catrin Leiva

El entorno grfico de Linux ha sufrido drsticos cambios en los ltimos 4 aos. Hoy en da vemos escritorios que giran, ventanas que se mueven como gelatina, aplicaciones que se minimizan como lmpara mgica, pero por mucho tiempo el entorno de aplicaciones de escritorio se mantuvo al margen del agresivo desarrollo de chips de vdeo cada vez ms potentes. Esto sucedi en parte porque el diseo original se hizo en base a hardware bastante sencillo y tambin porque no se saba de qu forma se podan aprovechar las funciones de aceleracin creadas para mejorar el rendimiento de videojuegos, y no de aplicaciones como un procesador de texto o un lector de correo electrnico. Este artculo intenta explicar cmo se produjo esta revolucin y cual es su estado actual.

l diseo de hardware grfico tradicional consiste en el uso de una gran matriz de pxeles, existen diversas formas de representar esta matriz en la memoria de vdeo siendo la ms comn aquella que distribuye los pxeles en forma lineal, esto significa que en la primera posicin de la matriz se encuentra el primer pxel, en la segunda posicin el segundo pxel y en la n-sima posicin el n-simo pxel. Esto se puede entender como un mapa de pxeles que se encuentran en memoria de vdeo, tambin se le conoce como pixmap. La cantidad de bits que se utilice para almacenar cada pxel determinar la cantidad de colores que se pueden utilizar. Por ejemplo si cada pxel est representado por un byte (8 bits), la cantidad mxima de colores a utilizar son 256 (2^8), hoy en da es normal que una tarjeta de vdeo pueda representar cada pxel por 3 bytes (24 bits) lo que eleva la cantidad mxima de colores a algo ms de 16 millones (2^24), la cantidad de bits por pxel es lo que se conoce como profundidad de color o bit depth. Otro aspecto de la imagen que genera el computador es la resolucin de la pantalla, que simplemente es la cantidad de pxeles que contiene. La resolucin depender de la memoria

disponible para almacenar el pixmap de todo el escritorio, por ejemplo una resolucin de 1024x768 requiere exactamente 768 kilobytes si se utilizan 256 colores (1 pxel = 1 byte) y el triple si se utilizan 16 millones de colores (1 pxel =3 bytes), un poco ms de 2 megabytes. Surge entonces la pregunta, de qu sirve tener una tarjeta de vdeo con 32 megabytes si requiero menos de 10 para representar casi cualquier modo de vdeo? Antes de responder veamos cmo el computador genera las imgenes.

linux@software.com.pl

Dibujado sobre el pixmap y aceleracin grfica

Dibujar un pxel en pantalla consiste simplemente en modificar los bytes que lo representan para darle un color, dibujar una lnea consiste en cambiar el color de un conjunto de pxeles contiguos y dibujar un rectngulo consiste en cambiar el color de un bloque de pxeles contiguos o lo que es lo mismo, dibujar muchas lneas. Otro tipo de dibujos, como pueden ser un icono o una letra, requieren operaciones ms complejas. Si consideramos que una CPU no puede hacer otra cosa mientras cambia el color de un pxel, entonces dibujar un rectngulo u otro elemento complejo se transforma en un cuello

20

Linux+ 1/2008

grfica La revolucin grfica en Linux


de botella por muy rpida que sea la CPU. Para mejorar esta situacin el primer paso que tomaron los fabricantes de hardware de vdeo fue quitarle este trabajo a la CPU, en vez de que la CPU dibuje pxel a pxel, sta le dice a la GPU (chip de vdeo o Graphical Processing Unit) la operacin que quiere realizar y la GPU hace el trabajo mientras la CPU se dedica a atender otras tareas. Cuando la GPU termina de dibujar, ya est lista para recibir nuevas indicaciones de la CPU. Entonces podemos distinguir entre dos formas de dibujar en pantalla: Por Software: es cuando la CPU se encarga de modificar los pxeles. Se dice que es por software porque toda la lgica de dibujar se debe escribir como cdigo ejecutable. Mientras ms pxeles se modifican, peor es el rendimiento del computador. (Ver Listado 1) Por Hardware: es cuando la GPU se encarga de modificar los pxeles. Las mejoras en rendimiento respecto al dibujo por software dependen de la cantidad de funciones de dibujo que pueda realizar la GPU (ver Listado 2). La aceleracin por hardware inicialmente poda realizar nada ms que las siguientes funciones: lneas rectngulos o bloques copia de bloques (bitblt) Aplicacin de sombreado para dar una sensacin de profundidad o fuente de luz (shading). Aplicacin de texturas para pintar los tringulos (texture mapping) (blending), mezcla de imgenes con transparencia (alpha blending) y si avanzamos al hardware actual existen incluso funciones de transformacin programables con cdigo que ejecuta la GPU directamente (vertex y pxel shaders). Mientras los videojuegos sacaban el mximo provecho de estas caractersticas de aceleracin, las aplicaciones de escritorio aun seguan utilizando la aceleracin 2D basada en rectngulos slidos. Podemos entonces dar respuesta a la pregunta que dejamos pendiente:

Con el tiempo este conjunto bsico de funciones comienza a crecer, por ejemplo se agrega el uso de filtros de texturas para que al cambiar su tamao no se distorsionen (bi / tri lineal filtering, mip-mapping), mezcla de imgenes

Listado 1. Pseudocdigo para dibujar un rectngulo slido por software (CPU)


static void solid (int x, int y, int w, int h) { int i, j; for (j=y; j<y+h; j++) for (i=x; i<x+w; i++) /* (El algoritmo no es eficiente porque fue escrito para que sea simple de entender) Independiente del algoritmo, la CPU se mantendr ocupada por todo el tiempo que dure este ciclo, un tiempo que es directamente proporcional al tamao del rectngulo (h*w pasos). Por ejemplo un rectngulo minsculo de 32*32 pxeles requiere 1024 pasos, mientras que la versin acelerada por hardware del Listado 2, siempre requiere 4 pasos. */ } pixbuf[j*screen->pitch + i * screen->depth] = fgColor;

Esto es ms que suficiente para una interfaz grfica basada en ventanas y otros elementos grficos rectangulares. Por ejemplo mover una ventana es bsicamente aplicar bitblt y luego redibujar el rea visible de las ventanas que antes no se vean y que quedan al descubierto al mover una ventana. El bitblt es una funcin soportada en la aceleracin por hardware, pero dibujar el rea descubierta es ms lento ya que incluye funciones aceleradas y otras sin aceleracin posible. Es por eso que al mover una ventana se puede apreciar como se redibujan las ventanas que estn bajo ella. A finales de la dcada de los noventa se comienzan a masificar los chips de vdeo con funciones de aceleracin orientadas al manejo de polgonos. Estos chips de vdeo estn orientados a acelerar funciones que se requieren para generar grficos en 3D, por ejemplo: videojuegos!! Para distinguir estos chips de sus ancestros ms bsicos surge el nombre de aceleracin 3D, mientras que la aceleracin clsica asume el nombre de aceleracin 2D. La aceleracin 3D incluye al menos las siguientes funciones: Dibujo de tringulos slidos (todo polgono es un conjunto de tringulos)

Listado 2. Pseudocdigo para dibujar un rectngulo slido acelerado por hardware (GPU) static void solid (int x, int y, int w, int h) {
/* esperar a que la GPU se desocupe de la tarea anterior (sincronizar) */ waitGPU(); /* asignar el color de fondo */ mmio->fgColor = fgColor; /* indicar a la GPU qu tarea necesitamos */ mmio->bltCntl = NEO_BC3_FIFO_EN | NEO_BC0_SRC_IS_FG; /* posicin inicial del rectngulo */ mmio->dstStart = y * screen->pitch + x * screen->depth; /* extensin del rectngulo, una vez escrito el valor la GPU comienza su tarea */ mmio->xyExt = (unsigned long)(h << 16) | (w & 0xffff); /* Al pasar este punto la CPU puede hacer otras tareas, mientras la GPU realiza el dibujo del rectngulo en paralelo. Independientemente del tamao del rectngulo este cdigo siempre se demorar lo mismo. Son slo 4 pasos . */ }

www.lpmagazine.org

21

grfica La revolucin grfica en Linux


la memoria adicional de vdeo se utiliza para almacenar texturas, y de esa forma no hay que transferir bytes desde la memoria de sistema a la memoria de vdeo, operacin en general lenta en la arquitectura PC. La memoria de vdeo visible es aquella que se utiliza para dibujar los pxeles en pantalla (on-screen), el resto de la memoria de vdeo disponible (off-screen) puede servir de memoria temporal para dibujar algo complejo antes de hacerlo visible, tcnica conocida como double buffering. que necesiten presentar una interfaz grfica deben hacerlo a travs de peticiones al X Server. El X Server no sabe exactamente cmo comunicarse con el hardware de vdeo para aprovechar las funciones de aceleracin, entonces los fabricantes de hardware deben proveer de un mdulo que sabe cmo transformar instrucciones del X Server en instrucciones de sus GPU, lo que conocemos como driver de vdeo. De esta forma las aplicaciones son totalmente independientes del hardware de vdeo y pueden aprovechar al mximo las funciones de aceleracin dependiendo de la calidad del driver de vdeo. Esta separacin en capas o responsabilidades es lo que se conoce como Capa de Abstraccin de Hardware o Hardware Abstraction Layer (HAL) y se utiliza con prcticamente todos los dispositivos de hardware.

Gestores de ventana o Window Managers

X Server: la base del sistema grfico

El sistema grfico de Linux se basa en una aplicacin exclusivamente dedicada a dibujar en pantalla, esta aplicacin se conoce como X Server. Las aplicaciones como Firefox, OpenOffice.org, y en general todas aquellas

Otro componente importante del sistema grfico es el gestor de ventanas o Window Manager. Su rol es permitir que las ventanas se muevan, cambien de tamao, reciban el foco o se ubiquen delante o detrs de otras ventanas. Cada aplicacin define el contenido de una ventana, pero no conoce qu es lo que sucede con las otras ventanas, de esta forma la aplicacin se preocupa solamente de sus propias ventanas, como si estuvieran solas en el escritorio. El Window Manager se encarga de dibujar el borde de la ventana que incluye botones para minimizar, maximizar y cerrar la ventana entre otras funciones. Sin un Window Manager se ven todas las ventanas sin borde y no se pueden mover, ni siquiera se puede cambiar el foco de una a otra ventana. El Window Manager es independiente del entorno de escritorio, aunque cada uno incluye su propio Window Manager como Metacity en GNOME o KWin en KDE. Existe una gran cantidad de Window Manager desde minimalistas como Blackbox hasta espectaculares como Enlightenment.

Composite Extension y Composite Managers

Figura 1. X Server, aplicaciones y drivers de vdeo


El desafo que surge es cmo lograr que las caractersticas avanzadas de aceleracin 3D se puedan aprovechar en el uso de aplicaciones de escritorio sin tener que reescribir las aplicaciones, manteniendo esta arquitectura basada en aplicaciones tradicionales, Window Manager, X Server y drivers de vdeo. El primer paso lo dio Keith Packard (Hewlett-Packard, 2003) cuando decide cambiar la forma en que el X Server muestra el contenido de las aplicaciones en pantalla, lo que se conoce como Composicin. En vez de que las aplicaciones se dibujen directamente en pantalla por qu no aprovechar la gran cantidad de memoria de vdeo para que cada ventana se dibuje en memoria de vdeo off-screen y que una aplicacin especial se encargue de copiarlas a memoria de vdeo onscreen? Veamos que se gana con este cambio: La imagen completa de la ventana siempre se maneja en memoria off-screen, cuando se mueve una ventana no es necesario redibujar el rea visible, simplemente se aplica bitblt desde off-screen a on-screen. Adis al lento redibujado. Cuando se copia la imagen de off-screen a on-screen se pueden aplicar transformaciones como zoom, invertir, etc.

Figura 2. Composicin tradicional y basada en off-screen

22

Linux+ 1/2008

grfica La revolucin grfica en Linux


Cuando se dibuja el conjunto de ventanas se pueden aplicar efectos de composicin como por ejemplo hacer que una ventana sea translcida y permita ver la ventana que est debajo, o proyectar sombras dando una sensacin de profundidad. Este cambio revolucionario tena sus trabas. En esos tiempos el X Server ms utilizado era Xfree86, pero sus desarrolladores no eran partidarios de hacer cambios radicales en l considerando que es una pieza crtica de cualquier sistema Linux. Keith Packard experimenta estos cambios en un mini X Server, originalmente conocido como FreeDesktop X Server (posteriormente Kdrive). Pero este X Server no contaba con drivers estables, ni que aprovecharan las capacidades del hardware como era Xfree86, de alguna forma Keith y los revolucionarios tenan que convencer a los conservadores, o bien trabajar en un nuevo X Server. Al final toman la opcin de crear un nuevo proyecto basado en el estado actual de Xfree86, lo que en jerga Open Source se conoce como un fork de proyecto. Este nuevo proyecto recibe el nombre de X.org X Server y a estas alturas ya conocemos el resultado: prcticamente todas las distribuciones de Linux reemplazaron Xfree86 por X.org X Server. La arquitectura del X Server permite hacer mejoras no intrusivas mediante extensiones o X Extensions, slo aquellas aplicaciones que requieran de una extensin se dan cuenta de su existencia, para el resto de las aplicaciones es el mismo X Server de siempre. Keith introduce la extensin Composite para cambiar el modelo de composicin y define como un Composite Manager la aplicacin encargada de gestionar el paso de las ventanas off-screen a su representacin on-screen. Sin un Composite Manager la extensin Composite no se ocupa y todo el sistema funciona de la forma tradicional. El primer Composite Manager fue creado por Keith como prueba de concepto e incluy efectos de composicin como sombras, transparencia y fade-in/fade-out, este Composite Manager se llama xcompmgr y se apoya en la aceleracin 2D. Programar un Composite Manager que aprovechara la aceleracin 3D requera ms cambios. El cambio principal se necesitaba para implementar una funcionalidad que permitiera transformar una imagen off-screen en una textura usable por el chip de vdeo. Una vez creada la textura se puede aprovechar toda la aceleracin 3D por hardware, por ejemplo: Aplicar alpha blending para mezclar imgenes: sombras y transparencias Usar el escalado natural de polgonos: zoom Usar la transformacin espacial de polgonos: rotacin y movimiento Subdividir una ventana en muchos polgonos: enrollar ventanas, moverlas como gelatina Aplicar transformaciones de opacidad, brillo o saturacin de colores exigencias de los videojuegos ms bsicos, se puede decir que los lmites estn en la imaginacin de los programadores del Composite Manager... y en el soporte de drivers. Nuevamente haban dos caminos. Uno era tomar X.org y modificarlo para soportar un Composite Manager que aprovechara la aceleracin 3D, el otro camino era crear un nuevo X Server con estos requerimientos como parte de su diseo, pero esta tarea era demasiado costosa a estas alturas.

Xgl, AIGLX y los primeros Composite Manager 3D

Para un chip de vdeo con aceleracin 3D estas operaciones son triviales y distan mucho de las

Un grupo de desarrolladores liderados por David Reveman (Novell, 2005) parte con la aventura de crear un nuevo X Server llamado Xgl. La apuesta de David fue que no era necesario crear un X-Server de principio a fin, sino que se poda aprovechar X.org y todos sus drivers como si fuera en s una capa de driver. En otras palabras el driver de vdeo para Xgl es simplemente una capa OpenGL que se puede implementar mediante drivers especficos o mediante el soporte OpenGL de X.org. A principios del ao 2006, David libera Xgl junto a su propio Composite Manager 3D llamado Compiz. Si bien es cierto que Compiz ha sido el Composite Manager 3D ms relevante, en esos tiempos ya haban trabajos previos en esta rea como Project Looking Glass de Hideya Kawahara (Sun Microsystems, 2003) y Luminocity de Owen Taylor (RedHat, 2005). La idea original de un Composite Manager era ser independiente del Window Manager. Mientras el Composite Manager se encargaba de aplicar transformaciones a las ventanas, el Window Manager mantendra la gestin de las tareas ms bsicas (mover, minimizar, etc), por ejemplo el primer Composite Manager (xcompmgr) se encargaba de las sombras y transparencias, pero necesitaba que se ejecutara adems un Window Manager como Metacity para las operaciones tradicionales. En la prctica esta separacin no era tan sencilla, ya que la lnea entre Composite Manager y Window Manager es muy difusa, se plante entonces fundir ambas aplicaciones en una sola, por ejemplo Luminocity es en realidad Metacity con funciones de Composite Mana-

Figura 3. Sombras de ventanas

Figura 4. Escritorios virtuales en un cubo

www.lpmagazine.org

23

grfica La revolucin grfica en Linux


ger. El desafo no era menor si consideramos que modificar un Window Manager que ya se encuentra estabilizado necesariamente lo va a desestabilizar, adems de que su diseo original no est pensado para tareas de composicin. Dave Reveman decidi plantear el diseo de una forma inversa, Compiz es un Composite Manager que adems incluye funciones de Window Manager, pero cmo disearlo para controlar su estabilidad? Uno de los factores crticos del xito de Compiz es su arquitectura en base a plugins, que reduce el esfuerzo necesario para aadir nuevas funcionalidades. Prcticamente todas las funcionalidades de Compiz son plugins, incluidas las funciones de Window Manager como mover o cambiar el tamao de una ventana. Compiz requera extender OpenGL para que permitiera crear una textura a partir de los pxeles de una ventana y David se encarga de crear la especificacin de la extensin de OpenGL GLX_EXT_texture_from_pixmap para este propsito. Esta extensin permite que se pueda realizar la copia de un pixmap 2D a una textura 3D de una forma independiente del hardware, y de esta forma aprovechar sus funciones de aceleracin. En teora cualquier implementacin de OpenGL que incluyera esta extensin permitira el correcto funcionamiento de Compiz, y Xgl fue el primer X Server en implementarla. El problema de crear un nuevo X Server es que se debe estabilizar mucha funcionalidad que ha costado desarrollar por aos en X.org. Por ejemplo, las primeras versiones de Xgl tenan problemas con el manejo del teclado, y era complejo de instalar y configurar para un usuario final, adems no todas las aplicaciones ni el hardware eran compatibles. Por eso los desarrolladores de RedHat y Nvidia crean que el camino a tomar era otro, en vez de reescribir el X Server era preferible tomar X.org y hacer todos los cambios necesarios para soportar un Composite Manager 3D, partiendo por implementar de alguna forma GLX_EXT_texture_from_pixmap. Nace el proyecto AIGLX. AIGLX es bsicamente un X.org modificado con drivers que implementan la extensin GLX_EXT_texture_from_pixmap. El caso de Nvidia es especial, ya que ellos proveen una arquitectura de aceleracin propia, y lograron que se pudiera implementar la extensin soportando Compiz sin que fuera necesario un X.org especial. En un principio AIGLX se desarroll en forma independiente de X.org, pero estos cambios fueron finalmente integrados en su versin 7.1. Con todos estos proyectos, para usar un Composite Manager 3D como Compiz en Linux existen tres alternativas:
Xgl X.org 7.1 con algn driver que soporte GLX_EXT_texture_from_pixmap X.org 7.1 con el driver de nvidia 9xxx

Figura 5. CompizConfig Settings Manager (ccsm)

Compiz, Beryl y Compiz Fusion

Figura 6. Selector de ventanas tipo CoverFlow

En un principio Compiz tena un conjunto bsico de plugins y a medida que se fue creando una comunidad de desarrollo se fueron agregando otros plugins ms radicales. Varios de ellos necesitaban cambios al cdigo principal de Compiz, pero David mantena una posicin conservadora rechazando cambios que l consideraba soluciones de parche a problemas de fondo. Durante un tiempo Quinn Storm mantuvo una rama de Compiz llamada Compiz-Quinn para aplicar directamente los cambios que fueran necesarios en Compiz y as dar soporte a los nuevos plugins. La idea era que los cambios en Compiz-Quinn se traspasaran a Compiz en la medida de lo posible, pero como eso no suceda con la fluidez esperada, Quinn Storm decide crear un proyecto independiente a partir de Compiz-Quinn y nace el proyecto Beryl (2006).

24

Linux+ 1/2008

grfica La revolucin grfica en Linux


Beryl adems de agregar nuevos plugins, incluye un nuevo decorador de ventanas (Window Decorator), aplicacin encargada de dibujar el borde de las ventanas, una de las funciones del clsico Window Manager. Este decorador recibe el nombre de Emerald y soporta caractersticas avanzadas como temas que usan transparencia y blur de tal forma de mezclar el marco de las ventanas con la imagen que est bajo el fondo, adems de soportar los tradicionales marcos opacos. Mientras esto suceda surgi otro conjunto de plugins para Compiz que seguan utilizando el Compiz de David, a estos plugins se les di el nombre de Compiz-Extras. El esfuerzo estaba dividido entre Compiz, Compiz-Extras y Beryl, pero esta situacin dur hasta que CompizExtras y Beryl deciden unir sus esfuerzos en un solo proyecto: Compiz Fusion (2007). No pas mucho tiempo para que Compiz Fusion y X.org 7.1 fueran lo suficientemente estables para ser incluidos por omisin en distribuciones populares como Ubuntu Gutsy (7.10), y gracias a herramientas de configuracin como CompizConfig Settings Manager (ccsm) los escritorios 3D ya estn al alcance de la mayora de los usuarios. Para disfrutar de un escritorio 3D aun no existe un mtodo unificado. En el caso de Ubuntu Gutsy el instalador hace gran parte del trabajo y el usuario solamente tiene que activar el escritorio 3D en el men Sistema -> Preferencias -> Apariencia -> Efectos Visuales. Se puede optar por no usar ningn tipo de efecto (escritorio clsico con Metacity), un modo normal en donde se habilita una configuracin mnima de Compiz Fusion, tambin se incluye un modo extra que incluye efectos ms vistosos y un modo personalizado para que el mismo usuario configure como quiera su escritorio. Esta ltima opcin solamente se habilita cuando se ha instalado CompizConfig Settings Manager (ccsm). En otras distribuciones hay que preocuparse de instalar los componentes necesarios, afortunadamente el Wiki de Compiz Fusion contiene instrucciones para las distribuciones ms populares. En resumen se debe considerar lo siguiente: Xgl o Xorg 7.1 con soporte de aceleracin 3D. En el caso de Nvidia y ATI esto puede significar instalar los drivers propietarios de cada fabricante Habilitacin de la extensin Composite Un Composite Manager como Compiz, Beryl o Compiz Fusion Un decorador de ventanas como GTK Window Decorator o Emerald las ventanas que estn debajo, esto siempre suceder cuando se utilice la extensin Composite, incluso si se usa un simple Composite Manager 2D como xcompmgr. El decorador de ventanas mostrar una sombra alrededor de cada ventana para dar una sensacin de profundidad, esto es de gran ayuda ya que en otro caso todas las ventanas parecieran estar en el mismo plano. Como muchos efectos al principio no se nota mucho el cambio, pero despus cuesta vivir sin l. Si se utiliza Emerald se puede cambiar el tema del decorador y cambiar la configuracin de la sombra a travs de emerald-theme-manager. Si se utiliza gtk window decorator se puede cambiar su configuracin mediante ccsm -> Efectos -> Decoracin de Ventanas, en donde ccm se refiere a la aplicacin CompizConfig Settings Manager. Cuando se presiona ALT-TAB para cambiar la ventana activa mediante el teclado aparecer una lista de ventanas al centro de la pantalla. Esta lista contiene una imagen en miniatura de cada ventana, pero no es cualquier imagen sino que es exactamente el contenido actual de la ventana. Por ejemplo si hay una ventana con un vdeo, veremos su miniatura con el vdeo en movimiento. Esto en realidad no es algo complejo, si recordamos que Composite siempre maneja las ventanas en memoria off-screen para que el Composite Manager las copie onscreen, entonces la miniatura es simplemente una nueva copia de la ventana original, y el escalado lo hace el chip de vdeo. Cuando aparece la lista de ventanas en miniatura, las ventanas del fondo cambian de brillo y color, o se alejan dependiendo de la configuracin utilizada, esto hace que la lista de ventanas destaque del contenido del escritorio. Para configurar se utiliza la opcin ccsm -> Manejo de Ventanas -> Conmutador de aplicaciones. Compiz Fusion incluye otro mtodo para seleccionar ventanas mediante un plugin que se llama Shift Switcher y se activa con Super+TAB (Super es la tecla Windows). En vez de usar una lista de ventanas al centro de la pantalla, este plugin gira las ventanas como Coverflow (Apple) o las desliza como Windows Vista dependiendo de la configuracin (ccsm -> Mane-

Usando Compiz Fusion

Existe una gran cantidad de plugins para Compiz Fusion, algunos de ellos no producen efectos que el usuario final pueda percibir, sino que se utilizan como base para otros plugins. Hay algunos efectos que se han creado para mejorar la usabilidad y hay otros que se han creado solamente con propsitos estticos. Veamos qu se puede hacer con Compiz Fusion. Lo primero que notar el usuario es que al mover las ventanas no se nota el redibujado de

Figura 7. Selector de ventanas

Figura 8. Escritorios virtuales en perspectiva

www.lpmagazine.org

25

grfica La revolucin grfica en Linux


jo de Ventanas -> Shift Switcher). Otro mtodo de seleccionar ventanas es mediante una vista en perspectiva de todas las ventanas abiertas. Al presionar Shift+Alt+Flecha Arriba todas las ventanas abiertas se vern al mismo tiempo en pantalla como si se vieran desde lejos, similar a lo que hace Expos en MacOSX (ccsm -> Manejo de Ventanas -> Escalar). No contentos con estos vistosos mtodos de seleccin de ventanas, se puede activar un selector en forma de anillo. Por omisin viene configurado para usarlo con Super+TAB, pero se puede cambiar para no tener conflictos con Shift Switcher (ccsm -> Manejo de Ventanas -> Selector de anillo). Una gran ayuda para hacer presentaciones o simplemente ver en mayor detalle algn elemento de la pantalla es utilizar el efecto de zoom. Si se presiona la tecla Super mientras se mueve la rueda del mouse, se puede acercar o alejar la pantalla de forma muy suave, y se pueden seguir usando las aplicaciones mientras se encuentra el escritorio ampliado. Por ejemplo si se est haciendo una presentacin y queremos que se vea claramente la URL que estamos ingresando en el navegador, simplemente aplicamos zoom y continuamos escribiendo. Se define un gran grupo de teclas para manejar todo lo que queramos en el modo de zoom, por ejemplo niveles de zoom predefinidos para acceder directamente con Super+1 (2 y 3), centrar el mouse, etc., (ccsm -> Accesibilidad -> Ampliar/Reducir Escritorio Mejorado). Una de las capacidades ms interesantes del entorno grfico de Linux es poder manejar distintos escritorios virtuales. Cada escritorio tiene su propio grupo de ventanas y con una simple combinacin de teclas se puede cambiar de un grupo a otro sin tener que estar modificando la organizacin de las ventanas en pantalla. Gracias a esto se puede tener una gran cantidad de ventanas abiertas sin que se llene la lista de ventanas del panel, ni tampoco que sea un caos seleccionar ventanas con Alt-TAB. Si necesitamos ms ventanas siempre se puede crear un nuevo escritorio virtual. Por ejemplo en el primer escritorio podramos tener nuestro navegador, el lector de correo electrnico y un documento en edicin. En el segundo escritorio un editor de cdigo, un reproductor de msica, una lista de tareas y una conversacin. En el tercero podramos tener un calendario y otro navegador con noticias. Al presionar Ctrl+Alt+Flecha Izquierda o Derecha se muestra el escritorio que queramos usar para trabajar. Esta funcionalidad clsica cambia radicalmente con Compiz Fusion. En el entorno grfico tradicional de Linux se tenia que ocultar las ventanas del escritorio que ocultbamos mientras se hacan visibles las ventanas del nuevo escritorio seleccionado. Con Compiz Fusion cada escritorio es la cara de un cubo, al seleccionar un nuevo escritorio el cubo gira para mostrar otra de sus caras que contiene el escritorio. Las ventanas siempre estuvieron ah y no es necesario ocultar o redibujar ninguna ventana por lo que el cambio es inmediato. Este cubo es uno de los efectos ms populares y tiene muchas opciones de configuracin, por ejemplo para ver las ventanas en relieve mientras se gira, (ccsm -> Escritorio -> Cubo de Escritorio y ccsm -> Escritorio -> Girar cubo). Otra forma de cambiar de escritorio virtual es imaginar que el grupo de escritorio se encuentra en un plano, como una gran muralla. En vez de girar un cubo los escritorios se deslizan en este plano. Al presionar Super+E se ve esta muralla en perspectiva, desplegando todos los escritorios virtuales. Se puede seleccionar un nuevo escritorio o mover las ventanas desde un escritorio a otro, (ccsm -> Escritorio -> Desktop Wall y ccsm -> Escritorio -> Expo). Cuando se crean, mueven, maximizan, minimizan o cierran ventanas se puede definir una gran cantidad de efectos que no solamente son vistosos, sino que ayudan a percibir mejor la accin realizada sobre la ventana. Por ejemplo si en el escritorio tradicional cerramos una ventana no se sabe si la ventana se cerr efectivamente o bien seleccionamos la que estaba de fondo haciendo invisible la ventana original. En cambio con Compiz Fusion podemos hacer que al cerrar una ventana explote, se queme o se enrolle entre otros originales efectos para que quede claro que la ventana ha sido cerrada. Estas son slo algunas capacidades de Compiz Fusion, da a da estn surgiendo nuevos plugins y se van agregando ms opciones a los actuales por lo que no tiene mucho sentido describirlos en profundidad. El wiki de Compiz Fusion contiene una lista de todos los plugins existentes con instrucciones de configuracin, uso e incluso vdeos demostrativos.

En la Red
Compiz Fusion http://www.compiz-fusion.org/ Vdeos demostrativos http://www.youtube.com/watch?v=_ImW0-MgR8I http://www.youtube.com/watch?v=82ZTV82OmKo AIGLX http://fedoraproject.org/wiki/RenderingProject/aiglx Xgl http://es.opensuse.org/Xgl AIGLX, metacity, nvidia and Xgl : David Reveman http://lists.freedesktop.org/archives/xorg/2006-February/013306.html GLX_EXT_texture_from_pixmap http://people.freedesktop.org/~davidr/GLX_EXT_texture_from_pixmap.txt Composite Extension http://www.freedesktop.org/wiki/Software/CompositeExt Using the Existing XFree86/X.Org Loadable Driver Framework to Achieve a Composited X Desktop http://developer.nvidia.com/object/xdevconf_2006_presentations.html Translucent Windows in X : Keith Packard http://www.freedesktop.org/wiki/Software/TranslucentWindows Window Managers for X http://xwinman.org/

Sobre el autor
Franco Catrin Leiva es Ingeniero de Ejecucin Informtico de la Universidad Tcnica Federico Santa Mara (Chile) y actualmente se desempea en el rea de I+D de TUXPAN Software S.A., especializndose en el rea de Arquitectura de Software. Participa activamente en la difusin de Linux y Software Open Source a nivel nacional, siendo expositor en 5 ediciones del Encuentro Nacional de Linux, e invitado frecuente a conferencias de Linux por todo el pas. Fue especialista de Linux durante 3 aos en dos programas de tecnologa del canal de televisin UCV-TV. Ha colaborado corrigiendo bugs en varios proyectos Open Source, incluyendo la implementacin del driver del chip de vdeo NeoMagic para Kdrive. Su bitcora personal est en http://www.tuxpan.com/fcatrin

26

Linux+ 1/2008