Für ein Bashscript wollte ich eine Desktop Benachrichtigung ausgeben. Normalerweise ist das recht einfach.

notify-send 'Backup finished!' 'Umount all Backup shares'

Damit wird eine Benachrichtigung an den laufenden Benachrichtigungs-Deamon geschickt und auf dem Desktop angezeigt. Nur leider funktioniert das nicht wenn das Script als ein anderer Benutzer läuft. In den meisten fällen ist das Root.

Doch es gibt einen Trick wie man trotzdem eine Benachrichtigung auf dem Desktop ausgeben kann.

sudo -u carsten DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus notify-send 'Backup finished!' 'Umount all Backup shares'

Dazu wird der Befehl mit „sudo -u benutername“ gestartet und folgende Variablen angehängt

DISPLAY=:0 DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/1000/bus

„DISPLAY=:0“ bezieht sich auf den laufenden XServer und über die DBus Adresse wird der richtige Benutzer gewählt. Gegebenenfalls muss die UID des Benutzers angepasst werden, in dem Beispiel ist es die 1000. Dann kommt der eigentliche Befehl in der selben Zeile.

Damit kann man dann Benachrichtigungen aus Scripten anzeigen die eigentlich von Root gestartet wurden, wie zum Beispiel ein Backup Script.

Desktop Benachrichtigungen aus Root Bashscripts starten