# Gestor de ventanas

Un gestor de ventanas o manejador de ventanas es un programa informático que controla la ubicación y apariencia de las ventanas bajo un sistema de ventanas en una interfaz gráfica de usuario.
Las acciones asociadas al gestor de ventanas suelen ser, abrir, cerrar, minimizar, maximizar, mover, escalar y mantener un listado de las ventanas abiertas. Es también muy común que el gestor de ventanas integre elementos como: el decorador de ventanas, un panel, un visor de escritorios virtuales, iconos y un tapiz.
Las plataformas Windows, Haiku OS (software libre MIT) y Mac OS X ofrecen un gestor de ventanas estandarizado por sus vendedores y/o desarrolladores e integrado en el propio sistema operativo. En cambio el sistema de ventanas X Window System, popular en el ámbito de sistemas Unix y similares, como GNU/Linux, permite al usuario escoger entre varios gestores. Los gestores de ventanas difieren entre sí de muchas maneras, incluyendo apariencia, consumo de memoria, opciones de personalización, escritorios múltiples o virtuales y similitud con ciertos entornos de escritorio ya existentes, entre otras.

## X Window Managers

En sistemas que usan el X Window System, hay una clara distinción entre el gestor de ventanas y el sistema de ventanas. Estrictamente, un gestor de ventanas para X Window System, no interactúa de forma directa con el hardware de vídeo, ratón o teclado, que son responsabilidad del servidor X.

### Gestores de ventanas para X Window System
#### Populares

