Cada cierto tiempo suelo toparme por accidente con aplicaciones que desconocía completamente su existencia, lo que despierta mi curiosidad por saber qué es lo que hace y para qué sirve.
Hace un tiempo atrás me encontré con Xephyr, una herramienta parte de X.Org Server del estilo de Xnest con la diferencia, como lo reporta su manual, que el último se veía limitado por las capacidades del servidor X huésped, mientras que el primero es un servidor X real sobre el huésped. En pocas palabras, podríamos decir que Xephyr funciona como un contenedor para lanzar aplicaciones X en paralelo a nuestro servidor X en ejecución.
Podríamos decir, también, que sería como una segunda pantalla, independiente, dentro de una ventana de nuestro escritorio. De esta manera, se podría deducir su importancia para los desarrolladores, por ejemplo, diseñar sobre un entorno de escritorio sin tener que salir o reiniciar a cada rato su espacio de trabajo.
Sin embargo, podríamos encontrarle un uso más casero. Personalmente, soy indeciso a la hora de organizar mi escritorio, tiendo a cambiar todo de tanto en tanto. El problema está en tener que dedicar buena parte del tiempo iniciando y cerrando sesión. Aquí es donde Xephyr viene muy a mano: podremos ejecutar dentro de su ventana el entorno a probar con tan sólo indicar de antemano el valor de DISPLAY (lo cual veremos en unos instantes). Tomando el ejemplo que acabo de describir, voy a explicar cómo ejecutar fvwm (razón que me hizo recordar a la aplicación en cuestión) dentro de Xephyr:
En primer lugar, debemos instalarlo. En la mayoría de los casos bastaría con un apt-get install, aptitude install, yum install, pacman -S y demás. El paquete en cuestión contiene la palabra Xephyr; por lo tanto, no sería muy complicado encontrarlo. Sin embargo, quiero hacer la salvedad para Gentoo ya que no está tan a mano. Para instalarlo es necesario agregar para x11-base/xorg-server la etiqueta USE kdrive y recompilar.
Una vez instalado, nos resta iniciar Xephyr. Básicamente, toma un par de parámetros para lograrlo funcionar. Por ejemplo:
Xephyr :1 -screen 1024x768
Donde:
- :1 corresponde al valor que se debería usar para la variable DISPLAY a la hora de querer mostrar la aplicación dentro de Xephyr
- -screen indicará la resolución que tendrá nuestra nueva pantalla
Nótese que la X de Xephyr va en mayúscula y que hay más posibilidades de parámetros, aunque con lo dado me parece suficiente.
Xephyr en ejecución junto a la terminal
Ahora nos encargaremos de enviar nuestro programa. Para esto hay diferentes maneras aunque muy similares. Supongamos querer enviar fvwm desde nuestra terminal a Xephyr. Tendríamos que primero darle el valor a DISPLAY, de lo contrario recibiríamos un error pues tenemos otro gestor de ventanas en ejecución. Por lo tanto, lo ejecutamos de la siguiente manera:
DISPLAY=:1 fvwm
También podríamos haberle dado el valor a DISPLAY previamente; sin embargo, esto produciría que, para la terminal en uso, todas las aplicaciones sean dirigidas a :1 en vez de nuestra sesión de X. Del otro modo, sólo afectará a esa línea y volverá a su valor anterior. Ante cualquier duda, se puede ejecutar echo $DISPLAY para saber cual es su valor actual.
Por supuesto, podríamos ir más lejos e iniciar una sesión de XFCE o KDE por ejemplo, la mecánica es la misma. Sin embargo podría volverse más pesada la ejecución dependiendo del ordenador. Simplemente hay que cambiar fvwm por startxfce4 o startkde. Sin embargo, en el caso de KDE, requerirá algún rebusque más pues, en mi caso, se inicia dentro de Xephyr y sus aplicaciones se ejecutan fuera.
Por último quedaría usarlo junto con ssh. Debido a que no tengo a mano otra computadora con la cual probarlo, les dejo el comando sacado del foro de Ubuntu (y dicho sea de paso, allí hacen uso de algunos parámetros más para quien esté interesado).
DISPLAY=:1 ssh -XfC -c blowfish usuario@servidor
Conclusión:
Xephyr es una herramienta de gran utilidad que nos permite tener dos entornos de escritorios corriendo en paralelo de manera bastante rápida y sencilla. Es muy conveniente para evitar entrar y salir de la sesión que, además de gastar tiempo, también incomoda tener que alternar con un entorno que no es de nuestro día a día. Por otro lado, nos puede servir para enviar allí aplicaciones por medio de ssh y evitar confusiones con aplicaciones locales. Fuera de todo eso, es una herramienta curiosa e interesante que puede resultar útil en cualquier momento.