
Ich starte meinen Fenstermanager mit systemd service units (nachdieses Tutorial). Nachdem ich mich angemeldet habe, tty1
wird Folgendes ausgeführt .zlogin
(ich verwende ZSH als Login-Shell):
if [[ -z "$DISPLAY" && $(tty) = /dev/tty1 ]]; then
nohup systemd --user > ~/.xlog 2>&1 &
disown %2
logout
fi
Systemd startet einen X-Server, einen Fenstermanager usw. über Serviceeinheiten.
Das Problem beginnt, wenn ich mich abmelden möchte.
Soll ich einfach ausführen, kill $MANAGERPID
um den Systemd-Daemon zu beenden?
Es erscheint viel sauberer, Folgendes auszuführen, loginctl terminate-session $XDG_SESSION_ID
aber dieser Befehl erfordert weitere Berechtigungen.
Hier ist die Frage: Was ist die bevorzugte Methode zum Abmelden bei dem oben beschriebenen Setup?
Antwort1
Dies verwende ich, um mich von xmonad abzumelden (nachdem ich wmctrl
alle offenen Fenster geschlossen habe):
session=`loginctl session-status | head -n 1 | awk '{print $1}'`
loginctl terminate-session $session
Ich bin nicht sicher, warum Sie dafür weitere Berechtigungen benötigen loginctl terminate-session
– bei mir funktioniert es ohne solche Anforderungen.
Beachten Sie auch, dass es verschiedene Möglichkeiten gibt, die Sitzungs-ID zu erhalten. In diesem Beispiel nehme ich sie einfach direkt von loginctl
sich selbst. Es gibt auch $XDG_SESSION_ID
(wie Sie geschrieben haben) und /proc/self/sessionid
.