I start my window manager with systemd service units (following this tutorial).
After I log in at tty1
the following gets executed in .zlogin
(I'm using ZSH as a login shell):
if [[ -z "$DISPLAY" && $(tty) = /dev/tty1 ]]; then
nohup systemd --user > ~/.xlog 2>&1 &
disown %2
logout
fi
Systemd starts a X server, a window manager, … through service units.
The problem starts when I want to logout.
Should I simply execute kill $MANAGERPID
to kill the systemd daemon ?
It seems much cleaner to do a loginctl terminate-session $XDG_SESSION_ID
but this command requires further privileges.
Here's the question: What is the preferred way to log out with the setup described above ?
Best Answer
This is what I use to log out from using xmonad (after using
wmctrl
to close all open windows):I'm not sure why you need further privileges for
loginctl terminate-session
- this works for me without any such need.Also note that there are different ways to obtain the session ID. In this example I simply take it directly from
loginctl
itself. There's also$XDG_SESSION_ID
(as you wrote) and/proc/self/sessionid
.