# Gestor de ventanas en mosaico

En informática, un Gestor de Ventanas en Mosaico (Tiling Window Manager, en inglés), es un administrador de ventanas con una organización de la pantalla en marcos que no se superponen entre sí, a diferencia del enfoque más popular de apilamiento basado en coordenadas de objetos superpuestos (ventanas) que intenta emular completamente la metáfora de escritorio.

## Historia
### Xerox PARC

El primer sistema Xerox Star (lanzado en 1981) mostraba ventanas de aplicaciones en mosaico, pero permitía que los cuadros de diálogo y las ventanas de propiedades se superpusieran. Más tarde, Xerox PARC también desarrolló CEDAR (lanzado en 1982), el primer sistema de ventanas que utiliza un gestor de ventanas en mosaico.

### Varios proveedores

Luego, en 1983, vino Andrew WM, un sistema completo de ventanas en mosaico reemplazado más tarde por X11. Windows 1.0 de Microsoft (publicado en 1985) también se utiliza ventanas en mosaicos (véanse las secciones siguientes). En 1986 llegó GEM 2.0 de Digital Research, un sistema de ventanas para el CP/M, que utilizaba ventanas en mosaico de forma predeterminada. Uno de los primeros gestor de ventanas de mosaico (creado en 1988) fue el RTL de Siemens, hasta hoy un ejemplo de libro de texto debido a sus algoritmos de escalado, colocación y disposición automatizados de ventanas y desiconificación. RTL se ejecutó en X11R2 y R3, principalmente en los sistemas nativos de Siemens, por ejemplo, SINIX. Sus características se describen en su video promocional. El Proyecto Andrew (AP o tAP) era un sistema cliente de escritorio (como los primeros GNOME) para X con un gestor de ventanas de mosaico y superposición.
MacOSX 10.11 El Capitan lanzado en septiembre de 2015 presenta nuevas funciones de administración de ventanas, como la creación de una vista dividida de pantalla completa limitada a dos ventanas de aplicaciones una al lado de la otra en pantalla completa al mantener presionado el botón de pantalla completa en la esquina superior izquierda de una ventana.

## Gestores de ventanas de mosaico
### Microsoft Windows

* Mosaico en vertical o Mostrar Ventanas paralelo
* Mosaico en horizontal o Mostrar Ventanas Apliadas
El gestor de ventanas integrado de Microsoft Windows, desde Windows 95, ha seguido el enfoque de apilamiento tradicional por defecto. También puede actuar como un gestor de ventanas de mosaico rudimentario.
Para colocar ventanas en mosaico, el usuario las selecciona en la barra de tareas y usa la opción del menú contextual Mosaico en vertical o Mosaico en horizontal. Eligir Mosaico en vertical hará que las ventanas se coloquen en mosaico horizontal pero adopten una forma vertical, mientras que elegir Mosaico en horizontal hará que las ventanas se coloquen en mosaico verticalmente pero adopten una forma horizontal. Estas opciones se cambiaron más tarde en Windows Vista para Mostrar ventanas en paralelo y Mostrar ventanas apiladas, respectivamente. Windows 7 agrega la capacidad de arrastrar ventanas a cualquier lado de la pantalla para crear un diseño simple en mosaico de lado a lado, o hacia la parte superior de la pantalla para maximizar .
Windows 8 introdujo aplicaciones de estilo Metro, a diferencia de las aplicaciones de escritorio, no funcionaban en una ventana y solo podían ejecutarse en pantalla completa o "ajustarse" como una barra lateral junto con otra aplicación o el entorno de escritorio.
Además de permitir que las aplicaciones de la Tienda Windows se ejecuten en una ventana tradicional, Windows 10 mejoró las funciones de ajuste introducidas en Windows 7 al permitir que las ventanas se coloquen en mosaicos en cuadrantes de pantalla arrastrándolas a la esquina y agregando "Snap Assist": que solicita al usuario que seleccione la aplicación que desea que ocupe la otra mitad de la pantalla cuando ajusta una ventana a la mitad de la pantalla, y permite al usuario cambiar automáticamente el tamaño de ambas ventanas a la vez arrastrando un controlador en el centro de la pantalla. Windows 10 también es compatible con FancyZones, un gestor de ventanas de mosaico más completo que permite crear zonas de mosaico personalizadas y un mayor control del usuario, configurado a través de Microsoft PowerToys.

