Friday, October 30, 2015

Autorestart: Eine systemd user-unit anlegen/erstellen/erzeugen

Programme wie Mail-Client und IM startet man i.d.R. über den Autostart der Desktopumgebung, damit diese bei der Anmeldung automatisch im Hintergrund starten und über neue Nachrichten informieren.

Ein Manko der Desktop Application Autostart Specification ist, dass diese Anwendungen nicht neu-starten, wenn sie versehentlich beendet wurden.

Eine Lösung bieten hier Systemd User-Units als ein Autorestart.

Eine Systemd User-Unit für den Mail-Client Thunderbird anlegen/erstellen/erzeugen

Alle Systemd User-Units werden unter $XDG_CONFIG_HOME/systemd/user/ bzw. $HOME/.config/systemd/user/ gespeichert. Abhängig davon, ob die Umgebungsvariable $XDG_CONFIG_HOME gesetzt ist.

Hier ein Beispiel für den Mail-Client Thunderbird:

mkdir -p ~/.config/systemd/user/
cat <<! >~/.config/systemd/user/thunderbird.service 
[Unit]
Description=Thunderbird

[Service]
Environment=DISPLAY=:0
ExecStart=/usr/bin/thunderbird
Restart=always

[Install]
WantedBy=basic.target
!

Damit eine Unit nach der Anmeldung ausgeführt wird, muss diese mittels systemctl(1) aktiviert werden:

systemctl --user enable thunderbird.service

Die Systemd User-Unit ersetzt dann den Autostart und systemd(1) überwacht den Prozess (PID) und startet diesen ggf. neu.

Wer die Leserechte des Benutzerverzeichnis eingeschränkt, oder eine restriktive Rechtemaske (umask) von bspw. 0077 gesetzt hat, kann den Start der Unit auch in den Autostart, oder in die Datei ~/.gnomerc eintragen:

systemctl --user start thunderbird.service

Dies startet die Unit manuell.