Sair do usuário com systemd

Sair do usuário com systemd

Eu inicio meu gerenciador de janelas com unidades de serviço systemd (seguindoeste tutorial). Depois de fazer login, tty1o 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 $MANAGERPIDpara matar o daemon do systemd?
Parece muito mais fácil fazer isso, loginctl terminate-session $XDG_SESSION_IDmas 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 wmctrlpara 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 loginctlsi mesmo. Há também $XDG_SESSION_ID(como você escreveu) e /proc/self/sessionid.

informação relacionada