
私は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 を取得する方法は複数あることにも注意してください。この例では、単にセッション ID 自体から直接取得しています。また、(あなたが書いたように)loginctl
および もあります。$XDG_SESSION_ID
/proc/self/sessionid