Files
fluffy-pancake/scripts/notify-bootc-user.sh
T
humocs-manandGitHub 7750a86a49 Refactor status check to use jq
Updated status check to use jq for JSON parsing.
2026-05-17 20:30:06 +02:00

50 lines
1.5 KiB
Bash
Executable File

#!/bin/bash
set -euo pipefail
# Pfade
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"
# 1. Upgrade ausführen
$BOOTC upgrade
# 2. Status-Check
# PRÜFUNG ANGEPASST: Wir prüfen, ob der Status EXPLIZIT 'staged: null' enthält.
# Wenn dies der Fall ist, bedeutet es "System aktuell".
if $BOOTC status --json | jq -e '.status.staged == null' >/dev/null; then
# KEIN Update gefunden
$LOGGER -t "$TAG" "System aktuell (keine Updates vorhanden)."
else
# 3. Den ersten User finden, der nicht Root ist
USER_ID=$($LOGINCTL list-users --no-legend | awk '$2 != "root" {print $1; exit}')
if [[ -z "$USER_ID" ]]; then
# Update bereit, aber kein aktiver Desktop-User gefunden. Protokollieren und beenden.
$LOGGER -t "$TAG" "Update bereit, aber kein aktiver Desktop-User gefunden."
exit 0
fi
# 4. Benachrichtigung senden (Im Kontext des Benutzers)
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?" \
--icon=software-update-available \
--urgency=critical \
--action="reboot=Jetzt neu starten" \
--wait)
# 5. Auswertung
if [[ "$ACTION" == "reboot" ]]; then
$LOGGER -t "$TAG" "User hat Reboot gewählt."
$SYSTEMCTL reboot
fi
fi