Un gestor de ventanas es un software de sistema que controla la ubicación y la apariencia de las ventanas dentro de un sistema de ventanas en una interfaz gráfica de usuario . [1] La mayoría de los gestores de ventanas están diseñados para ayudar a proporcionar un entorno de escritorio . Funcionan en conjunto con el sistema gráfico subyacente que proporciona la funcionalidad requerida (soporte para hardware gráfico, dispositivos señaladores y un teclado) y, a menudo, se escriben y crean utilizando un kit de herramientas de widgets .
Pocos gestores de ventanas están diseñados con una distinción clara entre el sistema de ventanas y el gestor de ventanas. Toda interfaz gráfica de usuario basada en una metáfora de ventanas tiene alguna forma de gestión de ventanas. En la práctica, los elementos de esta funcionalidad varían enormemente. [2] Los elementos normalmente asociados a los gestores de ventanas permiten al usuario abrir, cerrar, minimizar, maximizar, mover, cambiar de tamaño y realizar un seguimiento de las ventanas en ejecución, incluidos los decoradores de ventanas . Muchos gestores de ventanas también vienen con varias utilidades y características como barras de tareas , lanzadores de programas, docks para facilitar la división por la mitad o en cuartos de las ventanas en la pantalla, espacios de trabajo para agrupar ventanas, iconos de escritorio , fondo de pantalla, una capacidad para mantener ventanas seleccionadas en primer plano, la capacidad de "enrollar" ventanas para mostrar solo sus barras de título, poner ventanas en cascada, apilar ventanas en una cuadrícula, agrupar ventanas del mismo programa en la barra de tareas para ahorrar espacio y barras de tareas de varias filas opcionales. [3] [4] [5] [6]
En 1973, el Xerox Alto se convirtió en el primer ordenador que se entregó con una interfaz gráfica de usuario WIMP funcional . Utilizaba un gestor de ventanas apilables que permitía superponer ventanas. [7] Sin embargo, esto estaba tan adelantado a su tiempo que su paradigma de diseño no se adoptaría ampliamente hasta más de una década después. Si bien no está claro si Microsoft Windows contiene diseños copiados del Mac OS clásico de Apple , está claro que ninguno de los dos fue el primero en producir una interfaz gráfica de usuario que utilizara ventanas apilables. A principios de la década de 1980, el Xerox Star , sucesor del Alto, utilizó mosaicos para la mayoría de las ventanas de las aplicaciones principales y utilizó la superposición solo para los cuadros de diálogo, eliminando la mayor parte de la necesidad de apilamiento. [8]
El sistema operativo Mac OS clásico fue uno de los primeros ejemplos comercialmente exitosos de una interfaz gráfica de usuario que utilizaba una especie de gestión de ventanas apiladas a través de QuickDraw . Su sucesor, macOS , utiliza un administrador de ventanas algo más avanzado que ha admitido la composición desde Mac OS X 10.0 y se actualizó en Mac OS X 10.2 para admitir la composición acelerada por hardware a través de Quartz Compositor . [9]
GEM 1.1 , de Digital Research , era un entorno operativo que incluía un gestor de ventanas apilables, lo que permitía que todas las ventanas se superpusieran. Fue lanzado a principios de la década de 1980. [10] GEM es famoso por haber sido incluido como la GUI principal utilizada en Atari ST , que ejecutaba Atari TOS , y también fue una GUI popular para MS-DOS antes del uso generalizado de Microsoft Windows. Como resultado de una demanda de Apple , Digital Research se vio obligada a eliminar las capacidades de apilamiento en GEM 2.0, convirtiendo su gestor de ventanas en un gestor de ventanas en mosaico. [11]
A mediados de los años 1980, Amiga OS contenía un ejemplo temprano de un gestor de ventanas de composición llamado Intuition (una de las bibliotecas de bajo nivel de AmigaOS, que estaba presente en las ROM del sistema Amiga ), capaz de reconocer qué ventanas o partes de ellas estaban cubiertas, y qué ventanas estaban en primer plano y completamente visibles, por lo que podía dibujar solo partes de la pantalla que requerían refrescarse. Además, Intuition admitía la composición. 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 luego usaría una serie de blits de bits usando 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 requerir que estas aplicaciones vuelvan a dibujar ninguno de sus mapas de bits.
En 1988, Presentation Manager se convirtió en el shell predeterminado en OS/2 , que, en su primera versión, solo utilizaba una interfaz de línea de comandos (CLI). IBM y Microsoft diseñaron OS/2 como sucesor de DOS y Windows para DOS. Sin embargo, después del éxito de Windows 3.10, Microsoft abandonó el proyecto en favor de Windows. Después de eso, el proyecto de Microsoft para una futura versión 3 de OS/2 se convirtió en Windows NT , e IBM realizó un rediseño completo del shell de OS/2, sustituyendo el Presentation Manager de OS/2 1.x por el Workplace Shell orientado a objetos que hizo su debut en OS/2 2.0. [12]
En los sistemas que utilizan el sistema de ventanas X , existe una clara distinción entre el administrador de ventanas y el sistema de ventanas . Estrictamente hablando, un administrador de ventanas X no interactúa directamente con el hardware de video, ratones o teclados; esa es responsabilidad del servidor de visualización .
Los usuarios del sistema X Window tienen la capacidad de usar fácilmente muchos gestores de ventanas diferentes: Metacity , usado en GNOME 2 , y KWin , usado en KDE Plasma Workspaces , y muchos otros. Dado que muchos gestores de ventanas son modulares, [ vague ] la gente puede usar otros, [ vague ] como Compiz (un gestor de ventanas de composición 3D ), que reemplaza al gestor de ventanas. [ vague ] Sawfish y awesome , por otro lado, son gestores de ventanas extensibles que ofrecen un control de ventanas preciso. Los componentes de diferentes gestores de ventanas incluso se pueden mezclar y combinar; por ejemplo, las decoraciones de ventanas de KWin se pueden usar con los componentes de escritorio y dock de GNOME.
Los gestores de ventanas X también tienen la capacidad de re-parentalizar aplicaciones, lo que significa que, mientras que inicialmente todas las aplicaciones son adoptadas por la ventana raíz (esencialmente toda la pantalla), una aplicación iniciada dentro de la ventana raíz puede ser adoptada por (es decir, puesta dentro de) otra ventana. Los gestores de ventanas bajo el sistema de ventanas X adoptan aplicaciones de la ventana raíz y las re-parentalizan para aplicar decoraciones de ventana (por ejemplo, agregando una barra de título). La re-parentalización también se puede utilizar para agregar el contenido de una ventana a otra. Por ejemplo, una aplicación de Flash Player puede re-parentalizarse a una ventana del navegador y puede aparecer ante el usuario como si fuera supuestamente parte de ese programa. Los gestores de ventanas re-parentalizados pueden, por lo tanto, organizar uno o más programas dentro de la misma ventana y pueden combinar fácilmente el mosaico y el apilamiento de varias maneras.
Microsoft Windows ha proporcionado un gestor de ventanas apilables integrado desde Windows 2.0 ; Windows Vista introdujo el Gestor de ventanas de escritorio de composición (dwm.exe) como una alternativa opcional acelerada por hardware. En Windows, dado que GDI es parte del núcleo, [13] el papel del gestor de ventanas está estrechamente acoplado con los subsistemas gráficos del núcleo y es en gran medida no reemplazable, aunque se pueden utilizar utilidades de terceros para simular un gestor de ventanas en mosaico sobre dichos sistemas. Desde Windows 8 , el Gestor de ventanas de escritorio basado en Direct3D ya no se puede desactivar. [14] Solo se puede reiniciar con la combinación de teclas de acceso rápido Ctrl+Shift+Win+B. [15]
El Explorador de Windows (explorer.exe) se utiliza de forma predeterminada como shell en los sistemas Windows modernos para proporcionar una barra de tareas y un administrador de archivos, junto con muchas funciones de un administrador de ventanas; se pueden modificar aspectos de Windows a través de las utilidades de configuración proporcionadas, modificando el Registro de Windows o con herramientas de terceros, como WindowBlinds o Resource Hacker .
También se puede proporcionar un servidor X Windows completo, que permita el uso de gestores de ventanas trasladados del mundo Unixoid, para Microsoft Windows a través de Cygwin/X incluso en modo multiventana (y mediante otras implementaciones del sistema X Window). De este modo, es fácilmente posible, por ejemplo, tener programas cliente del sistema X Window ejecutándose en el mismo entorno Cygwin en la misma máquina, o en un sistema Linux, BSD Unix, etc. a través de la red, y que solo se muestre y utilice su GUI sobre el entorno Microsoft Windows.
Tenga en cuenta que Microsoft y X Window System utilizan términos diferentes para describir conceptos similares. Por ejemplo, Microsoft rara vez menciona el término " administrador de ventanas" porque está integrado y no es reemplazable, y es distinto del shell . [ Aclaración necesaria ] [16] El shell de Windows es análogo al concepto de entorno de escritorio en otros sistemas de interfaz gráfica de usuario.
Desde 2021, ChromeOS se entrega con su propio administrador de ventanas llamado Ash. [17] Chromium y Ash comparten una base de código común . [17] En el pasado, se podía ejecutar google-chrome --open-ash
en cualquier sistema compatible.
Los administradores de ventanas a menudo se dividen en tres o más clases, que describen cómo se dibujan y actualizan las ventanas.
Los gestores de ventanas de composición permiten crear y dibujar todas las ventanas por separado y luego unirlas y mostrarlas en varios entornos 2D y 3D. Los gestores de ventanas de composición más avanzados permiten una gran variedad de apariencias de interfaz y la presencia de efectos visuales 2D y 3D avanzados.
Todos los administradores de ventanas que tienen ventanas superpuestas y no son administradores de ventanas de composición son administradores de ventanas apilables , aunque es posible que no todos utilicen los mismos métodos. Los administradores de ventanas apilables permiten que las ventanas se superpongan dibujando primero las ventanas de fondo, lo que se conoce como el algoritmo del pintor . Los cambios a veces requieren que se vuelvan a apilar o pintar todas las ventanas, lo que generalmente implica volver a dibujar cada ventana. Sin embargo, para traer una ventana de fondo al frente generalmente solo se requiere volver a dibujar una ventana, ya que las ventanas de fondo pueden tener trozos de otras ventanas pintadas sobre ellas, borrando efectivamente las áreas que están cubiertas.
Los administradores de ventanas en mosaico pintan todas las ventanas en la pantalla colocándolas una al lado de la otra o una encima de la otra, de modo que ninguna ventana cubra a otra. Microsoft Windows 1.0 utilizaba el sistema de mosaicos y hay una variedad de administradores de ventanas en mosaico para X , como i3 , awesome y dwm .
Los administradores de ventanas dinámicos pueden cambiar dinámicamente entre el diseño de ventanas flotantes o en mosaico. Hay una variedad de administradores de ventanas dinámicos disponibles para X.
Una ventana activa es la ventana que se encuentra en el foco del administrador de ventanas actual. Los distintos administradores de ventanas indican la ventana activa de distintas maneras y permiten al usuario cambiar de ventana de distintas maneras. Por ejemplo, en Microsoft Windows, si están abiertos tanto el Bloc de notas como Microsoft Paint , al hacer clic en la ventana del Bloc de notas, dicha ventana se activará. En Windows, la ventana activa se indica con una barra de título de un color diferente. Sin embargo, hacer clic no es la única forma de seleccionar una ventana activa: algunos administradores de ventanas (como FVWM ) activan la ventana que se encuentra debajo del puntero del mouse (simplemente mover el mouse es suficiente para cambiar de ventana; no es necesario hacer clic).
Los administradores de ventanas suelen ofrecer una forma de seleccionar la ventana activa mediante el teclado como alternativa al ratón. Una combinación de teclas típica es Alt+Tab , utilizada por Windows y KDE (por defecto, aunque esto es configurable por el usuario); otra es tecla de manzana -tilde, utilizada por Macintosh. Al pulsar la combinación de teclas adecuada, normalmente se recorren todas las ventanas visibles en algún orden, aunque también son posibles otras acciones.
Muchos gestores de ventanas (aunque no todos) ofrecen una zona de la pantalla que contiene algún tipo de control visual (a menudo un botón) para cada ventana de la pantalla. Normalmente, cada botón contiene el título de la ventana y también puede contener un icono. Esta zona de la pantalla suele ofrecer algún tipo de indicación visual de qué ventana está activa (por ejemplo, el botón de la ventana activa puede aparecer "presionado"). También suele ser posible cambiar de ventana activa haciendo clic en el botón correspondiente. En Microsoft Windows, esta zona de la pantalla se denomina barra de tareas ; en los sistemas Apple Macintosh, esta zona de la pantalla se denomina dock.
La ventana activa no siempre se encuentra delante de todas las demás ventanas de la pantalla. La ventana activa es simplemente la ventana a la que se envían las teclas que se escriben en el teclado; puede estar oculta visualmente por otras ventanas. Esto es especialmente cierto en los gestores de ventanas que no requieren un clic para cambiar las ventanas activas: FVWM , por ejemplo, activa la ventana que se encuentra debajo del cursor del ratón pero no cambia su orden Z (el orden en el que aparecen las ventanas, medido desde el fondo hasta el primer plano). En cambio, es necesario hacer clic en el borde de la ventana para traerla al primer plano. También hay situaciones en los gestores de ventanas que requieren un clic para enfocar, como Microsoft Windows, en las que la ventana activa puede estar oculta; sin embargo, esto es mucho menos común.