Files
fluffy-pancake/scripts/notify-bootc-user.sh
T

54 lines
1.8 KiB
Bash
Raw Normal View History

#!/bin/bash
TAG="bootc-notifier"
2026-05-11 17:47:32 +02:00
# 1. Upgrade ausführen
# --apply=false stellt sicher, dass bootc nicht selbstständig rebootet (falls konfiguriert)
OUTPUT=$(/usr/bin/bootc upgrade 2>&1)
EXIT_STATUS=$?
2026-05-11 17:47:32 +02:00
# 2. Check: Erfolg + "Queued" oder "Staged"
# Wir suchen nach Mustern, die ein bereitliegendes Image bestätigen
if [[ $EXIT_STATUS -eq 0 ]] && echo "$OUTPUT" | grep -Ei -q "Queued|staged|Preparing"; then
2026-05-11 17:47:32 +02:00
logger -t "$TAG" "Update erfolgreich heruntergeladen."
2026-05-11 17:47:32 +02:00
# 3. User finden (Präziser für Fedora 44)
# Wir suchen den User der Session, die 'active' ist und einen grafischen Typ hat
TARGET_USER=$(loginctl list-sessions --no-legend | while read -r id user seat; do
if [[ "$(loginctl show-session "$id" -p Type --value)" =~ ^(x11|wayland)$ ]] && \
[[ "$(loginctl show-session "$id" -p State --value)" == "active" ]]; then
echo "$user"
break
fi
done)
if [ -z "$TARGET_USER" ]; then
logger -t "$TAG" "Kein aktiver Desktop-User gefunden. Benachrichtigung abgebrochen."
exit 0
fi
USER_ID=$(id -u "$TARGET_USER")
2026-05-11 17:41:14 +02:00
# 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