2026-03-12 20:54:23 +01:00
|
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
|
set -euo pipefail
|
|
|
|
|
|
|
2026-03-12 21:09:19 +01:00
|
|
|
|
LOG="$HOME/.local/state/firstboot-setup.log"
|
|
|
|
|
|
|
2026-03-12 20:54:23 +01:00
|
|
|
|
exec > >(tee -a "$LOG") 2>&1
|
|
|
|
|
|
|
|
|
|
|
|
abort() {
|
2026-03-13 10:04:21 +01:00
|
|
|
|
zenity --question \
|
|
|
|
|
|
--title="Setup abbrechen?" \
|
|
|
|
|
|
--text="Der Einrichtungs‑Assistent wird dann nicht erneut angezeigt.
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
2026-03-13 10:04:21 +01:00
|
|
|
|
Alle Anwendungen können jederzeit über den COSMIC‑Shop installiert oder entfernt werden.
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
2026-03-13 10:04:21 +01:00
|
|
|
|
Möchtest du den Setup‑Assistenten wirklich abbrechen?"
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
if [[ $? -eq 0 ]]; then
|
2026-03-12 21:09:19 +01:00
|
|
|
|
rm -f "$HOME/.config/firstboot/run"
|
2026-03-12 20:54:23 +01:00
|
|
|
|
systemctl --user disable firstboot-setup.service
|
|
|
|
|
|
exit 0
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
return 0
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
ensure_flathub() {
|
|
|
|
|
|
flatpak remote-list --columns=name 2>/dev/null | grep -qx flathub || \
|
|
|
|
|
|
flatpak remote-add --if-not-exists flathub \
|
|
|
|
|
|
https://dl.flathub.org/repo/flathub.flatpakrepo
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
install_brew_and_setup_path() {
|
|
|
|
|
|
if ! command -v brew >/dev/null 2>&1; then
|
|
|
|
|
|
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
local BREW_PREFIX="/home/linuxbrew/.linuxbrew"
|
|
|
|
|
|
local BREW_BIN="$BREW_PREFIX/bin/brew"
|
|
|
|
|
|
[[ -x "$BREW_BIN" ]] || BREW_BIN="$(command -v brew)"
|
|
|
|
|
|
|
|
|
|
|
|
eval "$("$BREW_BIN" shellenv)"
|
|
|
|
|
|
|
|
|
|
|
|
for rc in "$HOME/.bashrc" "$HOME/.zshrc"; do
|
|
|
|
|
|
[[ -f "$rc" ]] || continue
|
|
|
|
|
|
grep -q 'brew shellenv' "$rc" || {
|
|
|
|
|
|
echo "" >> "$rc"
|
|
|
|
|
|
echo "# Homebrew" >> "$rc"
|
|
|
|
|
|
echo "eval \"\$($BREW_BIN shellenv)\"" >> "$rc"
|
|
|
|
|
|
}
|
|
|
|
|
|
done
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
# ----------------------------
|
|
|
|
|
|
# Welcome
|
|
|
|
|
|
# ----------------------------
|
2026-03-13 10:04:21 +01:00
|
|
|
|
zenity --info \
|
|
|
|
|
|
--title="Willkommen bei COSMIC" \
|
|
|
|
|
|
--text="Dieser Assistent erleichtert dir den Einstieg, indem er eine Auswahl gängiger Anwendungen anbietet.
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
Wichtig:
|
2026-03-13 10:04:21 +01:00
|
|
|
|
• Alle hier angebotenen Anwendungen können jederzeit auch über den COSMIC‑Shop installiert oder entfernt werden.
|
|
|
|
|
|
• Der Wizard ist optional und kann komplett übersprungen werden.
|
|
|
|
|
|
• Er deckt nur eine Auswahl verbreiteter Anwendungen ab – nicht alles.
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
2026-03-13 10:04:21 +01:00
|
|
|
|
Nach Abschluss wird dieser Assistent nicht erneut angezeigt." \
|
|
|
|
|
|
|| abort
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
# ----------------------------
|
2026-03-13 10:04:21 +01:00
|
|
|
|
# Auswahlfunktionen
|
2026-03-12 20:54:23 +01:00
|
|
|
|
# ----------------------------
|
2026-03-13 10:04:21 +01:00
|
|
|
|
|
|
|
|
|
|
choose_list() {
|
|
|
|
|
|
local title="$1"
|
|
|
|
|
|
local text="$2"
|
|
|
|
|
|
shift 2
|
|
|
|
|
|
|
|
|
|
|
|
local result
|
|
|
|
|
|
result=$(zenity --list \
|
|
|
|
|
|
--title="$title" \
|
|
|
|
|
|
--text="$text" \
|
|
|
|
|
|
--checklist \
|
|
|
|
|
|
--column="Auswahl" \
|
|
|
|
|
|
--column="ID" \
|
|
|
|
|
|
--column="Beschreibung" \
|
|
|
|
|
|
FALSE "$@" \
|
|
|
|
|
|
--separator="|" \
|
|
|
|
|
|
) || abort
|
|
|
|
|
|
|
|
|
|
|
|
echo "$result"
|
|
|
|
|
|
}
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
# ----------------------------
|
|
|
|
|
|
# Browser
|
|
|
|
|
|
# ----------------------------
|
2026-03-13 10:04:21 +01:00
|
|
|
|
BROWSERS=$(choose_list \
|
|
|
|
|
|
"Browser" \
|
|
|
|
|
|
"Webbrowser werden für viele Aufgaben benötigt." \
|
|
|
|
|
|
firefox "Mozilla Firefox (empfohlen)" \
|
|
|
|
|
|
chromium "Chromium (Open‑Source Basis)" \
|
|
|
|
|
|
brave "Brave (datenschutzorientiert)" \
|
|
|
|
|
|
)
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
# ----------------------------
|
|
|
|
|
|
# Office
|
|
|
|
|
|
# ----------------------------
|
2026-03-13 10:04:21 +01:00
|
|
|
|
OFFICE=$(choose_list \
|
|
|
|
|
|
"Office & Dokumente" \
|
|
|
|
|
|
"Anwendungen für Dokumente, PDFs und Büroarbeit:" \
|
|
|
|
|
|
libreoffice "LibreOffice (Office‑Suite)" \
|
|
|
|
|
|
onlyoffice "OnlyOffice (MS‑Office‑ähnlich)" \
|
|
|
|
|
|
collabora "Collabora Office" \
|
|
|
|
|
|
papers "Papers (PDF‑Viewer)" \
|
|
|
|
|
|
simplescan "Simple Scan" \
|
|
|
|
|
|
)
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
# ----------------------------
|
|
|
|
|
|
# Graphics
|
|
|
|
|
|
# ----------------------------
|
2026-03-13 10:04:21 +01:00
|
|
|
|
GRAPHICS=$(choose_list \
|
|
|
|
|
|
"Grafik & Kreativ" \
|
|
|
|
|
|
"Bildbearbeitung, Illustration und Vektorgrafik:" \
|
|
|
|
|
|
gimp "GIMP" \
|
|
|
|
|
|
krita "Krita" \
|
|
|
|
|
|
inkscape "Inkscape" \
|
|
|
|
|
|
)
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
# ----------------------------
|
|
|
|
|
|
# Media
|
|
|
|
|
|
# ----------------------------
|
2026-03-13 10:04:21 +01:00
|
|
|
|
MEDIA=$(choose_list \
|
|
|
|
|
|
"Medien & Unterhaltung" \
|
|
|
|
|
|
"Wiedergabe von Audio und Video:" \
|
|
|
|
|
|
vlc "VLC Media Player" \
|
2026-03-13 10:20:03 +01:00
|
|
|
|
showtime "Gnome Video Player"
|
2026-03-13 10:04:21 +01:00
|
|
|
|
spotify "Spotify Client" \
|
|
|
|
|
|
)
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
# ----------------------------
|
2026-03-13 10:04:21 +01:00
|
|
|
|
# Audio/Video Editing
|
2026-03-12 20:54:23 +01:00
|
|
|
|
# ----------------------------
|
2026-03-13 10:04:21 +01:00
|
|
|
|
AV=$(choose_list \
|
|
|
|
|
|
"Audio & Video‑Bearbeitung" \
|
|
|
|
|
|
"Erstellung und Bearbeitung von Audio‑ und Videoinhalten:" \
|
|
|
|
|
|
shotcut "Shotcut" \
|
|
|
|
|
|
kdenlive "Kdenlive" \
|
|
|
|
|
|
audacity "Audacity" \
|
|
|
|
|
|
ardour "Ardour" \
|
|
|
|
|
|
)
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
# ----------------------------
|
|
|
|
|
|
# Games
|
|
|
|
|
|
# ----------------------------
|
2026-03-13 10:04:21 +01:00
|
|
|
|
GAMES=$(choose_list \
|
|
|
|
|
|
"Spiele" \
|
|
|
|
|
|
"Plattformen für PC‑Spiele:" \
|
|
|
|
|
|
steam "Steam" \
|
|
|
|
|
|
lutris "Lutris" \
|
|
|
|
|
|
)
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
# ----------------------------
|
|
|
|
|
|
# Mail
|
|
|
|
|
|
# ----------------------------
|
2026-03-13 10:04:21 +01:00
|
|
|
|
MAIL=$(choose_list \
|
|
|
|
|
|
"E‑Mail" \
|
|
|
|
|
|
"Desktop‑E‑Mail‑Programme:" \
|
|
|
|
|
|
thunderbird "Thunderbird" \
|
|
|
|
|
|
geary "Geary" \
|
|
|
|
|
|
evolution "Evolution" \
|
|
|
|
|
|
)
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
# ----------------------------
|
|
|
|
|
|
# Development
|
|
|
|
|
|
# ----------------------------
|
2026-03-13 10:04:21 +01:00
|
|
|
|
DEV=$(choose_list \
|
|
|
|
|
|
"Entwicklung" \
|
|
|
|
|
|
"Werkzeuge für Software‑Entwicklung:" \
|
|
|
|
|
|
vscode "Visual Studio Code" \
|
|
|
|
|
|
)
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
# ----------------------------
|
|
|
|
|
|
# System Tools
|
|
|
|
|
|
# ----------------------------
|
2026-03-13 10:04:21 +01:00
|
|
|
|
SYSTEM=$(choose_list \
|
|
|
|
|
|
"System‑Werkzeuge" \
|
|
|
|
|
|
"Hilfsprogramme für System‑Konfiguration:" \
|
|
|
|
|
|
flatseal "Flatseal" \
|
|
|
|
|
|
)
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
# ----------------------------
|
|
|
|
|
|
# Homebrew
|
|
|
|
|
|
# ----------------------------
|
2026-03-13 10:04:21 +01:00
|
|
|
|
zenity --question \
|
|
|
|
|
|
--title="Homebrew (optional)" \
|
|
|
|
|
|
--text="Homebrew ist ein zusätzlicher Paketmanager für Entwickler‑ und CLI‑Werkzeuge.
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
• Installation im Benutzerverzeichnis
|
|
|
|
|
|
• Keine Änderung am Basissystem
|
2026-03-13 10:04:21 +01:00
|
|
|
|
• Komplett optional"
|
|
|
|
|
|
|
|
|
|
|
|
USE_BREW=$([[ $? -eq 0 ]] && echo yes || echo no)
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
2026-03-13 10:20:03 +01:00
|
|
|
|
# ----------------------------
|
|
|
|
|
|
# Auto‑Update
|
|
|
|
|
|
# ----------------------------
|
|
|
|
|
|
zenity --question \
|
|
|
|
|
|
--title="Automatische Systemaktualisierung" \
|
|
|
|
|
|
--text="Wenn diese Option aktiviert ist, prüft das System einmal pro Woche automatisch auf neue Aktualisierungen und installiert sie im Hintergrund.
|
|
|
|
|
|
|
|
|
|
|
|
Du kannst den Aktualisierungsdienst jederzeit manuell starten mit:
|
|
|
|
|
|
|
|
|
|
|
|
systemctl --user start bootc-update.service
|
|
|
|
|
|
|
|
|
|
|
|
Ohne automatische Updates kannst du Aktualisierungen jederzeit selbst anstoßen mit:
|
|
|
|
|
|
|
|
|
|
|
|
bootc upgrade"
|
|
|
|
|
|
|
|
|
|
|
|
AUTO_UPDATE=$([[ $? -eq 0 ]] && echo yes || echo no)
|
|
|
|
|
|
|
|
|
|
|
|
|
2026-03-12 20:54:23 +01:00
|
|
|
|
# ----------------------------
|
|
|
|
|
|
# Summary
|
|
|
|
|
|
# ----------------------------
|
2026-03-13 10:04:21 +01:00
|
|
|
|
SUMMARY="Browser: ${BROWSERS:-keine}
|
|
|
|
|
|
Office: ${OFFICE:-keine}
|
|
|
|
|
|
Grafik: ${GRAPHICS:-keine}
|
|
|
|
|
|
Medien: ${MEDIA:-keine}
|
|
|
|
|
|
Audio/Video: ${AV:-keine}
|
|
|
|
|
|
Spiele: ${GAMES:-keine}
|
|
|
|
|
|
E‑Mail: ${MAIL:-keine}
|
|
|
|
|
|
Entwicklung: ${DEV:-keine}
|
|
|
|
|
|
System: ${SYSTEM:-keine}
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
2026-03-13 10:20:03 +01:00
|
|
|
|
Homebrew: $USE_BREW
|
|
|
|
|
|
Automatische Updates: $AUTO_UPDATE"
|
|
|
|
|
|
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
2026-03-13 10:04:21 +01:00
|
|
|
|
zenity --question \
|
|
|
|
|
|
--title="Zusammenfassung" \
|
|
|
|
|
|
--text="Bitte bestätige die Installation:\n\n$SUMMARY" \
|
|
|
|
|
|
|| abort
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
# ----------------------------
|
|
|
|
|
|
# Installation
|
|
|
|
|
|
# ----------------------------
|
|
|
|
|
|
ensure_flathub
|
|
|
|
|
|
|
|
|
|
|
|
(
|
|
|
|
|
|
echo "10"; echo "# Installiere Browser..."
|
2026-03-13 10:04:21 +01:00
|
|
|
|
for b in ${BROWSERS//|/ }; do
|
2026-03-12 20:54:23 +01:00
|
|
|
|
case "$b" in
|
|
|
|
|
|
firefox) flatpak install -y flathub org.mozilla.firefox ;;
|
|
|
|
|
|
chromium) flatpak install -y flathub org.chromium.Chromium ;;
|
|
|
|
|
|
brave) flatpak install -y flathub com.brave.Browser ;;
|
|
|
|
|
|
esac
|
|
|
|
|
|
done
|
|
|
|
|
|
|
|
|
|
|
|
echo "25"; echo "# Installiere Office..."
|
2026-03-13 10:04:21 +01:00
|
|
|
|
[[ "$OFFICE" == *libreoffice* ]] && flatpak install -y flathub org.libreoffice.LibreOffice
|
|
|
|
|
|
[[ "$OFFICE" == *onlyoffice* ]] && flatpak install -y flathub org.onlyoffice.desktopeditors
|
|
|
|
|
|
[[ "$OFFICE" == *collabora* ]] && flatpak install -y flathub com.collabora.CollaboraOffice
|
|
|
|
|
|
[[ "$OFFICE" == *papers* ]] && flatpak install -y flathub org.gnome.Papers
|
|
|
|
|
|
[[ "$OFFICE" == *simplescan* ]] && flatpak install -y flathub org.gnome.SimpleScan
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
echo "40"; echo "# Installiere Grafik‑Tools..."
|
2026-03-13 10:04:21 +01:00
|
|
|
|
[[ "$GRAPHICS" == *gimp* ]] && flatpak install -y flathub org.gimp.GIMP
|
|
|
|
|
|
[[ "$GRAPHICS" == *krita* ]] && flatpak install -y flathub org.kde.krita
|
|
|
|
|
|
[[ "$GRAPHICS" == *inkscape* ]] && flatpak install -y flathub org.inkscape.Inkscape
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
echo "55"; echo "# Installiere Medien..."
|
2026-03-13 10:04:21 +01:00
|
|
|
|
[[ "$MEDIA" == *vlc* ]] && flatpak install -y flathub org.videolan.VLC
|
|
|
|
|
|
[[ "$MEDIA" == *spotify* ]] && flatpak install -y flathub com.spotify.Client
|
2026-03-13 10:20:03 +01:00
|
|
|
|
[[ "$MEDIA" == *showtime* ]] && flatpak install -y flathub org.gnome.Showtime
|
|
|
|
|
|
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
echo "70"; echo "# Installiere Audio/Video‑Tools..."
|
2026-03-13 10:04:21 +01:00
|
|
|
|
[[ "$AV" == *shotcut* ]] && flatpak install -y flathub org.shotcut.Shotcut
|
|
|
|
|
|
[[ "$AV" == *kdenlive* ]] && flatpak install -y flathub org.kde.kdenlive
|
|
|
|
|
|
[[ "$AV" == *audacity* ]] && flatpak install -y flathub org.audacityteam.Audacity
|
|
|
|
|
|
[[ "$AV" == *ardour* ]] && flatpak install -y flathub org.ardour.Ardour
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
echo "85"; echo "# Installiere Spiele‑Plattformen..."
|
2026-03-13 10:04:21 +01:00
|
|
|
|
[[ "$GAMES" == *steam* ]] && flatpak install -y flathub com.valvesoftware.Steam
|
|
|
|
|
|
[[ "$GAMES" == *lutris* ]] && flatpak install -y flathub net.lutris.Lutris
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
echo "90"; echo "# Installiere E‑Mail‑Clients..."
|
2026-03-13 10:04:21 +01:00
|
|
|
|
[[ "$MAIL" == *thunderbird* ]] && flatpak install -y flathub org.mozilla.Thunderbird
|
|
|
|
|
|
[[ "$MAIL" == *geary* ]] && flatpak install -y flathub org.gnome.Geary
|
|
|
|
|
|
[[ "$MAIL" == *evolution* ]] && flatpak install -y flathub org.gnome.Evolution
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
echo "95"; echo "# Installiere Entwicklung..."
|
2026-03-13 10:04:21 +01:00
|
|
|
|
[[ "$DEV" == *vscode* ]] && flatpak install -y flathub com.visualstudio.code
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
echo "97"; echo "# Installiere System‑Tools..."
|
2026-03-13 10:04:21 +01:00
|
|
|
|
[[ "$SYSTEM" == *flatseal* ]] && flatpak install -y flathub com.github.tchx84.Flatseal
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
echo "98"; echo "# Homebrew..."
|
|
|
|
|
|
[[ "$USE_BREW" == yes ]] && install_brew_and_setup_path
|
|
|
|
|
|
|
|
|
|
|
|
echo "100"; echo "# Fertig."
|
2026-03-13 10:04:21 +01:00
|
|
|
|
) | zenity --progress \
|
|
|
|
|
|
--title="Installation läuft" \
|
|
|
|
|
|
--text="Bitte warten..." \
|
|
|
|
|
|
--percentage=0 \
|
|
|
|
|
|
--auto-close
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
2026-03-13 10:20:03 +01:00
|
|
|
|
# ----------------------------
|
|
|
|
|
|
# Auto‑Update aktivieren
|
|
|
|
|
|
# ----------------------------
|
|
|
|
|
|
if [[ "$AUTO_UPDATE" == yes ]]; then
|
|
|
|
|
|
systemctl --user enable --now bootc-update.timer
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
2026-03-12 20:54:23 +01:00
|
|
|
|
# ----------------------------
|
|
|
|
|
|
# Mark wizard as done
|
|
|
|
|
|
# ----------------------------
|
2026-03-12 21:09:19 +01:00
|
|
|
|
rm -f "$HOME/.config/firstboot/run"
|
2026-03-13 10:04:21 +01:00
|
|
|
|
systemctl --user disable firstboot-setup.service
|
2026-03-12 21:09:19 +01:00
|
|
|
|
|
2026-03-13 10:04:21 +01:00
|
|
|
|
zenity --info \
|
|
|
|
|
|
--title="Fertig" \
|
|
|
|
|
|
--text="Die Einrichtung ist abgeschlossen.
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
2026-03-13 10:04:21 +01:00
|
|
|
|
Weitere Anwendungen kannst du jederzeit über den COSMIC‑Shop installieren.
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
|
|
|
|
|
Updates:
|
|
|
|
|
|
• Installierte Anwendungen werden über den COSMIC‑Shop aktualisiert.
|
|
|
|
|
|
• Homebrew‑Pakete können mit folgendem Befehl aktualisiert werden:
|
|
|
|
|
|
|
2026-03-13 10:04:21 +01:00
|
|
|
|
brew update && brew upgrade
|
2026-03-12 20:54:23 +01:00
|
|
|
|
|
2026-03-13 10:04:21 +01:00
|
|
|
|
Der Setup‑Wizard wird nicht erneut gestartet."
|