Un gestor de composición , o compositor , es un software que proporciona a las aplicaciones un búfer fuera de pantalla para cada ventana. El gestor de composición compone los búferes de ventana en una imagen que representa la pantalla y escribe el resultado en la memoria de visualización. Un gestor de ventanas de composición es un gestor de ventanas que también es un gestor de composición. [1] [2]
Los administradores de composición pueden realizar un procesamiento adicional en ventanas almacenadas en búfer, aplicando efectos animados 2D y 3D como fusión , desvanecimiento , escalado , rotación , duplicación , flexión y contorsión, barajado, desenfoque , redirección de aplicaciones y traducción de ventanas a una de varias pantallas y escritorios virtuales . La tecnología de gráficos por computadora permite que los efectos visuales se representen en tiempo real, como sombras paralelas , vistas previas en vivo y animación compleja. [3] [4] Dado que la pantalla tiene doble búfer , no parpadea durante las actualizaciones.
Los administradores de composición y administradores de ventanas de composición más utilizados incluyen:
El administrador de ventanas envía a cada ventana un mensaje para que se vuelva a pintar cuando sea necesario. Las ventanas pueden superponerse. Cuando se mueve una ventana del frente, puede revelar un área de una ventana detrás que estaba oculta anteriormente. Los administradores de ventanas se clasifican en general según su estrategia para hacer que esa área recién revelada se muestre al usuario. En la estrategia de "apilamiento", el administrador de ventanas le dice a la ventana trasera que se vuelva a pintar. En la estrategia de "composición", el administrador de ventanas mantiene un búfer de memoria fuera de la pantalla que contiene la apariencia completa de cada ventana, incluida la ventana trasera.
Con un administrador de apilamiento, el proceso de repintado puede verse dañado cuando un programa que es lento, no responde o tiene errores no responde a los mensajes de manera oportuna. [5] [6] Un programa malicioso puede hacer que el sistema parezca inestable simplemente por no repintar su ventana. Entonces, pueden producirse una o más de las siguientes condiciones:
Con un administrador de composición, si una ventana deja de repintarse cuando lo solicita el administrador de ventanas, su último repintado permanecerá visible y la ventana podría aparecer atenuada. A menudo, el título cambia para reflejar el estado de la ventana como no responde. Un programa puede evitar que su ventana se mueva o desasigne, pero generalmente no causará problemas de repintado.
Uno de los primeros sistemas con un sistema de ventanas de composición fue el Commodore Amiga , lanzado en 1985. Las aplicaciones podían solicitar primero una región de memoria fuera de la región de visualización actual para usarla como mapa de bits. El sistema de ventanas de Amiga utilizaría entonces una serie de bit blits utilizando el blitter de hardware del sistema para construir una composición de los mapas de bits de estas aplicaciones (junto con botones y controles deslizantes) en la memoria de visualización, sin necesidad de que estas aplicaciones redibujaran ninguno de sus mapas de bits. [9]
El 24 de marzo de 2001, Mac OS X v10.0 se convirtió en el primer sistema operativo generalizado en ofrecer efectos y composición 3D basados en software, proporcionados por su componente Quartz . Con el lanzamiento de Mac OS X v10.2 y Quartz Extreme , la tarea de composición pudo trasladarse al hardware gráfico dedicado . [2] [10]
En 2003, Sun Microsystems presentó un ambicioso sistema de gráficos 3D llamado Project Looking Glass para sumar a su conjunto de herramientas Swing . Se mostró por primera vez en la LinuxWorld Expo de 2003. Aunque Apple amenazó con demandar a Sun por violación de los derechos de propiedad intelectual , otros gestores de ventanas han implementado algunas de las funciones de Looking Glass. En 2006, Sun interrumpió el desarrollo, cuyo negocio principal era la transición de las estaciones de trabajo Unix orientadas a los gráficos a la venta de mainframes empresariales . [11]
Microsoft presentó por primera vez el Administrador de ventanas de escritorio en el Proyecto Longhorn en la Conferencia de ingeniería de hardware de Windows de 2003 , mostrando ventanas inestables. [12] Graves retrasos en el desarrollo de Longhorn hicieron que Microsoft no presentara su administrador de ventanas de composición 3D hasta el lanzamiento de Windows Vista en enero de 2007. [13]
La implementación de la composición bajo el sistema X Window requirió un rediseño, que se llevó a cabo de manera incremental. [14] Metacity 2.8.4 fue lanzado en agosto de 2004. [15] Sin embargo, el primer administrador de ventanas de composición ampliamente publicitado para X fue Xfwm , lanzado en enero de 2005. [16] El 26 de enero de 2005 se lanzó Compiz , introduciendo la composición 3D completamente acelerada en la plataforma Linux. [17] KWin de KDE también admite la composición.
En la composición, se pueden aplicar efectos 3D a las ventanas para proporcionar efectos de escritorio 3D. Los administradores de ventanas de composición modernos utilizan aceleración de hardware 3D. El software del administrador de ventanas de composición se comunica con el hardware gráfico a través de interfaces de programación como OpenGL o Direct3D .
Las primeras implementaciones generalizadas que utilizaban esta técnica se lanzaron para Mac en Mac OS X 10.2 y para Linux en un prototipo de Luminocity . Actualmente, los administradores de ventanas que utilizan OpenGL incluyen Compiz, KWin y Quartz Compositor, mientras que Desktop Window Manager utiliza actualmente DirectX 9. OpenGL aún no es totalmente compatible con el hardware, por lo que el rendimiento de la composición basada en OpenGL debería seguir mejorando a medida que mejore el hardware [ cita requerida ] .
Los gestores de ventanas apilables que se ejecutan en el sistema X Window (X11) requieren una extensión de incrustación cromática o de trama verde . [ cita requerida ] La composición se introdujo mediante la extensión Composite . Los gestores de composición utilizan la aceleración de hardware a través de esta extensión, si está disponible.
En X11, la capacidad de realizar composiciones aceleradas en 3D requería cambios fundamentales en el protocolo del sistema de ventanas para poder utilizar la aceleración de hardware. Originalmente, comenzaron a aparecer varias implementaciones de X11 modificadas diseñadas en torno a OpenGL , entre ellas Xgl . La introducción de AIGLX eliminaría la necesidad de utilizar Xgl y permitiría a los administradores de ventanas realizar composiciones aceleradas en 3D en un servidor X estándar, al tiempo que permitía la renderización directa . Actualmente, las tarjetas NVIDIA , Intel y ATI admiten AIGLX.
Compiz introdujo un efecto de cubo que permite al usuario ver hasta 6 escritorios virtuales a la vez. Cada escritorio se convierte en una textura de superficie del cubo, que se puede rotar a voluntad. Compiz muestra una amplia gama de efectos 2D y 3D y tiene requisitos de hardware relativamente bajos. [18] En 2012, Compiz se incluyó en Ubuntu Linux y se habilitaba automáticamente cuando había hardware y controladores compatibles disponibles y el usuario no había seleccionado el modo 2D. [19]
Mutter (Metacity + Clutter) ha reemplazado a Metacity como el administrador de ventanas predeterminado para GNOME . Se incluye en el componente GNOME Shell de GNOME 3.0. Utiliza el motor de visualización Clutter, que se ha adaptado a todos los principales sistemas operativos, netbooks y teléfonos inteligentes .
Desde la versión 4, el gestor de ventanas de KDE, KWin, tiene capacidades de composición. KWin ofrece muchas de las mismas funciones que también se encuentran en Compiz .
Con el protocolo Wayland , un gestor de ventanas de composición también es un servidor de visualización ; no hay un servidor de visualización separado del gestor de ventanas. La combinación de gestor de ventanas y servidor de visualización se denomina compositor Wayland . Weston es una implementación de referencia de un compositor Wayland; KWin y Mutter también son compositores Wayland, además de gestores de ventanas de composición X11.
El proyecto Looking Glass era un gestor de ventanas que combinaba la representación 3D y el lenguaje de programación multiplataforma Java . Actualmente está inactivo y se publica bajo la Licencia Pública General de GNU . La distribución Live CD de Granular Linux incluye Looking Glass como gestor de ventanas opcional.
Tras su discontinuación, algunas de sus funciones, como el cambio de portada y las vistas previas en vivo de miniaturas, se han incorporado a otros gestores de ventanas. Entre sus funciones más originales se encuentran la inclinación de ventanas, los marcos de ventanas de dos lados y los fondos con desplazamiento de paralaje .
Si bien pueden ejecutarse en hardware con capacidad 3D, AmigaOS 4 y MorphOS están diseñados para ejecutarse en computadoras Amiga antiguas , comenzando con el Amiga 1200. Como tal, sus administradores de ventanas tienen principalmente capacidades de renderizado planar que incluyen capas compuestas, combinación alfa, gradientes, alta resolución y múltiples escritorios ("pantallas") que pueden recortarse parcialmente entre sí.
Si bien el administrador de ventanas de Windows 2000 realiza la composición, no realiza transformaciones como el alfa por píxel. Pocas aplicaciones comerciales aprovecharon la combinación alfa; los programas gratuitos fueron de los primeros en experimentar con ella, aunque a través de configuraciones opcionales. [20] [21] La composición se introdujo con el Administrador de ventanas de escritorio en Windows Vista . [1]
Windows Vista y Windows 7 permiten al usuario desactivar el Administrador de ventanas del escritorio seleccionando la configuración de apariencia básica de Windows. Además, Windows lo desactiva automáticamente para realizar la superposición de hardware a través del Filtro mezclador de superposición .
El enfoque de composición facilita la implementación de una serie de características que hacen que la interfaz de usuario sea más accesible, más sencilla de usar o con elementos atractivos a la vista.
Los gráficos vectoriales , como las fuentes TrueType y los elementos acelerados en 3D, se pueden ampliar sin degradarse (normalmente debido al aliasing ). Una lupa de pantalla amplía un área de la pantalla, lo que hace que partes del texto sean más fáciles de leer, ya sea para evitar la fatiga visual , para personas con problemas visuales o simplemente a distancia. Los efectos de zoom, como la lupa de ojo de pez y los efectos de zoom de escritorio, proporcionan esta funcionalidad.
Se puede mostrar una vista previa de una ventana en una miniatura emergente cuando el usuario pasa el cursor sobre el botón asociado a la misma en la barra de tareas . Esto permite al usuario identificar y administrar varios programas que se ejecutan simultáneamente.
Las ventanas con nombres e iconos similares suelen causar confusión, especialmente cuando sus barras de título se superponen; es necesario memorizar la posición de cada una de esas ventanas en la barra de tareas. Cuando hay muchas ventanas abiertas de esta manera, el usuario a menudo tiene que recurrir al método de prueba y error (hacer clic en cada botón de la barra de tareas uno por uno) antes de continuar. El cambio de ventanas permite obtener una vista previa rápida de varias ventanas a la vez reorganizándolas temporalmente sobre un fondo decorativo. Después de realizar una selección, las ventanas vuelven a su disposición original.
La selección comienza cuando el usuario ingresa una combinación de teclas de acceso rápido , mueve el puntero del mouse hacia un punto de acceso rápido en la pantalla o, en algunas situaciones, utiliza la rueda de desplazamiento del mouse . Se navega por los elementos utilizando el teclado o el mouse. Un elemento se selecciona soltando la tecla de acceso rápido, presionando la tecla Enter o haciendo clic en él con el mouse.
El selector giratorio es una mejora de la función de cambio entre Alt y Tab . Las ventanas en ejecución se organizan en una pila, similar a un selector giratorio en una máquina de discos de los años 50 o en un Rolodex . En algunos sistemas, el usuario puede presionar Alt-Shift-Tab para navegar hacia atrás. Se aplican transiciones visuales a cada elemento mientras se navega.
Las implementaciones comunes de conmutación por flip incluyen Flip 3D en Windows y Shift Switcher en Compiz.
El cambio de portada es como el cambio de pantalla con algunas diferencias, principalmente visuales. En lugar de una pila con la selección en la parte superior, se muestran dos pilas simétricas con la selección actual al frente y en el centro (similar a la función de inclinación de la ventana en Looking Glass).
Cover Flow es una implementación del cambio de portada en macOS. Las versiones más recientes utilizan el desenfoque para dejar de enfatizar los elementos no seleccionados. Cover Flow también se ha implementado en otro software publicado por Apple, como iTunes .
Esto también se conoce como "vista de libro electrónico".
El cambio de anillo es como el cambio de volteo, excepto que las ventanas se mueven en un círculo, con la selección actual al frente, generalmente en la parte inferior. La mayoría de los administradores de ventanas de composición incluyen esta función de fábrica y también están disponibles aplicaciones de terceros , como 3d-desktop.
El usuario puede agrupar ventanas de forma que solo se pueda ver una ventana a la vez en cada grupo. En Compiz, el marco de la ventana se gira para indicar cuándo se ha modificado la ventana activa en su grupo.
macOS muestra una vista previa de cada ventana en la pantalla mediante mosaicos. Otros sistemas con funciones similares (Microsoft Windows, Compiz, KWin, aplicaciones de terceros) se conocen como clones de Exposé. La tecla de acceso rápido para activar Exposé no es Alt-Tab, sino F3.
Mac OS X 10.7 combina varias otras funciones de composición desarrolladas por Apple, como Exposé, Dashboard y Spaces , en un programa más grande llamado Mission Control .
En macOS, los "widgets" ( applets de un solo propósito ) como un reloj, un bloc de notas y una calculadora pueden aparecer al presionar una tecla de acceso rápido. Los motores de widgets aceleran el trabajo al mantener los widgets de uso común accesibles sin que estorben. Se gestionan mediante el programa Dashboard en macOS.
Compiz comienza con una capa de widgets en blanco, que permite al usuario agregar aplicaciones haciendo clic en ellas. Se admiten una variedad de widgets, incluidos Screenlets , gDesklets y SuperKaramba . [22]
Windows Vista ofrece gadgets que el usuario puede colocar en la barra lateral de Windows (gadgets de la barra lateral), en una página de inicio de Windows Live (gadgets web) o en una pantalla externa, como el teléfono móvil del usuario ( gadgets de SideShow ). La barra lateral de Windows era una partición visible en Windows Vista y se eliminó en Windows 7, junto con los gadgets de la barra lateral, que se cambiaron a Gadgets de escritorio .
Antes de que se desarrollaran los gestores de ventanas de composición, las ventanas aparecían y desaparecían instantáneamente de la vista, lo que es incongruente con la metáfora de la interfaz (y con un entorno de oficina física ). Algunos sistemas como el Mac OS clásico evitaban este problema con ZoomRects, animando el contorno de las ventanas "acercándose" hacia su posición final. [23] Pero en la mayoría de los sistemas, la aparición y desaparición repentina de elementos de la GUI puede parecer confusa o incluso caótica para los usuarios inexpertos. [ cita requerida ] Las transiciones visuales proporcionan contexto y ayudan a distinguir las relaciones causales de los elementos de la GUI. En lugar de simplemente desaparecer, una ventana puede desvanecerse o encogerse visiblemente hasta la barra de tareas. Un menú desplegable en el que se ha hecho clic puede irradiar suavemente hacia afuera desde la barra de menú, lo que facilita determinar su origen y propósito.
Las transiciones graduales y naturales pueden ser especialmente útiles para usuarios mayores o con problemas visuales que perciben los cambios en la pantalla más lentamente y con menos claridad. Por ejemplo, un usuario inexperto puede hacer clic impulsivamente en un menú que se activó por accidente, lo que le hace perder el trabajo. El breve retraso necesario para mostrar una transición visual puede dar al usuario tiempo suficiente para tomar una decisión consciente y evitar tales errores.
Metisse implementa fachadas de interfaz de usuario, un sistema que proporciona a los usuarios formas sencillas de adaptar, reconfigurar y recombinar interfaces gráficas existentes, mediante el uso de técnicas de manipulación directa . [24]