Inicio
viernes, 09 enero 2009
Inicio en modo gráfico desde el modo texto
Tag it:
Delicious
Slashdot
Digg
Meneame
BM
Fresqui
Neodiario
Escrito por Martin Kenneth Lopez   
29.11.2006
 Hace tiempo tuve instalado xdm, uno de los varios servicios existentes en Linux que se encargan de que entremos directamente a las X pidiendo el nombre del usuario y la contraseña en modo gráfico. Pero cuando por algún motivo quería, o tenía que, abandonar el modo gráfico, la dichosa ventanita del login siempre reaparecía una y otra vez. Por aquella época la solución que adoptaba era reiniciar vía hardware; esto es, a lo bruto; pulsando el botón o sacando el enchufe, según circunstancias y estados de ánimo, hay que tener en cuenta que uno era bastante novato.
Eso me llevó a desinstalar el servicio de inicio en modo gráfico y a entrar al mismo desde el modo texto tecleando startx. Así me aseguraba de que, si tenía que “matar” las X, volvería a mi consola sin mayores traumas. Cuando quería cambiar de entorno gráfico, simplemente modificaba el archivo ~/.xinitrc y listo.

Esta situación estuvo bien mientras yo era el único interesado en cambiar de escritorio, pero un buen día alguien más empezó a fijarse en lo que papá tenía en la pantalla cuando estaba con el ordenador:

  • – Bueno, hijo, te pondré a ti lo mismo que yo tenga.
    – Pero con todo ¿eh papá? Eso de ahí (el gkrellm) también lo quiero, que está “mu guapo”.
    – Vale, con todo.

Por aquéllas fechas utilizaba Xfce4, y le puse como fondo de escritorio unos personajes de dibujos animados que eran sus favoritos, y que él había retocado con Tuxpaint.

Un buen día cambié a Window Maker, y todavía conservaba como fondo de escritorio una imagen de la Tierra en tiempo real que proporciona el programa xplanet. Ni que decir tiene que cuando el muchachito la vio quiso tenerla inmediatamente.

 

  • – Yo también quiero ese fondo, papá. ¿Qué es?
    – Una imagen de la tierra.
    – Sí, eso ya lo sé, pero ¿por qué hay unas partes más claras y otras más oscuras?
    – Las más claras señalan las zonas donde es de día, y las más oscuras donde es de noche.
    – ¡Qué “guay”! ¿Me lo vas a poner ahora mismo?
    – Vale, lo tendrás la próxima vez que entres en Linux.

Esta situación empezó a repetirse bastante a menudo, ya que unas veces quería Window Maker, otras el Xfce4, y otras el de mamá (gnome). Uno tiene paciencia, y no poca, pero la situación ya empezaba a ser algo fastidiosa, aunque iba soportándola estoicamente: “todo sea por los hijos”.

Entonces acudió en mi ayuda la diosa Casualidad, que no es santa de mi devoción porque las más de las veces acaba fastidiándome, pero en esta ocasión se portó bastante bien, haciendo aparecer en uno de los foros de Fent Linux un hilo cuyo tema era precisamente cómo elegir entre varios entornos gráficos disponibles. Decidí intervenir proponiendo conectarse siempre en modo texto y elegir el entorno gráfico mediante un script que mostrase en pantalla un sencillo menú. No bien lo hube hecho, cuando caí en la cuenta de que esa sería una buena solución para mí, de modo que puse manos al teclado, y aquí está lo que conseguí.

Elegir_entorno_old1 y old2 son los pasos previos al que considero el script definitivo por ahora. Me funciona bien y todos estamos contentos. Mi hijo puede escoger lo que más le apetezca en cada momento sin tener que esperar a que sea papá quien se lo configure, y yo dispongo de una forma más cómoda de elegir el escritorio que me apetezca sin tener que editar ningún archivo ni introducir comandos rebuscadillos, además de la facilidad de poder cargarme las X cuando me dé la gana sabiendo que iré a parar a mi preciada consolilla. Y bueno, como iba diciendo, el devenir del invento siguió por aquí y termina, de momento, aquí.

En qué consiste


Lo que ve el usuario es un menú que se despliega en la consola nada más haber introducido el nombre y la contraseña, y que consiste en una serie de opciones numeradas. La número cero y la número uno no cambian y son, respectivamente, la carga del anterior entorno gráfico utilizado y la entrada al modo texto. Las demás opciones aparecen en el orden que se hayan puesto en el array, o vector según bash, habilitado para ello.

Tecleado el número de la opción elegida y pulsado Intro, si el entorno gráfico existe será cargado y si no existe, o más concretamente, si no se encuentra en el path, se muestra un aviso y, tras volver a pulsar Intro, se regresa de nuevo al menú.

 

fentlinux

 

También es posible añadirle programas para que se ejecuten en segundo plano al iniciarse el entorno, por lo que configurar dos escritorios iguales para distintos usuarios puede ser algo bastante sencillo.

El script crea, o sobrescribe, el archivo $HOME/.xinitrc cada vez que la opción elegida no coincide con la anterior, y de ese mismo archivo es de donde toma el último entorno utilizado.

Instalación


