
Inicio mi administrador de ventanas con unidades de servicio systemd (siguiendoeste tutorial). Después de iniciar sesión en tty1
lo siguiente, se ejecuta .zlogin
(estoy usando ZSH como shell de inicio de sesión):
if [[ -z "$DISPLAY" && $(tty) = /dev/tty1 ]]; then
nohup systemd --user > ~/.xlog 2>&1 &
disown %2
logout
fi
Systemd inicia un servidor X, un administrador de ventanas,… a través de unidades de servicio.
El problema comienza cuando quiero cerrar sesión.
¿Debo simplemente ejecutar kill $MANAGERPID
para matar el demonio systemd?
Parece mucho más limpio hacerlo, loginctl terminate-session $XDG_SESSION_ID
pero este comando requiere más privilegios.
Aquí está la pregunta: ¿Cuál es la forma preferida de cerrar sesión con la configuración descrita anteriormente?
Respuesta1
Esto es lo que uso para cerrar sesión en xmonad (después de usarlo wmctrl
para cerrar todas las ventanas abiertas):
session=`loginctl session-status | head -n 1 | awk '{print $1}'`
loginctl terminate-session $session
No estoy seguro de por qué necesita más privilegios loginctl terminate-session
; esto funciona para mí sin tal necesidad.
Tenga en cuenta también que existen diferentes formas de obtener el ID de sesión. En este ejemplo simplemente lo tomo directamente de loginctl
sí mismo. También hay $XDG_SESSION_ID
(como escribiste) y /proc/self/sessionid
.