Que hacer cuando GNOME no arranca por culpa de un applet
Introducción
Hay ocasiones que añadimos un applet al panel que no se convierte en demonio o que sencillamente tiene un funcionamiento que hace que GNOME no pueda arrancar. El problema es que mientras tenemos la sesión actual de GNOME en funcionamiento no hemos sido conscientes del fallo y al arrancar GNOME vemos que este no arranca.
Solución
Solución cafre
La solución más bestia que podemos usar es borrar nuestra $HOME (incluyendo los archivos ocultos) y seguir usando ese usuario. El problema de esta solución es que perdemos absolutamente todo lo que tengamos en ese directorio, incluyendo configuraciones de programas, marcadores de iceweasel/firefox, ficheros, etc. Es la solución que menos recomiendo.
Solución cafre, pero menos
Otra posible solución un tanto bestia es crear un nuevo usuario desde la terminal. Para ello, en el punto donde se nos queda congelado GNOME (o desde GDM, en caso de que no logremos pasar de ahí) pulsamos las teclas [Ctrl] + [Alt] + [F1] y desde la pantalla que nos sale, nos identificamos como root.
Para crear un nuevo usuario desde consola, es suficiente con ejecutar estas instrucciones:
useradd NOMBRE_DEL_NUEVO_USUARIO
mkdir /home/NOMBRE_DEL_NUEVO_USUARIO
passwd NOMBRE_DEL_NUEVO_USUARIOEn caso de que GNOME se quede congelado, tendremos que ejecutar también la instrucción halt (para apagar el sistema) o reboot (para reiniciarlo). Si al intentar iniciar el sistema GNOME, este nos devuelve a GDM, basta con pulsar [Ctrl] + [Alt] + [F7] para volver a ese punto.
Iniciamos la sesión con nuestro nuevo usuario desde GDM y entraremos en el entorno GNOME tal y como nuestra distribución lo instalase, es decir, con su configuración por defecto. Para recuperar la mayoría de nuestros configuraciones, es necesario mover las carpetas ocultas (aquellas que empiezan por '.', para verlas es necesario marcar la opción Ver->Mostrar archivos Ocultos de Nautilus) desde nuestra carpeta /home/usuario_viejo a nuestra carpeta /home/usuario_nuevo a excepción de la carpeta .gconf En caso de que existan las carpetas en el destino, deberemos sobreescribir sus contenidos.
Esto sirve para mantener los complementos, las configuraciones, historial y favoritos de de iceweasel/firefox, los plugins y configuraciones de gedit, etc.
El problema de esta solución es que es posible que algunas configuraciones no se puedan cargar correctamente y además es una pérdida de tiempo copiar todo eso. (Especialmente si seleccionamos a que aplicaciones copiamos la configuración y a que aplicaciones no)
Solución elegante
La solución elegante es eliminar de la configuración de GNOME la referencia al plugin que está causando problemas. Esto lo podemos hacer de dos formas distintas, si disponemos de otro entorno de escritorio instalado en nuestro sistema (xfce, KDE, etc.) podemos hacerlo a través de interfaces gráficas y si no lo podemos hacer también a través de consola. La ventaja de esta solución es que no modifica nada, salvo que anula la carga del applet problemático.
* Solución a través de interfaz gráfica
Iniciamos sesión con nuestro usuario en el otro entorno de escritorio. Es importante que la iniciemos con nuestro usuario y no con otro, ya que vamos a editar parámetros de configuración específicos del mismo.
Abrimos el editor de configuración gconf-editor de GNOME. En el caso de que no tengamos iniciado el demonio gconf, el editor de configuraciones lo iniciará cuando cargue, así que no importa si el escritorio en el que hemos iniciado sesión no usa el demonio gconf.
Si sabemos el bonobo_iid del plugin en cuestión, abrimos la ventana de búsqueda (Editar->Buscar) y escribimos el bonobo_iid. Marcamos la casilla "Buscar también en el valor de las claves" y pulsamos Buscar. Nos aparecerá una ruta con una clave, con la siguiente forma "/apps/panel/applets/applet_NUMERO/bonobo_iid". Hacemos click sobre el resultado de la búsqueda y eliminamos todas las claves de esa entrada haciendo click con el botón derecho sobre ellas y luego en "Desestablecer clave".
Si sabemos el nombre del plugin, podemos buscar por su nombre. El procedimiento es el mismo que en el caso del bonobo_iid.
Una vez hecho eso, habremos anulado la carga de ese applet, asi que ya podremos iniciar sesión correctamente en GNOME.
* Solución a través de consola
Al pulsar las teclas [Ctrl] + [Alt] + [F1] en el momento en el que GNOME se queda congelado o en el menú de entrada GDM, se nos lleva a una consola, donde nos identificaremos como el usuario en el que GNOME nos está dando problemas al cargar.
Cambiamos el directorio actual a /home/USUARIO/.gconf/apps/panel/applets (cd ~/.gconf/apps/panel/applets). Gconf funciona a través de ficheros de nombre %gconf.xml que contienen todos los nombres y valores de las claves.
Para borrar la carga de un applet, debemos localizar el directorio applet_NUMERO y eliminarlo. Hay varias formas de hacerlo, la más sencilla de recordar es probando. Los últimos applets añadidos son los que tienen un número más alto, así que podemos buscar en esos directorios de la siguiente forma:
Primero hacemos un ls para ver todos los directorios applet_NUMERO disponibles, por ejemplo:
usuario@maquina:~/.gconf/apps/panel/applets$ ls
applet_0 applet_2 applet_5 applet_8 mixer_screen0
applet_1 applet_3 applet_6 clock_screen0 notification_area_screen0
applet_10 applet_4 applet_7 %gconf.xml window_menu_screen0
usuario@maquina:~/.gconf/apps/panel/applets$ a partir de aquí bastaría con ir probando de la siguiente forma:
mateo@debian:~/.gconf/apps/panel/applets$ cat applet_10/%gconf.xml | grep OAFIID
<stringvalue>OAFIID:GNOME_MixerApplet</stringvalue>
mateo@debian:~/.gconf/apps/panel/applets$ donde OAFIID es o bien el bonobo_iid del applet o el nombre del applet.
Cuando el comando nos devuelva algo, como es el caso anterior, debemos eliminar el directorio en cuestión (En el ejemplo, applet_10) y todos los ficheros que este contiene.
¿Y si el problema no se soluciona?
Si el problema no se soluciona, la causa no es el último applet añadido. Quiźas sea una mala configuración de algo en el arranque o una mala actualización.
