Sistema de ventanas
En informática, un sistema de ventanas (o sistema de ventanas) es un software que gestiona por separado diferentes partes de las pantallas. Es un tipo de interfaz gráfica de usuario (GUI) que implementa el paradigma WIMP (ventanas, iconos, menús, puntero) para una interfaz de usuario.
A cada aplicación que se está ejecutando actualmente se le asigna una superficie de la pantalla generalmente redimensionable y generalmente rectangular para presentar su GUI al usuario; estas ventanas pueden superponerse entre sí, a diferencia de una interfaz de mosaico en la que no se permite que se superpongan. Por lo general, se dibuja una decoración de ventana alrededor de cada ventana. La programación tanto de la decoración de la ventana como de los widgets disponibles dentro de la ventana, que son elementos gráficos para la interacción directa con el usuario, como controles deslizantes, botones, etc., se facilita y simplifica mediante el uso de kits de herramientas de widgets.
Detalles técnicos
El componente principal de cualquier sistema de ventanas suele denominarse servidor de visualización, aunque también se utilizan denominaciones alternativas como servidor de ventanas o compositor. Cualquier aplicación que se ejecuta y presenta su GUI en una ventana, es un cliente del servidor de visualización. El servidor de visualización y sus clientes se comunican entre sí a través de un protocolo de comunicaciones, que suele denominarse protocolo de servidor de visualización, siendo el servidor de visualización el mediador entre los clientes y el usuario. Recibe toda la entrada del kernel, que el kernel recibe de todos los dispositivos de entrada adjuntos, como el teclado, los dispositivos señaladores o la pantalla táctil, y la transmite al cliente correcto. El servidor de visualización también es responsable de la salida de los clientes al monitor de la computadora. La salida de sonido generalmente no es administrada por el servidor de visualización, pero el volumen de sonido generalmente se maneja a través de subprogramas GUI y es el servidor de visualización quien decide qué aplicaciones están en la parte superior. Un sistema de ventanas permite al usuario de la computadora trabajar con varios programas al mismo tiempo. Cada programa presenta su GUI en su propia ventana, que generalmente es un área rectangular de la pantalla.
Desde el punto de vista de un programador, un sistema de ventanas implementa primitivas gráficas. Por ejemplo: representar fuentes o dibujar una línea en la pantalla. Proporciona una abstracción del hardware de gráficos para que lo utilicen los elementos de nivel superior de la interfaz gráfica, como un administrador de ventanas.
Un protocolo de servidor de visualización puede ser compatible con la red o incluso transparente, lo que facilita la implementación de clientes ligeros.
Servidor de visualización
Un servidor de pantalla o servidor de ventanas es un programa cuya tarea principal es coordinar la entrada y salida de sus clientes hacia y desde el resto del sistema operativo, el hardware y entre sí. El servidor de visualización se comunica con sus clientes a través del protocolo del servidor de visualización, un protocolo de comunicaciones, que puede ser transparente a la red o simplemente compatible con la red.
El servidor de visualización es un componente clave en cualquier interfaz gráfica de usuario, específicamente el sistema de ventanas.
Mostrar protocolos de comunicaciones del servidor
X11
Un ejemplo de un servidor de visualización es el servidor X.Org, que se ejecuta sobre el kernel (generalmente un kernel similar a Unix, como Linux o BSD). Recibe datos de entrada del usuario (por ejemplo, de evdev en Linux) y los pasa a uno de sus clientes. El servidor de visualización también recibe datos de sus clientes; procesa los datos, hace la composición y en Linux pasa los datos a uno de los tres componentes del kernel: DRM, gema o controlador KMS. El componente escribe los datos en el framebuffer y el contenido del framebuffer se transmite a la pantalla conectada y se muestra. X confía en GLX.
Una de las implementaciones del concepto de servidor de pantalla es X Window System, en particular su versión actualmente utilizada: X.Org Server y las bibliotecas cliente Xlib y XCB. El servidor X.Org es un servidor de visualización, pero en su implementación actual se basa en un segundo programa, el administrador de ventanas de composición, para realizar la composición. Algunos ejemplos son Mutter o KWin.
Ejemplos notables de servidores de visualización que implementan el protocolo de servidor de visualización X11 son X.Org Server, XFree86, XQuartz y Cygwin/X, mientras que las bibliotecas cliente que implementan el protocolo de servidor de visualización X11 son Xlib y XCB.
Wayland
Los servidores de visualización que implementan el protocolo de servidor de visualización de Wayland se denominan compositores de Wayland. Como cualquier servidor de visualización, un compositor de Wayland es responsable de manejar la entrada y la salida para sus clientes y, a diferencia de X11, además de la composición. Algunos ejemplos son Weston, Mutter, KWin o Enlightenment.
Los compositores de Wayland se comunican con los clientes de Wayland a través del protocolo del servidor de visualización de Wayland. Este protocolo define que los clientes pueden escribir datos directamente en el búfer de fotogramas utilizando la API de representación de EGL. El servidor de visualización aún puede decidir qué ventana está en la parte superior y, por lo tanto, visible para el usuario y también es responsable de pasar los datos relacionados con los dispositivos de entrada de evdev a sus clientes.
Wayland se usa hasta cierto punto en algunas distribuciones de escritorio de Linux, como Fedora. También es muy adecuado para la informática móvil y ha sido adoptado, por ejemplo, por los proyectos centrados en teléfonos inteligentes y tabletas Tizen, Sailfish OS y AsteroidOS.
Una implementación de Wayland está disponible bajo la licencia MIT, las bibliotecas libwayland-client y libwayland-server.
Hay un esfuerzo continuo para agregar compatibilidad con Wayland a ChromeOS.
Mir
El servidor de visualización Mir viene con su propio protocolo de servidor de visualización Mir, que es diferente de los utilizados por X11 y Wayland. Mir también es compatible con el protocolo X11. Fue desarrollado por Canonical y estaba destinado a ser el servidor de visualización elegido para Ubuntu. A partir de 2017, se reemplazó con el servidor de visualización Wayland para las ediciones de escritorio de Ubuntu.
Hay implementaciones del servidor de visualización Mir, el servidor libmir y las bibliotecas cliente libmir disponibles bajo la licencia GPLv3.
Lanzador de superficie
Google desarrolló un servidor de visualización llamado SurfaceFlinger para Android (otro sistema operativo basado en el kernel de Linux principalmente para dispositivos móviles):
Todo en Android se representa en una "superficie"; "superficies" son producidos por aplicaciones y colocados en una cola administrada por SurfaceFlinger.
Otra solución específica de Android es "Gralloc". Gralloc maneja la memoria del dispositivo, es decir, hace la asignación, el arbitraje, maneja la sincronización a través de los descriptores de archivos de cerca de Android/Linux. Gralloc compite con otras soluciones como p. Generic Buffer Management (GBM) de Mesa o EGLStreams de Nvidia. La capa de abstracción de hardware (HAL) de Gralloc se utiliza para asignar los búfer que subyacen a las "superficies".
Para la composición en Android, las superficies se envían a SurfaceFlinger, que utiliza OpenGL ES para realizar la composición.
Hardware Composer HAL (HWC) se introdujo en Android 3.0 y ha evolucionado constantemente a lo largo de los años. Su propósito principal es determinar la forma más eficiente de crear búferes compuestos con el hardware disponible. Como HAL, su implementación es específica del dispositivo y, por lo general, la realiza el OEM del hardware de visualización.
Compositora de cuarzo
(feminine)Para la familia de sistemas operativos macOS de Apple, Quartz Compositor cumple las tareas de un servidor de visualización y de un administrador de ventanas en el sistema de ventanas.
Administrador de ventanas de escritorio
Para Microsoft Windows, desde Windows Vista en adelante, Desktop Window Manager permite el uso de aceleración de hardware para representar la interfaz gráfica de usuario. Originalmente se creó para habilitar partes del nuevo "Windows Aero" experiencia del usuario, que permitió efectos como transparencia, cambio de ventana 3D y más. También se incluye con Windows Server 2008, pero requiere la "Experiencia de escritorio" características y controladores de gráficos compatibles que se instalarán. Desde Windows 8 en adelante, DWM no se puede deshabilitar y se renderiza mediante software si no se instala una tarjeta gráfica adecuada.
Lista de sistemas de ventanas
Para sistemas operativos similares a Unix
- 81⁄2 y rio para el Plan 9
- Framebuffer UI in-kernel windowing system
- HP Windows/9000 (sobre versiones tempranas de HP-UX)
- zafiro para el PERQ
- ManaGeR (MGR)
- Metisse
- Mir
- NeWS / OpenWindows
- NeXT DPS
- Orbital (Redox)
- Qt Extendido
- Compositor de cuarzo (Mac OS X)
- SunView
- Twin (Text WINdows)
- W Window System
- Wayland
- X Window System
- XFast
- Xynth
Para sistemas operativos de la familia Windows NT
- Administrador de Ventanas de Escritorio (DWM) en Microsoft Windows (Vista y más tarde)
- ReactOS Explorer
- Clásico Shell
- Pokki
- RetroUI
- Talisman Desktop
Sistemas de ventanas web
- Dojo
- ExtJS
- TIBCO Interfaz general
- Web Window Manager
Otro
- DM
- GEM
- Intuición
- Microventanas
- MiniGUI
- OOHG
- Visi On
- VWS (VAX Workstation Software)
Algunos sistemas, como Microsoft Windows (XP, 9x y anteriores), el Mac OS clásico (versión 9 y anteriores) y Palm OS, contienen un sistema de ventanas que está integrado con el sistema operativo.
Contenido relacionado
Modulador electro-óptico
Tránsito (satélite)
Alison V-1710