私はsystemdサービスユニットを使ってウィンドウマネージャを起動します(次のように)このチュートリアル)。ログインしたら、tty1
次のコマンドを実行します.zlogin
(ZSHをログインシェルとして使用しています)。
if [[ -z "$DISPLAY" && $(tty) = /dev/tty1 ]]; then
nohup systemd --user > ~/.xlog 2>&1 &
disown %2
logout
fi
Systemdは、サービスユニットを介してXサーバー、ウィンドウマネージャを起動します。
問題はログアウトしようとしたときに発生します。
単にkill $MANAGERPID
systemdデーモンを終了するために実行する必要がありますか?
実行する方がきれいに見えますが、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
。