Hace dos días, Debian hizo una actualización automática de software y cuando fui a reiniciar, kaputt, no entraba en X. Miré qué era lo que había actualizado y no me parecía que nada de lo cambiado afectara la entrada en el escritorio.
Lo típico, downgrade del software y nada. Reviso en Internet a ver sí había algo al respecto y nada que me sirviera. Usaba LightDM como manejador de pantalla, así que probé con GDM3, LXDM, con Nodm, he incluso Slim, así estaba ya de desesperado. Nada funcionaba. Podía levantar el desktop por medio de startx pero ningún manejador parecía lograr levantar Xfce por sí solo.
Dado que la máquina solo la uso yo, pues estaba configurada para entrar a mi escritorio sin pedir clave. Empiezo a buscar y me consigo con la idea de hacer exactamente lo mismo sin usar ningún DM.
Conseguí algo aquí pero no terminaba de funcionar del todo bien.
Para abreviar, estos fueron los archivos que creé:
/usr/local/sbin/x11login
#!/bin/sh
exec /bin/login "${@}" START_X11=1
/etc/systemd/system/x11.service
[Unit]
After=systemd-user-sessions.service
[Service]
ExecStart=/sbin/mingetty --autologin nombre_de_usuario --loginprog=/usr/local/sbin/x11login --noclear tty7 38400
[Install]
WantedBy=multi-user.target
Aquí ya empecé con los cambios, yo no usé ~/.bashrc:
if [[ ${START_X11} == 1 ]]; then
/usr/bin/chvt 7
unset START_X11
exec startxfce4
fi
Descubrí que si no cambiaba al terminal, en éste caso el 7, no continuaba el proceso. También cambié startx por startxcfe4 directamente.
Hasta aquí, por fin, lograba levantar el escritorio sin tener que introducir la clave. Pero xfce4-notifyd no funcionaba. Tampoco trabajaba bien Rhythmbox, ni las teclas multimedia. Firefox estaba muy pesado. En fin, que había algo que faltaba. Ya me imaginaba por dónde iban los tiros y acerté, dbus estaba dando problemas. Así que creé el siguiente archivo:
#!/bin/bash
dbus-update-activation-environment --systemd --all
systemctl --user restart xfce4-notifyd
Y lo añadí en Aplicaciones > Sesión e Inicio > Autoarranque de aplicaciones. Intenté las opciones usuales pero esta fue la única que me permitió resolver el problema definitivamente.
Lo dejo aquí por si le sirve a alguien más, y además, le dejo el procedimiento a mi yo del futuro.