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

60 lines
2.0 KiB
Bash
Raw Normal View History

#!/bin/bash
2026-05-16 09:31:45 +02:00
set -euo pipefail
# Pfade
2026-05-13 20:24:30 +02:00
BOOTC="/usr/bin/bootc"
LOGGER="/usr/bin/logger"
LOGINCTL="/usr/bin/loginctl"
NOTIFY="/usr/bin/notify-send"
SUDO="/usr/bin/sudo"
SYSTEMCTL="/usr/bin/systemctl"
TAG="bootc-timer"
2026-05-11 17:47:32 +02:00
# 1. Upgrade ausführen
$BOOTC upgrade
# 2. Status-Check mit jq
2026-05-17 20:30:06 +02:00
if $BOOTC status --json | jq -e '.status.staged == null' >/dev/null; then
# KEIN Update gefunden
2026-05-16 09:31:45 +02:00
$LOGGER -t "$TAG" "System aktuell (keine Updates vorhanden)."
else
$LOGGER -t "$TAG" "Update gefunden und gestaged. Suche aktiven Desktop-User..."
# 3. Robust den User der AKTIVEN grafischen Sitzung (seat0) ermitteln
USER_ID=$( $LOGINCTL list-sessions --no-legend | while read -r sid rest; do
if [[ "$( $LOGINCTL show-session "$sid" -p Seat --value )" == "seat0" ]] && \
[[ "$( $LOGINCTL show-session "$sid" -p State --value )" == "active" ]]; then
$LOGINCTL show-session "$sid" -p UID --value
break
fi
done )
2026-05-11 17:47:32 +02:00
if [[ -z "$USER_ID" ]]; then
$LOGGER -t "$TAG" "Update bereit, aber kein aktiver Desktop-User auf seat0 gefunden."
exit 0
fi
$LOGGER -t "$TAG" "Sende Benachrichtigung an User-ID: $USER_ID"
# 4. Benachrichtigung senden (mit "|| echo 'closed'" um den set -e Crash zu verhindern)
ACTION=$( $SUDO -u "#$USER_ID" env \
DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$USER_ID/bus \
XDG_RUNTIME_DIR=/run/user/$USER_ID \
$NOTIFY "System-Update bereit" \
"Ein neues Image wurde heruntergeladen. Jetzt neu starten?" \
--app-name="System-Update" \
--icon=software-update-available \
--urgency=critical \
--action="reboot=Jetzt neu starten" \
--wait || echo "closed" )
# 5. Auswertung
if [[ "$ACTION" == "reboot" ]]; then
$LOGGER -t "$TAG" "User hat Reboot gewählt. Starte System neu..."
$SYSTEMCTL reboot
else
$LOGGER -t "$TAG" "Benachrichtigung wurde geschlossen oder ignoriert ($ACTION)."
2026-05-11 17:47:32 +02:00
fi
fi