Una vez descargado, cosa que puede hacerse directamente desde aquí, eligiendo el menú archivo->guardar como, hay que situarlo en un lugar conveniente, darle permiso de ejecución y cargarlo desde ~/.bash_profile. Pero vayamos por partes:

El lugar que acostumbro a sugerir para poner estas cosas, y donde yo mismo las pongo, es el directorio /usr/local/bin, debido a que en /usr/local es recomendable situar todo aquello instalado mediante algún sistema distinto del de nuestra distribución, y dentro de /bin porque, si bien no es directamente un archivo binario, sí es un ejecutable, y /bin es el directorio comúnmente elegido para instalar los programas, o ejecutables. Ojo, que para copiar cosas en cualquier sitio que no sea nuestro $HOME o /tmp hay que ser, normalmente, root. Esto puede que esté de más decirlo, pero como uno fue un novato muy novato (y aún continúo siéndolo en muchas cosas), me pongo en la situación en la que perfectamente podría haber estado.

Para darle permiso de ejecución será suficiente con teclear, como root:

bash~# chmod 0755 /usr/local/bin/elegir_entorno

o también

bash~# chmod +x /usr/local/bin/elegir_entorno

Por último, editamos nuestro $HOME/.bash_profile y le añadimos al final las siguientes líneas:

if [ $SHLVL == '1' ]; then
/usr/local/bin/elegir_entorno
fi

La variable SHLVL se incrementa en uno cada vez que se abre una nueva instancia de bash, por lo que si su valor es '1' estamos en la primera instancia de bash de ese terminal y, por lo tanto, podemos lanzar el script sin problemas (no sería muy adecuado que se lanzase al abrir una ventana de consola, por ejemplo). El subrayado de “ese terminal” no es casualidad, porque si accedemos a un nuevo terminal pulsando simultáneamente las teclas Control+Alt+FN (F2,F3, ... , F6), podremos lanzar una nueva sesión gráfica, de ahí que el script aparezca al “logearnos”. Cuando hay más de una sesión gráfica activa, se puede conmutar entre ellas pulsando a la vez Control+Alt+F7 (la primera sesión), Control+Alt+F8 (la segunda)... hasta Control+Alt+F12 para las demás, suponiendo que tengamos un buen montón de memoria RAM, desde luego.

Hacking


Aparte de trastearlo por mera curiosidad, la causa más probable para hackear un poco en el script sería añadirle o quitarle entornos y/o programas ejecutables en segundo plano al inicio del modo gráfico. Eso es realmente fácil, y animo a hacerlo a quienes se lo instalen. A partir de la línea 74 del script tenemos esto:

# Para añadir entornos, basta incluir el nombre del ejecutable después del
# último de la lista (y antes del paréntesis de cierre), terminado en un
# espacio más una barra inversa " \". Las comillas dobles son para incluir en
# la misma línea más de una palabra separadas por espacios.
#
DISPONIBLES=(\
"Último entorno gráfico utilizado ($ULTIMO)" \
"Consola de texto (la shell)" \
xfce4-session \
wmaker \
gnome-session \
startkde \
startfluxbox \
fluxbox \
)

Hay que añadir o quitar el nombre o nombres de los entornos que deseemos siguiendo las instrucciones del comentario, en el que, por cierto, está de más lo de “después del último de la lista”, ya que podemos ponerlo donde queramos a partir de “Consola de texto (la shell) \”, pero, eso sí, no hay que olvidar el espacio y el carácter '\'.

Los programas a ejecutar en segundo plano se pueden añadir en la siguiente sección de código:

# Una vez comprobado que el entorno elegido está disponible, se
# pueden incluir en ~/.xinitrc algunas aplicaciones que deseemos
# tener disponibles al iniciar determinados gestores gráficos.
# Han de ser iniciadas en segundo plano, con el carácter '&'.
# Un par de ejemplos, con algunas líneas comentadas:
case $ENTORNO in
'xfce4-session')
# echo "mozilla-firefox &" >> ~/.xinitrc
# echo "gkrellm &" >> ~/.xinitrc
echo "xscreensaver &" >> ~/.xinitrc
;;
'wmaker')
echo "gkrellm &" >> ~/.xinitrc
echo "xplanet -projection rectangular -vroot &" >> ~/.xinitrc
# echo "xscreensaver &" >> ~/.xinitrc
;;
esac

Hay que añadir una nueva línea con el mismo nombre del entorno gráfico que tengamos en el vector, o array, entre comillas simples, y terminar la línea con un paréntesis derecho. Después, y debajo del nombre del entorno, se escriben tantas líneas como se quiera, una para cada programa, con el formato:

echo “nombre_programa &” >> ~/.xinitrc

que significa: añade “nombre_programa para que se ejecute en segundo plano” al archivo $HOME/.xinitrc. El carácter '&' quiere decir “ejecutar en segundo plano”, efectivamente. Por último, añadir dos caracteres ';;' para que el intérprete sepa que ahí termina el bloque de código.

Realmente no hay mucho más que decir, a no ser que se quiera entrar más a fondo en los detalles de la programación del mismo, pero estaremos por los foros de Fent Linux si a alguien le apetece comentar alguna cosa más.


Fuente: FentLinux

Recomiende este artículo...

 
No está autorizado a dejar comentarios - Por favor, ingrese como usuario.