Múltiples sesiones del servidor gráfico; múltiples aplicaciones

Todos sabemos que en nuestro sistema operativo favorito, GNU/Linux, quien se encarga de llevar el sistema gráfico son las X (X.Org). Si no sabes muy bien lo que es y quieres informarte mejor, puedes leer los artículos correspondientes en la wikipedia, este y este, ya que no voy a poner a explixorgcarlo, ese no es el tema de esta entrada.

Sabemos que existen varias consolas virtuales, a las que podemos acceder con Ctrl+alt+FX, siendo normalmente X ε [1-6], y en el F7 esta el entorno gráfico con nuestro escritorio favorito. ¿Pero eso es todo? ¿porque tenemos tantas consolas virtuales y solo un entorno gráfico? Bueno, esta ultima pregunta es algo absurda, normalmente con un entorno gráfico nos sobra, es mas común hacer uso de varias consolas virtuales, sin hablar de que el consumo de recursos es mucho mayor en un servidor gráfico.

La cuestión, a todo eso, es que podemos tener varias sesiones de las X en funcionamiento, y pueden sernos útiles (o no) en algunas ocasiones. O simplemente puede ser otra demostración del poder que ofrece GNU/Linux :)

A continuación ire explicando paso a paso el procedimiento que he seguido para arrancar un segundo servidor grafico y una consola xterm, si no te apetece leer mucho, al final adjunto un script para automatizar el proceso, el cual tampoco es de una extraordinaria dificultad.

Todo esto lo e probado en Arch Linux, ignoro si en otras distribuciones de GNU/Linux el procedimiento es parecido, imagino que si, pero no puedo asegurar nada.

Lo mas importante aquí es el DISPLAY, esto es una variable usada por los programas para saber donde corre el servidor gráfico bajo el que deben ejecutarse. Por defecto el primer display, donde normalmente trabajamos es el 0, al que podemos acceder con la combinación de teclas cntrl+alt+F7.

Si queremos tener varios servidores gráficos solo hay que ir variando el valor de ese DISPLAY.

Lo que tenemos que hacer es arrancar las X en el display 1, es muy sencillo, simplemente escribimos en una consola:

term $ X :1

Entonces seguramente aparecerá una pantalla en negro con el cursor en forma de X. Pero ahí no podemos hacer nada, no tenemos ni una triste consola donde poder introducir comandos. Volvemos al display 0 con cntrl+alt+F7 o a una consola virtual, con cntrl+alt+F[0-6]

Para que funcione correctamente tenemos que darle permisos. Esto no se muy bien como funciona, a si que me limitare a dar el comando necesario 😛

term

$ xauth add :1 . `mcookie`

Donde 1 es el display que hemos escogido.

Para poder hacer algo en nuestro display nuevo tenemos que arrancar xterm, pero en el display 1. En teoria se puede hacer con xterm -display 1 pero a mi no me funciona asi, de modo que lo hago de la siguiente forma:

term $ export DISPLAY=:1.0
$  xterm

Después de esto lo suyo seria poner export DISPLAY=:1.0 para que los programas se siguieran ejecutando en el display 0, sobretodo en el caso de introducir el comando en una consola dentro del servidor grafico.

Ahora ya tendremos una xterm abierta, a partir de ahora, el limite es tu imaginación. Con la combinación de teclas cntrl+alt+F8 entramos en el display 1, con la xterm abierta. Ahora podemos ejecutar programas ahí o incluso un sistema de ventanas como gnome o kde. El problema de esto ultimo es que puede interferir en el display 0, por ejemplo, en mi caso, no me dejaba tener en ambos el emerald abierto, aunque compiz funcionaba a la perfección.

Una opción interesante podría ser ejecutar VirtualBox y arrancar windows virtual, que en realidad es lo que yo quería :) Asi puedo entrar y salir de windows en fullscreen con una combinación de teclas, y lo mas importante, los dos displays pueden estar a diferente resolución.

Por ultimo, podéis juntar todo esto en un script en bash para que sea mas fácil

#!/bin/bash
X :1 &;
xauth add :1 . `mcookie`
export DISPLAY=:1.0
xterm
export DISPLAY=:0.0

El único problema que e encontrado es que no se cerrarlo 😛 si alguien sabe que lo comente. Espero que os sea útil 😉

Para cerrarlo buscad el proceso con:

term ps aux | grep ‘X :1’

Y lo matáis con kill

Muchas gracias a nicros de archlinux-es.org por resolver mis dudas :)

You may also like...

2 Responses

  1. Maxpowel dice:

    lo de export DISPLAY me ha salvado, siempre me andaba fastidiando esa variable cuando intentaba tener varias X jeje

  1. 9 enero, 2009

    […] X a parte de forma automática, cosa que explicamos como hacerlo de forma manual en congdegnu aquí. Esto ultimo puede ser útil para juegos en fullscreen y con gráficos en 3D, puede evitar […]

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *