Add script to notify non-root users of system updates
This commit is contained in:
@@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
# 1. Finde die ID der aktuell aktivsten Sitzung (die erste, die kein root ist)
|
||||||
|
# Wir suchen nach einer Session, die einen User hat, der nicht root ist.
|
||||||
|
SESSION_ID=$(loginctl list-sessions --no-legend | while read -r sid user class service; do
|
||||||
|
if [ "$user" != "root" ]; then
|
||||||
|
s echo "$sid"; break
|
||||||
|
fi
|
||||||
|
done)
|
||||||
|
|
||||||
|
# Wenn keine User-Session gefunden wurde, beende das Skript
|
||||||
|
if [ -z "$SESSION_ID" ]; then
|
||||||
|
exit 0
|
||||||
|
fi
|
||||||
|
|
||||||
|
# 2. Ermittle den Benutzernamen und die UID dieser Session
|
||||||
|
TARGET_USER=$(loginctl show-session "$SESSION_ID" -p User --value)
|
||||||
|
TARGET_UID=$(id -u "$TARGET_USER")
|
||||||
|
|
||||||
|
# Die einzige Variable, die wir wirklich brauchen, ist der D-Bus Pfad.
|
||||||
|
# Alles andere (wie WAYLAND_DISPLAY) übernimmt der D-Bus-Server von selbst,
|
||||||
|
# sobald die Nachricht bei ihm ankommt.
|
||||||
|
export XDG_RUNTIME_DIR="/run/user/$TARGET_UID"
|
||||||
|
export DBUS_SESSION_BUS_ADDRESS="unix:path=/run/user/$TARGET_UID/bus"
|
||||||
|
|
||||||
|
# Wir nutzen 'sudo -u' und schicken die Nachricht direkt über den D-Bus.
|
||||||
|
# Wir lassen 'DISPLAY' weg, da notify-send kein Grafik-Protokoll braucht.
|
||||||
|
sudo -u "$TARGET_USER" \
|
||||||
|
DBUS_SESSION_BUS_ADDRESS="$DBUS_SESSION_BUS_ADDRESS" \
|
||||||
|
notify-send "System-Update verfügbar" \
|
||||||
|
"Ein neues Image wurde installiert. Bitte starten Sie das System neu."
|
||||||
Reference in New Issue
Block a user