
Eu inicio meu gerenciador de janelas com unidades de serviço systemd (seguindoeste tutorial). Depois de fazer login, tty1
o seguinte é executado .zlogin
(estou usando ZSH como shell de login):
if [[ -z "$DISPLAY" && $(tty) = /dev/tty1 ]]; then
nohup systemd --user > ~/.xlog 2>&1 &
disown %2
logout
fi
Systemd inicia um servidor X, um gerenciador de janelas, ... através de unidades de serviço.
O problema começa quando quero sair.
Devo simplesmente executar kill $MANAGERPID
para matar o daemon do systemd?
Parece muito mais fácil fazer isso, loginctl terminate-session $XDG_SESSION_ID
mas este comando requer privilégios adicionais.
Aqui está a pergunta: Qual é a maneira preferida de sair com a configuração descrita acima?
Responder1
Isto é o que eu uso para sair do xmonad (depois de usar wmctrl
para fechar todas as janelas abertas):
session=`loginctl session-status | head -n 1 | awk '{print $1}'`
loginctl terminate-session $session
Não sei por que você precisa de mais privilégios loginctl terminate-session
- isso funciona para mim sem essa necessidade.
Observe também que existem diferentes maneiras de obter o ID da sessão. Neste exemplo, simplesmente o retiro diretamente de loginctl
si mesmo. Há também $XDG_SESSION_ID
(como você escreveu) e /proc/self/sessionid
.