systemdを使用したユーザーのログアウト

systemdを使用したユーザーのログアウト

私はsystemdサービスユニットを使ってウィンドウマネージャを起動します(次のように)このチュートリアル)。ログインしたら、tty1次のコマンドを実行します.zlogin(ZSHをログインシェルとして使用しています)。

if [[ -z "$DISPLAY" && $(tty) = /dev/tty1 ]]; then
  nohup systemd --user > ~/.xlog 2>&1 &
  disown %2
  logout
fi

Systemdは、サービスユニットを介してXサーバー、ウィンドウマネージャを起動します。

問題はログアウトしようとしたときに発生します。
単にkill $MANAGERPIDsystemdデーモンを終了するために実行する必要がありますか?
実行する方がきれいに見えますが、loginctl terminate-session $XDG_SESSION_IDこのコマンドにはより多くの権限が必要です。

問題は、上記の設定を使用してログアウトするのに好ましい方法は何ですか?

答え1

これはxmonadからログアウトするために使用する方法です(wmctrl開いたウィンドウをすべて閉じた後)。

session=`loginctl session-status | head -n 1 | awk '{print $1}'`
loginctl terminate-session $session

なぜより多くの権限が必要なのかわかりませんloginctl terminate-session。私の考えでは、そんなことは必要ないようです。

また、セッションIDを取得する方法はいくつかあります。この例では、loginctlそれ自体から直接インポートされます。そして$XDG_SESSION_ID(あなたが書いたように)そして/proc/self/sessionid

関連情報