我使用 systemd 服务单元启动我的窗口管理器(遵循本教程)。在我登录后tty1
执行以下操作.zlogin
(我使用 ZSH 作为登录 shell):
if [[ -z "$DISPLAY" && $(tty) = /dev/tty1 ]]; then
nohup systemd --user > ~/.xlog 2>&1 &
disown %2
logout
fi
Run Code Online (Sandbox Code Playgroud)
Systemd 通过服务单元启动 X 服务器、窗口管理器等。
当我想注销时,问题就开始了。
我应该简单地执行kill $MANAGERPID
杀死 systemd 守护进程吗?
执行 a 似乎更干净,loginctl terminate-session $XDG_SESSION_ID
但此命令需要更多权限。
这里的问题是:使用上述设置注销的首选方式是什么?
小智 9
这是我用来退出使用 xmonad 的方法(wmctrl
用于关闭所有打开的窗口后):
session=`loginctl session-status | head -n 1 | awk '{print $1}'`
loginctl terminate-session $session
Run Code Online (Sandbox Code Playgroud)
我不确定为什么你需要更多的权限loginctl terminate-session
- 这对我来说没有任何这样的需要。
另请注意,有多种方法可以获取会话 ID。在这个例子中,我只是直接从loginctl
它本身中取出它。还有$XDG_SESSION_ID
(如您所写)和/proc/self/sessionid
.
归档时间: |
|
查看次数: |
11632 次 |
最近记录: |