#### Historia

La primera versión (Windows 1.0) incluía un gestor de ventanas en mosaico, en parte debido a un litigio de Apple que reclamaba la propiedad de la metáfora de escritorio de la ventana superpuesta. Pero debido a las quejas, la siguiente versión (Windows 2.0) siguió la metáfora del escritorio. Todas las versiones posteriores del sistema operativo se apegaron a este enfoque como comportamiento predeterminado.

#### Lista de administradores de ventanas en mosaico para Windows

* AquaSnap: fabricado por Nurgo Software. Freeware, con una licencia "Profesional" opcional.
* Amethyst para Windows: Gestor de ventanas en mosaico dinámico similar a Amethyst para MacOS.
* bug.n: administrador de ventanas de mosaico configurable y de código abierto construido como un script AutoHotKey y con licencia GNU GPL.
* MaxTo: cuadrícula personalizable, teclas de acceso rápido globales. Funciona con aplicaciones elevadas, aplicaciones de 32 y 64 bits y varios monitores.
* WS Grid+: mueva y/o cambie el tamaño de las ventanas utilizando un sistema de selección de cuadrícula que combina los beneficios de la flotación, el apilamiento y el mosaico. Proporciona atajos de teclado/ratón para mover y cambiar el tamaño de una ventana instantáneamente.
* Stack: cuadrícula personalizable (XAML), teclas de acceso rápido globales y/o botón central del ratón. Soporta HiDPI y múltiples monitores.
* Plumb: administrador de mosaicos liviano con soporte para múltiples versiones de Windows. Admite monitores HiDPI, teclas de acceso rápido del teclado y personalización de teclas de acceso rápido (XAML).
workspacer: un gestor de ventanas de mosaico con licencia del MIT para Windows 10 que pretende ser rápido y compatible. Escrito y configurable usando C#. [13] dwm-win32: dwm para win32. Tiene licencia MIT y se configura editando un encabezado de configuración en el mismo estilo que dwm.

### Sistema de ventanas X

En el Sistema de ventanas X, el gestor de ventanas es un programa separado. X en sí mismo no impone un enfoque específico de gestión de ventanas y permanece utilizable incluso sin ningún administrador de ventanas. La versión actual del protocolo X, X11, menciona explícitamente la posibilidad de colocar administradores de ventanas en mosaico. Siemens RTL Tiled Window Manager (lanzado en 1988) fue el primero en implementar estrategias automáticas de colocación / tamaño. Otro gestor de ventanas en mosaico de este período fue el Gestor de ventanas de Cambridge desarrollado por el grupo Academic Information System de IBM.
En 2000, tanto larswm como Ion WM lanzaron una primera versión.

#### Lista de gestores de ventanas de mosaico para X

