¿Qué coño es un gestor de iconos?, dices mientras clavas tu pupila en mi pupila azul. ¿Y tú me lo preguntas? Gestor de iconos eres...
Bueno, como ocurre con todos los campos del conocimiento humano, por recónditos y estrafalarios que parezcan —desde la física de partículas a las partidas de guiñote—, el de las interfaces de escritorio para ordenador también posee su propia jerga, más o menos impenetrable para el que se asoma desde fuera. Así que aquí van algunas definiciones y conceptos explicados, con el fin de hacer mis comentarios más fáciles de entender.
Por orden alfabético:
La bandeja del sistema o —como prefiere Microsoft— área de notificaciones de Windows 7, en el extremo derecho de la barra de tareas.
En algunos entornos de escritorio, la bandeja del sistema o «área de notificaciones» es un elemento de la interfaz desde el cual el usuario puede recibir avisos de programas en ejecución o interactuar con ellos de forma rápida, y también controlar ciertas funciones del sistema operativo. Entre estas últimas, casos habituales son el volumen del sonido, la carga de las baterías de los portátiles o la resolución del monitor. Y entre las aplicaciones que suelen dejar un iconito de control ahí encontramos antivirus y otras herramientas importantes que deben funcionar en segundo plano durante largos intervalos.
Normalmente se ubica en algún rincón de paneles o barras de tareas, aunque no tiene por qué ocurrir siempre así: en los gestores de ventanas que reservan un área de la pantalla para dockapps —Window Maker, Blackbox, Pekwm, etc— es posible colocar en ella una bandeja del sistema mediante utilidades como Wmsystemtray .
La idea procede de Windows 95, y desde entonces ha sido adoptada con más o menos variaciones por otros entornos de escritorio. En el mundo de Unix existe desde 2002 un protocolo estándar para evitar múltiples implementaciones incompatibles; antes de él, en efecto, algunos proyectos desarrollaron bandejas del sistema por su cuenta.
Nótese que en teoría la denominación más correcta para la bandeja del sistema sería «área de notificaciones», y los responsables de Windows llevan años insistiendo en ello . Pero esa batalla la tienen perdida. Ante la duda, yo he preferido seguir aquí la costumbre mayoritaria para no confundir al lector; lo siento, Microsoft.
Bueno, ¿ésta es fácil, no? Las barras de tareas llevan entre nosotros desde los tiempos de Windows 95, existen en todas las interfaces de escritorio mayoritarias, y son un elemento cotidiano para tanta gente que seguramente no necesitan presentación.
En principio, una barra de tareas es un panel alargado —con forma de barra, vaya— que sirve para mostrar qué programas o ventanas están abiertos en un momento dado. Claro, con el tiempo se han ido añadiendo otros complementos —menús de aplicaciones, relojes, etc—, pero su función principal es que el usuario pueda ver rápidamente qué se está ejecutando en su sesión de trabajo.
Usualmente se sitúan en el extremo inferior de la pantalla, pero no tiene por qué ser siempre así. De hecho, una posibilidad poco utilizada de las versiones recientes de Windows es la de reubicar la barra de tareas en cualquiera de los bordes del escritorio, incluso alineada verticalmente.
Algunos ejemplos:
Cuando el usuario arranca un programa, ¿dónde colocará el ordenador la nueva ventana correspondiente? Vale, es un asunto nimio, porque uno luego puede moverla donde quiera. Pero vienen a existir, simplificando bastante, las siguientes soluciones al problema:
Smart Window Placement. Consiste en que, al crearse, las ventanas se van repartiendo por el escritorio tratando de aprovechar al máximo el espacio libre, y obstruyéndose lo menos posible unas a otras. Existen multitud de algoritmos sutilmente distintos para lograrlo. Gestores como Fluxbox la emplean por defecto, y muchos otros la incluyen como opcional; actualmente se trata de una característica bastante extendida.
Por supuesto, estos conceptos se aplican sólo a los gestores de pila. Los de mosaico funcionan con una premisa diferente: encajan las ventanas en una cuadrícula y no permiten que floten por el escritorio, precisamente para evitar que unas queden ocultas debajo de otras.
Tomadas de una captura de AfterStep, un par de dockapps: Wmnd —un monitor del tráfico de red—, y ASClock .
Las dockapps son pequeños accesorios para el escritorio, usualmente paneles cuadrados de 64x64 píxeles. Existen muchas de ellas, con gran variedad de funciones; pero las más recurridas son medidores de temperatura o carga de trabajo de la CPU, relojes, controles de volumen del sonido y otras cosas parecidas. Generalmente se alojan en un área de la pantalla reservada para ellas, llamada de muchas maneras —aunque el apelativo más común es «dock», claro—.
La idea se introdujo por primera vez en NeXTStep , un sistema operativo hoy desaparecido, pero históricamente muy relevante —fue, por ejemplo, el precursor de Mac OS X—. En Unix se popularizó gracias a Window Maker y AfterStep, dos gestores de ventanas inspirados precisamente en la interfaz de NeXTStep; y de ahí ha pasado a muchos otros, con ejemplos tan notorios como Fluxbox.
Las versiones recientes de Windows cuentan con los llamados gadgets, que funcionalmente vienen a ser más o menos lo mismo.
Mientras que un gestor de ventanas sólo provee las funciones básicas para trabajar con ventanas —aunque muchas veces con añadidos como menús de aplicaciones o barras de tareas—, los entornos de escritorio van mucho más allá, y pretenden ser soluciones completas para utilizar el ordenador. La distinción puede resultar en ocasiones poco nítida, porque gestores como Enlightenment o FVWM 2 también trascienden en cierto modo ese estrecho concepto de «dibujar ventanas en el escritorio y permitirle al usuario manejarlas».
Así, de un entorno de escritorio se esperan cosas como un paquete más o menos homogéneo de aplicaciones básicas —un editor de textos, un explorador de archivos, etc—, control de sesiones, o un conjunto coherente de diálogos de configuración que abarque todos los aspectos del sistema. Luego, claro, hay cosas tan ambiciosas como KDE, y entornos más minimalistas como LXDE o Equinox.
En el mundo de Windows, y a no ser que uno emplee herramientas de terceros —por ejemplo, VirtuaWin —, el escritorio del ordenador es el área de trabajo que abarca la pantalla. Nada más. Y sólo existe uno. Esto puede volverse bastante incómodo cuando hay muchas aplicaciones abiertas, cada una con su correspondiente ventanita y todas ellas peleando por el espacio disponible.
En cambio, en Unix, ese país anárquico donde cada programador puede experimentar con el X Window System y construir la interfaz gráfica de sus sueños, muchos usuarios pensaron que el área del monitor es demasiado pequeña. Y para resolver esta necesidad —«¡más sitio para nuestras ventanas!»— aparecieron los llamados escritorios virtuales.
El concepto puede resultar algo confuso, porque ha ido evolucionando con los años, y bajo la etiqueta podemos encontrar dos cosas distintas:
Además, hay que tener en cuenta que las dos variantes no son excluyentes: gestores de ventanas como FVWM permiten usar muchos espacios de trabajo, cada uno de los cuales puede ser a su vez un escritorio virtual mucho más grande que el área mostrada por el monitor.
EWMH significa Extended Window Manager Hints
, y se trata de una serie de especificaciones pensada para mejorar la interacción entre aplicaciones y gestores de ventanas. Amplía otro estándar anterior, el ICCCM. Su última revisión data de 2011.
Conocido también como NetWM.
El gestor de iconos de Twm. Las ventanas marcadas con la equis se hallaban en ese momento minimizadas.
Más conocido por su nombre en inglés, icon manager
, aunque también se le podría llamar, supongo, «gestor de tareas», que quizás resulte más descriptivo.
Antes de que se popularizasen las barras de tareas en las interfaces de escritorio, lo habitual en ellas era que, al minimizar las ventanas abiertas, éstas se convirtiesen en iconos en el escritorio —por poner un ejemplo famoso, ¿recordáis Windows 3.1?—. Esto resultaba bastante práctico en sesiones ligeras con pocas aplicaciones en uso, pero se volvía caótico cuando el usuario intentaba trabajar con muchas a la vez —«¿dónde demonios dejé el iconito de la ventana del editor de textos?»—.
Y para poner algo de orden en estas sesiones de trabajo congestionadas, se inventaron los gestores de iconos. En realidad, vienen a funcionar como barras de tareas, sólo que no tienen forma de barra ni un lugar fijo en el escritorio; consisten simplemente en una ventana que muestra una lista de todas las demás, y permite al usuario ir minimizándolas, restaurándolas o trayéndolas a primer plano. Presentes en Twm y los gestores que derivaron directamente de él, y en alguno más que implementó la idea por su cuenta.
Imagino que los lectores que aterricen aquí ya tendrán el concepto bastante claro, pero por si acaso aquí va una pequeña explicación...
El gestor de ventanas es el programa que controla la apariencia y comportamiento de las ventanas en una interfaz gráfica. Nada más, nada menos. Puede parecer un asunto bastante estrecho y poco interesante, pero existen muchos modos de cumplir esta función. Algunos gestores —el DWM que utiliza Windows, por ejemplo— son sólo pequeñas piezas de los entornos de escritorio a que pertenecen, mientras que muchos otros están concebidos para usarse en solitario y tienen relevancia por sí mismos.
Xmonad, un ejemplo de gestor de ventanas de mosaico. Hay tres aplicaciones abiertas y repartiéndose todo el espacio de la pantalla. (Imagen tomada de Wikipedia).
En realidad, el hecho de poder escoger un gestor de ventanas u otro, con decenas de ellos disponibles para experimentar, se trata de una particularidad de Unix —más concretamente de su parte gráfica, el X Window System—; otros sistemas cuentan con un diseño más monolítico, que hace mucho más complicado reemplazar componentes alegremente.
A grandes rasgos, los gestores de ventanas para el X Window System vienen en dos variedades:
Tiene nombre de misil, pero es el Inter-Client Communication Conventions Manual, un estándar que establece mecanismos de interacción entre aplicaciones bajo el X Window System. Detalla entre otros asuntos cómo cortar y pegar datos entre ellas, propiedades de las ventanas accesibles por terceros —WM_NAME
, WM_CLASS
, etc—, o ciertas facetas del control de sesiones. Se trata de un texto largo, notorio por su aridez. La versión vigente hoy data de 1994.
Expandir una ventana hasta que ocupe toda la pantalla, aunque generalmente suele reservarse espacio para que las barras de tareas u otros paneles informativos sigan siendo visibles. Algunos gestores como Flwm permiten maximizar las ventanas en una sola dirección —horizontal o vertical—, y otros como FVWM 2 dan al usuario la posibilidad de fijar tamaños arbitrarios.
Hacer desaparecer una ventana del escritorio pero sin cerrar la aplicación correspondiente. Existen varias modalidades:
Una captura de Mwm; los iconos grises de la parte inferior representan cada uno a una ventana minimizada.
¿Cómo determinar qué ventana recibe las acciones del usuario —es decir, «está enfocada»—? Es otro de esos detallitos en los que nadie pensamos, hasta que al usar distintas interfaces gráficas nos damos cuenta de que existen varias respuestas:
Éstas son las ideas básicas. Luego existen diversas variantes; por ejemplo, hay gente que prefiere que el foco siga al ratón, y lo combina con que las ventanas enfocadas suban a primer plano.
En un escritorio con ventanas flotantes forma parte de la rutina habitual que el usuario las mueva por la pantalla para organizarlas a su gusto. Nada de particular aquí; sólo comentaré que existen dos modos de ilustrar estos desplazamientos:
El movimiento transparente se utilizó mayoritariamente en entornos gráficos antiguos, más o menos hasta finales de los noventa —Windows 95, AmigaOS 3.1, Mac OS clásico—, debido a las limitaciones del hardware de la época. El movimiento opaco, muy común en la actualidad, resulta más natural para el usuario pero también más exigente con los recursos del ordenador, sobre todo si se trabaja con ventanas grandes.
Con algunas excepciones entre los más minimalistas, los gestores de ventanas permiten escoger entre un método y otro.
Otro nombre del estándar EWMH.
Un pager típico, en este caso el de Olvwm. Su función es bastante obvia.
Con la aparición de los escritorios virtuales se hizo necesaria alguna herramienta que indicase claramente al usuario dónde se hallaban todas sus ventanas. Y así surgieron los pagers, que algunos hispanohablantes llaman también «paginadores». En un principio se trataba de pequeñas ventanitas siempre visibles, colocadas normalmente en una esquina de la pantalla, que contenían una especie de mapa de la sesión de trabajo. En las interfaces modernas siguen usándose, pero resulta más habitual verlos integrados en paneles y barras de tareas —como ocurre en JWM o IceWM—.
Además de servir de guía, la mayoría de los pagers permiten manipular ventanas mediante sus representaciones en miniatura, por ejemplo arrastrándolas de un lado a otro del escritorio virtual.
Cuando se emplean escritorios virtuales o espacios de trabajo independientes, se denomina «pegajosa» —normalmente en inglés, «sticky window»— a la ventana que resulte visible en todos ellos. El término nació porque en los primeros gestores que implementaron la idea, con escritorios virtuales contiguos y más grandes que la pantalla —Tvtwm, FVWM, etc—, estas ventanas parecían «acompañar» siempre al usuario en sus movimientos por ellos. Esta función suele utilizarse en relojes y otros accesorios que conviene mantener a la vista en todo momento.
En el X Window System todas las ventanas están organizadas en un árbol jerárquico. La primera de ellas, que contiene a las demás y queda por tanto debajo de ellas, es la ventana raíz o «root window»: para explicarlo de una forma rápida que todo el mundo entienda, el fondo del escritorio. De hecho, al poner una imagen como fondo mediante utilidades como Feh lo que estamos haciendo es pintar en esa ventana raíz.
Algunos gestores y entornos de escritorio —Tvtwm, XPde, etc— la ocultan bajo otras capas, sobre las cuales dibujan sus propias ventanas.
Tres exploradores de archivos usando distintos toolkits: de arriba a abajo, XVFilemanager (XView), Xfm (Xaw3D), y Konqueror (Qt).
Un toolkit es un conjunto de librerías con funciones comunes, usadas en programación para no tener que reescribir una y otra vez los componentes más básicos de cada programa.
Para entendernos, un ejemplo. Supongamos que el señor X está trabajando en el «Programa Malvado Que Lanzará Los Misiles Nucleares Rusos Sobre Occidente», y ha llegado a la etapa de diseñar una interfaz gráfica, para que el simio encargado de apretar el famoso botón rojo logre cumplir su tarea fácilmente. El señor X podría dibujar artesanalmente cada elemento —aquí habrá un menú, de tal tamaño, con tal forma, usando tal fuente de texto, que se desplegará hacia abajo cuando el usuario pulse tal tecla, y que...—, pero probablemente querría usar un toolkit como Motif o GTK2, que ya incluyen todo tipo de botones y diálogos predefinidos.
La última opción posee varias ventajas, mayormente dos: un ahorro obvio de faena, y el hecho de dotar al «Programa Malvado» de una interfaz con una estética y funcionamiento similares al de otras aplicaciones que empleen el mismo toolkit. Por seguir ilustrando el ejemplo, si el señor X se decanta por GTK2 y los ordenadores de los silos de misiles usan Gnome como entorno gráfico, el simio encargado de lanzar el ataque nuclear se encontrará con un programa bastante predecible y en armonía con el resto de su escritorio. ¿Conclusión? El señor X acabará antes su trabajo, el primate del botón rojo también, y los demás podremos consolarnos pensando en que la suegra o el imbécil que nos atiende en la oficina del paro van a morir con nosotros.
Cada uno de los elementos que componen una interfaz gráfica: botones, barras de desplazamiento, menús, etc.
Bajo este pintoresco nombre encontramos el sistema de preferencias para aplicaciones original del X Window System, implementado ya en sus primeras versiones. Los Xresources son líneas de texto que asignan valores a variables organizadas de forma jerárquica. Suelen almacenarse dentro del directorio /usr/X11/lib/X11/app-defaults —vigentes para todo el sistema—, o en los ficheros ocultos ~/.Xdefaults o ~/.Xresources de cada usuario.
Cito como ilustración parte de los míos:
olwm.PointerWorkspace: false olwm.PaintWorkspace: false olwm.WindowColor: #bcbcbc olwm.IconLocation: right-bt xpdf.geometry: 900x860 xpdf.initialZoom: 150 Tekwm*background: rgb:f0/f0/f0 Tekwm*foreground: rgb:00/00/00 Tekwm*menu.title.foreground: rgb:66/66/66 Tekwm*menu.title.background: rgb:ff/ff/ff
Como veis, el Xresource típico hace referencia a <programa>.<atributo>, o bien alguna variación de <programa>.<elemento>.<atributo>. El asterisco (*
) es un comodín, y permite por ejemplo escribir reglas que afecten a varias aplicaciones, o a varios componentes de una aplicación. Podéis leer más información práctica sobre ellos en esta guía de Arch Linux .
La mayoría de los programas modernos recurren a otros métodos de configuración y ya no los emplean.
Se trata del sistema gráfico más común en Unix, y su desarrollo comenzó en la década de los ochenta. Existe un estándar, un diseño general —el protocolo X11—, y a partir de él se han ido creando a lo largo de casi tres décadas diversas implementaciones. En la actualidad la más utilizada es la de la Fundación X.org , la oficial que sirve de referencia para las demás.
Nótese que el X Window System «sólo» —¡en realidad es mucho!— proporciona las funciones más básicas para trabajar con gráficos: dibujo y movimiento de ventanas y formas geométricas sencillas, controladores para dispositivos de entrada, fuentes de texto, etc. Partiendo de esta base terceras partes pueden crear los toolkits e interfaces gráficas que prefieran. Al contrario que en otros sistemas como Windows, no existe nada predefinido en ese aspecto.
Otra faceta importante del X Window System es que fue concebido también para su uso en redes. De modo que un programa puede ejecutarse en un ordenador, y mostrar su ventana en el monitor de otra máquina diferente. Normalmente no se trata de una característica demasiado interesante para el usuario doméstico, pero sí en centros de trabajo.
En Linux quizás sea sustituido en algún futuro indeterminado por Wayland . La otra alternativa, Mir
, quedó por el camino.