Update firstboot-setup.sh
This commit is contained in:
@@ -6,41 +6,67 @@ mkdir -p "$(dirname "$LOG")"
|
|||||||
exec > >(tee -a "$LOG") 2>&1
|
exec > >(tee -a "$LOG") 2>&1
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# Session check
|
# WICHTIG: Dynamisches Warten auf Flatpak-Bereitschaft
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
if [[ -z "${WAYLAND_DISPLAY:-}" && -z "${DISPLAY:-}" ]]; then
|
echo "=== Initialisiere User-Session und Flatpak ===" >&2
|
||||||
echo "Keine grafische Session verfügbar – breche ab."
|
|
||||||
|
MAX_WAIT=60
|
||||||
|
WAITED=0
|
||||||
|
|
||||||
|
while [[ $WAITED -lt $MAX_WAIT ]]; do
|
||||||
|
if systemctl --user is-active >/dev/null 2>&1; then
|
||||||
|
if flatpak --version >/dev/null 2>&1; then
|
||||||
|
echo "✓ Flatpak ist nach $WAITED Sekunden bereit." >&2
|
||||||
|
break
|
||||||
|
fi
|
||||||
|
|
||||||
|
echo "$(date +%T.%N) - Flatpak nicht verfügbar, starte Dienst..." >&2
|
||||||
|
systemctl --user start org.freedesktop.Flatpak.service 2>&1 || true
|
||||||
|
sleep 3
|
||||||
|
fi
|
||||||
|
|
||||||
|
((WAITED++)) || true
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
if [[ $((MAX_WAIT - WAITED)) -le 5 ]]; then
|
||||||
|
echo "⚠️ Wartezeit läuft kurz ($WAITED/$MAX_WAIT)..." >&2
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
if [[ $WAITED -ge $MAX_WAIT ]]; then
|
||||||
|
echo "❌ FATAL: Flatpak konnte nicht innerhalb von $MAX_WAIT Sekunden initialisiert werden!" >&2
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# Abbruchdialog
|
# XDG-Umgebung sicherstellen
|
||||||
# Ja -> Wizard beenden
|
|
||||||
# Nein -> zurück zur aktuellen Liste (return 2)
|
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
abort() {
|
export HOME="$HOME"
|
||||||
if zenity --question \
|
export USER=$(whoami)
|
||||||
--title="Setup abbrechen?" \
|
export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
|
||||||
--text="<big><b>Setup abbrechen?</b></big>\n
|
export XDG_RUNTIME_DIR="${XDG_RUNTIME_DIR:-/run/user/$(id -u)}"
|
||||||
Der Einrichtungs‑Assistent wird dann nicht erneut angezeigt.\n
|
|
||||||
Alle Anwendungen können jederzeit über den COSMIC‑Shop installiert oder entfernt werden.\n
|
mkdir -p "$XDG_DATA_HOME"
|
||||||
Möchtest du den Setup‑Assistenten wirklich abbrechen?"
|
mkdir -p "$(dirname "$LOG")"
|
||||||
then
|
|
||||||
rm -f "$HOME/.config/firstboot/run"
|
echo "✓ XDG-Umgebung konfiguriert: XDG_DATA_HOME=$XDG_DATA_HOME" >&2
|
||||||
systemctl --user disable firstboot-setup.service >/dev/null 2>&1 || true
|
|
||||||
exit 1
|
|
||||||
else
|
|
||||||
return 2
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# Helper
|
# Helper-Funktionen mit besserer Fehlerbehandlung
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
ensure_flathub() {
|
ensure_flathub() {
|
||||||
flatpak remote-list --columns=name 2>/dev/null | grep -qx flathub || \
|
if ! flatpak remote-list --columns=name 2>/dev/null | grep -qx flathub; then
|
||||||
|
echo "Aktiviere Flathub..." >&2
|
||||||
flatpak remote-add --if-not-exists flathub \
|
flatpak remote-add --if-not-exists flathub \
|
||||||
https://dl.flathub.org/repo/flathub.flatpakrepo
|
https://dl.flathub.org/repo/flathub.flatapkrepo || {
|
||||||
|
echo "❌ FATAL: Konnte Flathub nicht aktivieren!" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Warte kurz, bis das Repository geladen ist (wichtig!)
|
||||||
|
sleep 5
|
||||||
}
|
}
|
||||||
|
|
||||||
flatpak_user_install() {
|
flatpak_user_install() {
|
||||||
@@ -54,12 +80,25 @@ flatpak_user_install() {
|
|||||||
return 0
|
return 0
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Installiere Flatpak (user): $app"
|
echo "Installiere Flatpak (user): $app" >&2
|
||||||
|
|
||||||
|
# Füge Fehlerbehandlung hinzu
|
||||||
if ! flatpak install --user -y "$remote" "$app"; then
|
if ! flatpak install --user -y "$remote" "$app"; then
|
||||||
echo "WARNUNG: Flatpak-Installation fehlgeschlagen: $app"
|
echo "❌ FATAL: Flatpak-Installation fehlgeschlagen: $app" >&2
|
||||||
|
|
||||||
|
# Versuche, das Problem zu diagnostizieren
|
||||||
|
echo "Diagnose..." >&2
|
||||||
|
flatpak search "$app" || true
|
||||||
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
echo "✓ Installation erfolgreich: $app" >&2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ------------------------------------------------------------
|
||||||
|
# Rest des Skripts (wie zuvor) ...
|
||||||
|
|
||||||
|
|
||||||
# ------------------------------------------------------------
|
# ------------------------------------------------------------
|
||||||
# Zenity‑Checkliste
|
# Zenity‑Checkliste
|
||||||
# OK -> stdout = Auswahl, return 0
|
# OK -> stdout = Auswahl, return 0
|
||||||
|
|||||||
Reference in New Issue
Block a user