* El gestor de ventanas de mosaico dwm
* spectrwm con área maestra a la izquierda
* Bluetile está diseñado para integrarse con el escritorio GNOME
* Window Manager From Scratch (WMFS) con Vim , urxvt , tty-clock y ncmpcpp abiertos
* El gestor de ventanas en mosaico dwm con la pantalla dividida en cuatro mosaicos.
* Sway 1.5 con i3status 2.13
* XMonad en modo mosaico con dos terminales URXVT y pcmanFM abierto
* Captura de pantalla de una sesión i3 típica.
* Captura de pantalla de awesome proporcionada por el desarrollador
* awesome: Un derivado de dwm con mosaico en ventanas, flotante y etiquetado, escrito en C y configurable y extensible en Lua. Fue el primer gestor de ventanas en ser portado de Xlib a XCB, y es compatible con D-Bus, pango, XRandR y Xinerama.
* bspwm: Un pequeño gestor de ventanas en mosaico que, de manera similar a yabai, representa las ventanas como las hojas de un árbol binario completo. No maneja combinaciones de teclas por sí solo, requiriendo otro programa (por ejemplo, sxhkd) para traducir la entrada a X eventos.
* Compiz: Un gestor de composición de ventanas disponible para su uso sin dejar interfaces familiares, como las de GNOME, KDE o MATE. Uno de sus complementos (llamado Grid) permite al usuario configurar varias combinaciones de teclas para mover ventanas a cualquier esquina, con cinco longitudes diferentes. También hay opciones para configurar la ubicación predeterminada para ventanas específicas. Los complementos se pueden configurar a través de Compiz Config Settings Manager/CCSM.
* dwm: Permite cambiar los diseños de mosaico haciendo clic en un ícono textual de arte ascii en la barra de estado. El valor predeterminado es una disposición de área principal + área de apilamiento, representada por un '= glifo de carácter. Otros diseños estándar son un modo de ventana única "monóculo" representados por una M y una disposición no en mosaico flotante que permite que las ventanas se puedan mover y cambiar de tamaño, representado por una forma de pescado ><>. Parches de terceros existen para agregar una número áureo, basados en diseño Fibonacci, ventanas en mosaico horizontal y vertical basada en filas o un diseño de cuadrícula. La utilidad de menú basada en teclado dmenu, desarrollada para su uso con dwm, se utiliza con otros gestores de ventanas de mosaico como Xmonad y, a veces, también con otro software ligero como Openbox y uzbl.
* herbstluftwm: Un gestor de ventanas de mosaico manual (similar a i3 o Sway) que utiliza el concepto de etiquetas independientes del monitor como espacios de trabajo. Se puede ver exactamente una etiqueta en un monitor, y cada etiqueta contiene su propio diseño. Al igual que i3 y Sway, herbstluftwm se configura en tiempo de ejecución a través de llamadas IPC desde herbstclient.
* i3: Un gestor de ventanas en mosaico creado desde cero, basado en wmii. Tiene combinaciones de teclas similares a vi y trata los monitores adicionales como espacios de trabajo adicionales, lo que significa que las ventanas se pueden mover fácilmente entre monitores. Permite divisiones verticales y horizontales, diseños apilados y con pestañas y contenedores principales. Se puede controlar completamente desde el teclado, pero también se puede usar un mouse.
* i3-gaps: una bifurcación de i3 que permite espacios personalizables entre ventanas.
* Ion WM: Combina la ventanas en mosaico con una interfaz de tabulación: la pantalla se divide manualmente en regiones (marcos) que no se superponen. Cada marco puede contener una o más ventanas. Solo una de estas ventanas es visible y ocupa todo el marco.
* Larswm: Implementa una forma de ventanas en mosaico dinámico: la pantalla se divide verticalmente en dos regiones (pistas). La pista de la izquierda está llena de una sola ventana. La pista correcta contiene todas las demás ventanas apiladas una encima de la otra.
* LeftWM: Un gestor de ventanas en mosaico basado en la temática y el soporte de monitores grandes como ultrawides.
* Qtile: Un gestor de ventanas en mosaico escrito en Pyhton, configurable y extensible.
* Ratpoison: Una GNU Screen controlada por teclado para X.
* spectrwm: Un pequeño gestor de ventanas en mosaico dinámico y de reparentalización para X11. Intenta mantenerse fuera del camino para que el valioso espacio en pantalla se pueda usar para cosas mucho más importantes. Tiene valores predeterminados coherentes y no requiere que se aprenda un idioma para realizar ninguna configuración. Se esfuerza por ser pequeño, compacto y rápido. Anteriormente llamado scrotwm.
* StumpWM: Un derivado de Ratpoison controlado por teclado, que admite varias pantallas (por ejemplo, xrandr) que se pueden personalizar sobre la marcha en Common Lisp. Utiliza combinaciones de teclas compatibles con Emacs de forma predeterminada.
* wmii (gestor de ventanas mejorado 2): Admite la gestión de ventanas en mosaico y apilamiento con teclado extendido, ratón y control remoto basado en sistemas de archivos, reemplazando el paradigma del espacio de trabajo con un nuevo enfoque de etiquetado. La configuración predeterminada utiliza pulsaciones de teclas derivadas de las del editor de texto vi. El gestor de ventanas ofrece una configuración extensa a través de un sistema de archivos virtual, utilizando el protocolo del sistema de archivos 9P similar al ofrecido por Plan 9 de Bell Labs. Cada ventana, etiqueta y columna está representada en el sistema de archivos virtual, y las ventanas se controlan manipulando sus objetos de archivo (de hecho, el archivo de configuración es solo un script que interconecta los archivos virtuales). Este sistema RPC permite muchos estilos de configuración diferentes, incluidos los proporcionados en la distribución base en plan9port y bourne shell. La última versión 3.9 también incluye configuraciones en Python y Ruby. [24] La última versión admitía Xinerama, que se distribuía con su propio programa de menú basado en teclado llamado wimenu, con historial y finalización programable.
* xmonad: Un gestor de ventanas en mosaico extensible escrito en Haskell, que fue influenciado y ha influido desde entonces en dwm.

