Files
fluffy-pancake/scripts/notify-bootc-user.sh
T
humocs-manandGitHub bdaf4bed0b Change notification method to systemd-run
Updated notification method to use systemd-run for user sessions.
2026-05-11 17:41:14 +02:00

41 lines
1.3 KiB
Bash
Executable File

#!/bin/bash
TAG="bootc-notifier"
# 1. Das eigentliche Upgrade ausführen und Output speichern
# Wir entfernen --quiet, damit wir den Output parsen können
OUTPUT=$(/usr/bin/bootc upgrade 2>&1)
EXIT_STATUS=$?
# 2. Prüfen: War der Befehl erfolgreich UND wurde ein neues Image bereitgestellt?
if [[ $EXIT_STATUS -eq 0 ]] && echo "$OUTPUT" | grep -iq "Queued for next boot"; then
logger -t "$TAG" "Neues Image geladen. Starte User-Benachrichtigung."
# 3. User finden
TARGET_USER=$(loginctl list-sessions --no-legend | awk '$3 != "root" {print $3; exit}')
USER_ID=$(id -u "$TARGET_USER")
RUNTIME_DIR="/run/user/$USER_ID"
# 4. Benachrichtigung senden via systemd-run
# Wir nutzen --machine=$TARGET_USER@.host, um in die User-Session zu springen
RESPONSE=$(systemd-run --machine="$TARGET_USER@.host" \
--user \
--pipe \
--wait \
notify-send -a "System-Update" \
"Ein neues System-Update ist bereit." \
"Der Neustart aktiviert die Änderungen." \
--icon=system-reboot-symbolic \
--urgency=critical \
--action="reboot=Jetzt neu starten" \
--wait)
# 5. Auswertung
if [[ "$RESPONSE" == "reboot" ]]; then
logger -t "$TAG" "User wählte Neustart über Benachrichtigungs-Button."
systemctl reboot
else
logger -t "$TAG" "Benachrichtigung wurde geschlossen oder 'reboot' nicht geklickt."
fi