* AfterStep, basado en FVWM y de apariencia similar a NeXTSTEP. Página oficial de AfterStep
* AmiWM (Amiga Window Manager). Página Web de AmiWM
* Blackbox. Sitio Oficial de Blackbox (enlace roto disponible en Internet Archive; véase el historial, la primera versión y la última).
* CTWM. Sitio Web de CTWM
* Enlightenment (también llamado 'E'), basado originalmente en fvwm2. Sitio Oficial de Enlightement
* Fluxbox, derivado de la versión 0.61.1 de Blackbox. Sitio Web de Fluxbox
* FVWM. Página oficial de FVWM
* FVWM95, versión modificada de fvwm2.x para que tome el aspecto de Windows 95.
* IceWM. Sitio Oficial de IceWM
* Ion WM
* Kwin, gestor de ventanas de KDE.
* Metacity, el gestor de ventanas ligero de algunas versiones de GNOME 2.
* Metisse, gestor de ventanas en 3D basado en otro gestor de ventanas, FVWM),
* Motif (Motif Window Manager).
* OLWM/OLVWM (OpenLook Window Manager / OpenLook Virtual Window Manager). Página oficial de Olvwm
* Openbox, inicialmente basado en Blackbox y luego reescrito de cero, con varias ventajas incluyendo fuentes 'anti-alising'.
* quartz-wm, gestor de ventanas de Apple, de aspecto similar a Aqua, para el sistema X Window (X11) en Mac OS X.
* Sawfish, originalmente conocido como Sawmill. Sitio Oficial de Sawfish
* SCWM. Sitio Oficial de SCWM
* TWM/ VTWM (Tab Window Manager, también llamado Tom's Window Manager / Virtual TWM).
* WindowMaker, emula la interfaz de NeXT, como AfterStep. Sitio Oficial de WindowMaker
* wm2/wmx. Página de wm2 y de wmx

#### Otros gestores de ventanas

* 3Dwm, con aspecto tridimensional.
* 4Dwm, MWM mejorado de SGI.
* 5dwm
* 9wm, imita al Plan 9 window manager 8-1/2.
* aewm, basado en 9wm.
* aewm++, también basado en aewm pero con características más modernas.
* Alloywm, otro gestor de ventanas basado en aewm.
* Amaterus
* awm (Ardent Window Manager)
* B4step, un gestor de ventanas para Linux y Solaris.
* BadWM, un gestor de ventanas minimalista con un buen control por teclado.
* Clementine, un pequeño y rápido gestor de ventanas basado en aewm pero reescrito en C++.
* dxwm
* Eclipse (gestor de ventanas), escrito totalmente en Lisp.
* Efsane II
* EPIwm
* Evilwm, un gestor de ventanas minimalista derivado de aewm, con algunas adiciones en el área del control por teclado.
* flwm (Fast Light Window Manager), basado en wm2.
* Framer, un simple gestor de ventanas para el entorno de escritorio ROX.
* Golem (gestor de ventanas), un gestor de ventanas pequeño que soporta temas, plugins y visualización multi-pantalla.
* GWM (Generic Window Manager), un viejo gestor de ventanas extensible.
* GwML
* Hackedbox, una versión hackeada de blackbox, con barra de herramientas.
* HaZe, basado en mlvm.
* Heliwm
* hpwm (HP's Window Manager), con aspecto 3D es el precursor de mwm.
* Interface WM, escrito en objective-c y optimizado para aplicaciones GNUstep.
* Ion, gestor de ventanas tabulado pensado para usuarios del teclado.
* JWM (Joe's Window Manager), un simple gestor de ventanas basado en Xlib.
* Kahakai basado en Waimea con soporte de scripts para varios idiomas.
* larswm, otro hack de 9wm.
* lwm (Lightweight Window Manager), sin iconos y ni barra de botones.
* m swm (Sigma Window Manager)
* Maewm, otro hack de aewm.
* Matchbox, un gestor de ventanas pequeño, sólo requiere Xlib, diseñado para ordenadores con pantallas pequeñas, incluyendo PDAs y teléfonos.
* Mavosxwm, un gestor de ventanas minimalista.
* MIWM (Microscopic Window Manager), un gestor de ventanas minimalista escrito en C++ y con soporte para escritorios virtuales.
* mlvwm (Macintosh Like Virtual Window Manager), un gestor de ventanas virtual con apariencia similar al Mac OS clásico.
* Mosquito (gestor de ventanas), otro pequeño gestor de ventanas.
* mvwm, un gestor de ventanas virtual estilo vtwm.
* mwm 2.0, esta versión de mwm incluye soporte para múltiples 'workspaces'.
* NCDwm, el gestor de ventanas local para terminales NCD con aspecto similar al mwm.
* NovaWM, un gestor de ventanas muy nuevo.
* Oroborus, un simple gestor de ventanas con soporte GNOME, temas y control total por teclado.
* OSWM, el gestor de ventanas versión OPENSTEP de Sun (OPENSTEP está basado en NeXT y Sun).
* PAWM, diseñado para ser simple, pequeño y funcional.
* Pekwm, otro basado en aewm++ con 'ventanas tabuladas' (grupo de ventanas juntas en un solo marco), menús jerarquizados, y Xinerama.
* Perlwm, escrito en Perl.
* Phluid, otro basado en aewm.
* piewm, versión de tvtwm que ofrece 'Menús Pastel' (pie menus).
* PLWM (Pointless Window Manager), gestor de ventanas altamente modularizado escrito en Python.
* pmwm IXI's Panorama version of MWM offers olvwm-like features.
* pswm. Basado en PostScript de Sun pswm es parte de OpenWindows.
* Puppet, escrito en Java.
* PWM, un gestor de ventanas ligero.
* PyWM (Python Window Manager), gestor de ventanas pequeño y programable basado en FLWM.
* QLWM, un gestor de ventanas pequeño y eficiente basado en Qt 2.x.
* qvwm, de apariencia similar a Windows 95.
* Ratpoison, un gestor de ventanas simple sin gráficos fantásticos ni ventanas decorativas.
* rtl, gestor de ventanas de Siemen.
* Stumpwm, escrito en Lisp.
* sswm (Solbourne's swm).
* Swm (Small Window Manager), diseñado para entornos con poca memoria y pantalla pequeña tales como ordenadores portátiles y PDAs.
* tekwm (Tektronix's Window Manager).
* Treewm
* TrsWM, basado en Ion permite de manera fácil manejar las ventanas usando sólo el teclado.
* tvtwm (Tom's Virtual Tab Window Manager), basado en Tab Window Manager.
* Ultimate Window Manager (uwm), un gestor basado en pie menus (menús circulares)
* uwm (Universal Window Manager), el gestor de ventanas simple.
* vuewm, gestor de ventanas de HP basado en MWM HP's que ofrece 'workspaces' configurables.
* w9wm, gestor de ventanas w9wm con pantallas virtuales.
* Waimea, un gestor de ventanas rápido y altamente personalizable que usa la biblioteca de gráficos Cairo.
* WindowLab, gestor de ventanas pequeño y simple basado en aewm, con algunas adiciones nuevas.
* wm, un gestor de ventanas muy primitivo, originalmente diseñado como ayuda para la depuración del servidor X11. Desfasado con X11R2.
* wmG, A small GTK-based window manager that is GNOME-compliant, partially Mwm compliant, and fully ICCCM compliant.
* WMI, combina las mejores características de larsWM, Ion, evilwm, y ratpoison.
* WWM (Weird Window Manager), bastante básico no ha sido actualizado durante mucho tiempo.
* XDSwm
* XIGE (Xilicius Graphical Environment), un gestor de ventanas nuevo y rápido optimizado para programadores.
* XWEM, escrito en Emacs Lisp.
* xwm, posiblemente el primer gestor de ventanas (fechado en 1985), antes incluso que el propio X11 (el Sistema X Window).
* YWM, un gestor de ventanas intuitivo y rápido.
* ZWM, basado en SDL.

## Microsoft Windows

Microsoft Windows XP permite al usuario cambiar un número limitado de opciones de gestión de ventanas, principalmente estéticos.
Windows Vista tiene integrado un gestor de composición de ventanas llamado Desktop Window Manager. Este gestor de ventanas puede ser usado por varias interfaces de usuario con distintos niveles de sofisticación. Por defecto usa el entorno cristal de Windows Aero con aceleración 3D.
El Explorador de Windows (explorer.exe) se usa por defecto en los sistemas Windows modernos para proporcionar un administrador de archivos y paneles, junto con muchas funciones de un gestor de ventanas; aspectos de Windows pueden modificarse a través de las utilidades de configuración proporcionadas, modificando el registro de Windows o con herramientas de terceros, como Resource Hacker.

## Haiku OS

Haiku OS heredo su gestor de ventanas de si se pudiera decir así, su padre el sistema operativo BeOS, sistema operativo del cual se vendió su kernel y que cuando este fue vendido por BE inc a la empresa fabricante de PDA, Palm, Be inc sus anteriores dueños liberan previamente el gestor de ventanas y otros programas que conformaban el sistema beos como software libre bajo la licencia MIT, dejando abierta la puerta para la creación de un kernel que pudiera llenar el vacío y así a partir del kernel que inicialmente se conoció como NewOS creció hasta lo que hoy conocemos como Haiku OS.
Aparte de las funciones comunes como agarrar, escalara etc, la interfase de Haiku OS provee una facultad única, que da sentido al por qué sus ventanas están enmarcadas en una pestaña amarilla y no con una barra como suele ser común en otros sistemas operativos, dicho motivo, se conoce como ¨Stack & Tile¨ y es la facultad de usar cualquier ventana del sistema operativo como se usan las pestañas en un navegador pero independiente de la aplicación puedes sobre poner varias aplicaciones en una sola ventana oprimiendo la tecla win, a esto podemos sumarle que si en vez de poner la ventana encima de otra para fusionarla la acercamos a sus bordes estas ventanas se pegan sumándose como si de una sola ventana se tratara pero con dos contextos de pestaña, esta función es única en Haiku OS hasta el momento.

## Mac OS X

Mac OS X tiene su propio sistema y gestor de ventanas integrado. Sin embargo, es posible usar el X Window System y gestores de ventanas para este, como XMonad.

## Otros

Existen gestores de ventanas para entornos menos comunes, como Webwm, un gestor de ventanas para páginas web.

## Tipos de gestor de ventanas

Los gestores de ventanas pueden ser divididos en tres clases según la forma en la que manejan las ventanas. Esta categorización no es estrictamente excluyente, ya que hay gestores de ventanas que implementan características de varias categorías.

### Gestores de composición de ventanas

Los gestores de composición de ventanas permiten que todas las ventanas se creen y dibujen de forma separada y después sean combinadas y dibujadas en varios entornos 2D y 3D. Esto permite una gran variedad de estilos de interfaz y la presencia de efectos visuales 2D y 3D.
Mac OS X fue el primer sistema operativo empaquetado con un gestor de composición de ventanas. Al cual siguieron distribuciones de Linux gracias a Compiz y otros, y más tarde Windows Vista.

### Gestores de ventanas de pila

Todos los gestores de ventanas que tienen ventanas superpuestas y no gestionan composición son gestores de ventana de pila o stacking window managers, aunque no todos utilizan las mismas metodologías. Estos gestores permiten que varias ventanas se solapen dibujando primero las ventanas que están más al fondo.

### Gestores de ventanas de mosaico

Los gestores de ventana de mosaico o tiling window managers posicionan todas las ventanas ocupando toda la pantalla sin solaparse. Por eso se dice que sitúa las ventanas en una especie de mosaico, Microsoft Windows 1.0 usa este tipo de posicionamiento y en la actualidad existen muchos gestores de este tipo para X Window.