### Wayland

Wayland es un nuevo sistema de ventanas con el objetivo de reemplazar el sistema X Window. Solo hay unos pocos gestores de ventanas en mosaico que admiten Wayland de forma nativa.

#### Lista de administradores de ventanas de mosaico para Wayland

* Hyprland: Es un compositor dinámico de ventanas de mosaico para wayland que ofrece animaciones fluidas, mosaico dinámico y esquinas redondeadas.
* Sway: Es "un reemplazo directo para el gestor de ventanas en mosaico i3, pero para Wayland en lugar de X11. Funciona con su configuración i3 existente y es compatible con la mayoría de las funciones de i3, y algunos extras".
* Way Cooler: Way Cooler es un compositor de Wayland sin mantenimiento para el administrador de ventanas Awesome. Está escrito en C y, como Awesome, configurable usando Lua y ampliable con D-Bus.
* River: Es un compositor dinámico de ventanas de Wayland, con una configuración de tiempo de ejecución flexible, se mantiene y se actualiza periódicamente
* CageBreak es un compositor de mosaicos para wayland, basado en cage e inspirado en (Ratpoison), que se controla fácilmente a través del teclado y un socket de dominio unix.
* dwl: Es un compositor de wayland, que estaba destinado a llenar el mismo espacio en el mundo de Wayland que dwm ocupa en X11. Al igual que dwm, está escrito en C, tiene un código base pequeño y carece de cualquier interfaz de configuración además de editar el código fuente.

### Otros
#### Aplicaciones de mosaico

* El sistema operativo y de programación Oberon, de ETH Zúrich, incluye un administrador de ventanas de mosaico.
* El programa editor / sistema de ventanas / shell del programador Acme en Plan 9 es un administrador de ventanas en mosaico.
* Los teléfonos inteligentes Samsung Galaxy S3, S4, Note II y Note 3, que ejecutan una variante personalizada de Android 4, tienen una función de ventanas múltiples que permite al usuario colocar dos aplicaciones en mosaico en la pantalla del dispositivo. Esta función se integró en el inventario de Android a partir de la versión 7.0 "Nougat".
* La extensión Pop Shell, de Pop!_OS, puede agregar funcionalidades de administración de ventanas en mosaico a GNOME.
* El gestor de ventanas Amethyst de ianyh, que proporciona mosaicos de ventanas para macOS y se inspiró en xmonad.
Aunque as ventanas en mosaico no es el modo predeterminado de los gestores de ventanas en ninguna plataforma ampliamente utilizada, la mayoría de las aplicaciones ya muestran múltiples funciones internamente de manera similar. Los ejemplos incluyen clientes de correo electrónico, IDEs, navegadores web y ayuda contextual en Microsoft Office. Las ventanas principales de estas aplicaciones se dividen en ventanas acristaladas para las distintas pantallas. Los paneles suelen estar separados por un divisor que se puede arrastrar para permitir el cambio de tamaño. Las ventanas con paneles son una forma común de implementar una interfaz maestro-detalle.
Desarrollado desde la década de 1970, el editor de texto Emacs contiene una de las primeras implementaciones de ventanas en mosaico. Además, los Frames HTML pueden verse como una implementación de mosaico basada en lenguaje de marcado. El administrador de ventanas en mosaico extiende esta utilidad más allá de múltiples funciones dentro de una aplicación, a múltiples aplicaciones dentro de un escritorio. La pestaña puede ser un complemento útil para el mosaico, ya que evita tener varios mosaicos de ventanas en la pantalla para la misma función.