Update firstboot-setup.sh

switched to zenity
This commit is contained in:
humocs-man
2026-03-13 10:04:21 +01:00
committed by GitHub
parent 6ee8c5c3ad
commit e19ff33db3
@@ -1,42 +1,25 @@
#!/usr/bin/env bash
set -euo pipefail
DIALOG=dialog
HEIGHT=20
WIDTH=74
LOG="$HOME/.local/state/firstboot-setup.log"
if [[ -z "${TERM:-}" ]]; then
exec cosmic-terminal -- "$HOME/.config/firstboot/firstboot-user.sh"
fi
exec > >(tee -a "$LOG") 2>&1
abort() {
$DIALOG --title "Setup abbrechen?" --yesno \
"Der EinrichtungsAssistent wird dann
nicht erneut angezeigt.
zenity --question \
--title="Setup abbrechen?" \
--text="Der EinrichtungsAssistent wird dann nicht erneut angezeigt.
Alle Anwendungen können jederzeit
über den COSMICShop installiert
oder entfernt werden.
Alle Anwendungen können jederzeit über den COSMICShop installiert oder entfernt werden.
Möchtest du den SetupAssistenten
wirklich abbrechen?" \
$HEIGHT $WIDTH
Möchtest du den SetupAssistenten wirklich abbrechen?"
if [[ $? -eq 0 ]]; then
rm -f "$HOME/.config/firstboot/run"
systemctl --user disable firstboot-setup.service
clear
exit 0
fi
fi
# User hat sich gegen Abbruch entschieden → zurück
return 0
}
@@ -70,167 +53,170 @@ install_brew_and_setup_path() {
# ----------------------------
# Welcome
# ----------------------------
$DIALOG --title "Willkommen bei COSMIC" --msgbox \
"Dieser Assistent erleichtert dir den Einstieg,
indem er eine Auswahl gängiger Anwendungen anbietet.
zenity --info \
--title="Willkommen bei COSMIC" \
--text="Dieser Assistent erleichtert dir den Einstieg, indem er eine Auswahl gängiger Anwendungen anbietet.
Wichtig:
• Alle hier angebotenen Anwendungen können
jederzeit auch über den COSMICShop installiert
oder entfernt werden.
• Der Wizard ist optional und kann komplett
übersprungen werden.
• Er deckt nur eine Auswahl verbreiteter
Anwendungen ab nicht alles.
• Alle hier angebotenen Anwendungen können jederzeit auch über den COSMICShop installiert oder entfernt werden.
• Der Wizard ist optional und kann komplett übersprungen werden.
• Er deckt nur eine Auswahl verbreiteter Anwendungen ab nicht alles.
Nach Abschluss wird dieser Assistent
nicht erneut angezeigt." \
$HEIGHT $WIDTH || abort
Nach Abschluss wird dieser Assistent nicht erneut angezeigt." \
|| abort
# ----------------------------
# Selections
# Auswahlfunktionen
# ----------------------------
BROWSERS=()
OFFICE=()
GRAPHICS=()
MEDIA=()
AV=()
GAMES=()
MAIL=()
DEV=()
SYSTEM=()
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"
}
# ----------------------------
# Browser
# ----------------------------
BROWSERS=($($DIALOG --title "Browser" --checklist \
"Webbrowser werden für viele Aufgaben benötigt
(z.B. Dokumentation, WebApps, LoginFlows)." \
$HEIGHT $WIDTH 5 \
"firefox" "Mozilla Firefox (empfohlen)" ON \
"chromium" "Chromium (OpenSource Basis)" OFF \
"brave" "Brave (datenschutzorientiert)" OFF \
2>&1 >/dev/tty)) || abort
BROWSERS=$(choose_list \
"Browser" \
"Webbrowser werden für viele Aufgaben benötigt." \
firefox "Mozilla Firefox (empfohlen)" \
chromium "Chromium (OpenSource Basis)" \
brave "Brave (datenschutzorientiert)" \
)
# ----------------------------
# Office
# ----------------------------
OFFICE=($($DIALOG --title "Office & Dokumente" --checklist \
OFFICE=$(choose_list \
"Office & Dokumente" \
"Anwendungen für Dokumente, PDFs und Büroarbeit:" \
$HEIGHT $WIDTH 7 \
"libreoffice" "LibreOffice (OfficeSuite)" ON \
"onlyoffice" "OnlyOffice (MSOffice‑ähnlich)" OFF \
"collabora" "Collabora Office (LibreOfficebasiert)" OFF \
"papers" "Papers (PDFViewer)" ON \
"simplescan" "Simple Scan (ScannerAnwendung)" OFF \
2>&1 >/dev/tty)) || abort
libreoffice "LibreOffice (OfficeSuite)" \
onlyoffice "OnlyOffice (MSOfficeähnlich)" \
collabora "Collabora Office" \
papers "Papers (PDFViewer)" \
simplescan "Simple Scan" \
)
# ----------------------------
# Graphics
# ----------------------------
GRAPHICS=($($DIALOG --title "Grafik & Kreativ" --checklist \
GRAPHICS=$(choose_list \
"Grafik & Kreativ" \
"Bildbearbeitung, Illustration und Vektorgrafik:" \
$HEIGHT $WIDTH 5 \
"gimp" "GIMP (Bildbearbeitung)" OFF \
"krita" "Krita (Zeichnen & Illustration)" OFF \
"inkscape" "Inkscape (Vektorgrafiken & SVG)" OFF \
2>&1 >/dev/tty)) || abort
gimp "GIMP" \
krita "Krita" \
inkscape "Inkscape" \
)
# ----------------------------
# Media
# ----------------------------
MEDIA=($($DIALOG --title "Medien & Unterhaltung" --checklist \
MEDIA=$(choose_list \
"Medien & Unterhaltung" \
"Wiedergabe von Audio und Video:" \
$HEIGHT $WIDTH 4 \
"vlc" "VLC Media Player" ON \
"spotify" "Spotify Client" OFF \
2>&1 >/dev/tty)) || abort
vlc "VLC Media Player" \
spotify "Spotify Client" \
)
# ----------------------------
# Audio/Video Editing
# ----------------------------
AV=($($DIALOG --title "Audio & VideoBearbeitung" --checklist \
AV=$(choose_list \
"Audio & VideoBearbeitung" \
"Erstellung und Bearbeitung von Audio und Videoinhalten:" \
$HEIGHT $WIDTH 6 \
"shotcut" "Shotcut (einfacher VideoEditor)" OFF \
"kdenlive" "Kdenlive (leistungsfähiger VideoEditor)" OFF \
"audacity" "Audacity (AudioBearbeitung)" OFF \
"ardour" "Ardour (professionelle AudioProduktion)" OFF \
2>&1 >/dev/tty)) || abort
shotcut "Shotcut" \
kdenlive "Kdenlive" \
audacity "Audacity" \
ardour "Ardour" \
)
# ----------------------------
# Games
# ----------------------------
GAMES=($($DIALOG --title "Spiele" --checklist \
"Plattformen für PCSpiele.
Hinweis:
• Für Steam und Lutris ist ein Benutzerkonto erforderlich.
• Es werden keine Spiele automatisch installiert." \
$HEIGHT $WIDTH 4 \
"steam" "Steam (ValvePlattform)" OFF \
"lutris" "Lutris (MultiPlattformLauncher)" OFF \
2>&1 >/dev/tty)) || abort
GAMES=$(choose_list \
"Spiele" \
"Plattformen für PCSpiele:" \
steam "Steam" \
lutris "Lutris" \
)
# ----------------------------
# Mail
# ----------------------------
MAIL=($($DIALOG --title "EMail" --checklist \
"DesktopEMailProgramme für IMAP/POPKonten:" \
$HEIGHT $WIDTH 5 \
"thunderbird" "Thunderbird (vollständiger StandardClient)" ON \
"geary" "Geary (einfacher, moderner MailClient)" OFF \
"evolution" "Evolution (Business & ExchangeClient)" OFF \
2>&1 >/dev/tty)) || abort
MAIL=$(choose_list \
"EMail" \
"DesktopEMailProgramme:" \
thunderbird "Thunderbird" \
geary "Geary" \
evolution "Evolution" \
)
# ----------------------------
# Development
# ----------------------------
DEV=($($DIALOG --title "Entwicklung" --checklist \
DEV=$(choose_list \
"Entwicklung" \
"Werkzeuge für SoftwareEntwicklung:" \
$HEIGHT $WIDTH 4 \
"vscode" "Visual Studio Code" OFF \
2>&1 >/dev/tty)) || abort
vscode "Visual Studio Code" \
)
# ----------------------------
# System Tools
# ----------------------------
SYSTEM=($($DIALOG --title "SystemWerkzeuge" --checklist \
SYSTEM=$(choose_list \
"SystemWerkzeuge" \
"Hilfsprogramme für SystemKonfiguration:" \
$HEIGHT $WIDTH 4 \
"flatseal" "Flatseal (FlatpakRechte verwalten)" OFF \
2>&1 >/dev/tty)) || abort
flatseal "Flatseal" \
)
# ----------------------------
# Homebrew
# ----------------------------
USE_BREW=$($DIALOG --title "Homebrew (optional)" --yesno \
"Homebrew ist ein zusätzlicher Paketmanager
für Entwickler und CLIWerkzeuge.
zenity --question \
--title="Homebrew (optional)" \
--text="Homebrew ist ein zusätzlicher Paketmanager für Entwickler und CLIWerkzeuge.
• Installation im Benutzerverzeichnis
• Keine Änderung am Basissystem
• Komplett optional" \
$HEIGHT $WIDTH && echo yes || echo no)
• Komplett optional"
USE_BREW=$([[ $? -eq 0 ]] && echo yes || echo no)
# ----------------------------
# Summary
# ----------------------------
SUMMARY="Browser: ${BROWSERS[*]:-keine}
Office: ${OFFICE[*]:-keine}
Grafik: ${GRAPHICS[*]:-keine}
Medien: ${MEDIA[*]:-keine}
Audio/Video: ${AV[*]:-keine}
Spiele: ${GAMES[*]:-keine}
EMail: ${MAIL[*]:-keine}
Entwicklung: ${DEV[*]:-keine}
System: ${SYSTEM[*]:-keine}
SUMMARY="Browser: ${BROWSERS:-keine}
Office: ${OFFICE:-keine}
Grafik: ${GRAPHICS:-keine}
Medien: ${MEDIA:-keine}
Audio/Video: ${AV:-keine}
Spiele: ${GAMES:-keine}
EMail: ${MAIL:-keine}
Entwicklung: ${DEV:-keine}
System: ${SYSTEM:-keine}
Homebrew: $USE_BREW"
$DIALOG --title "Zusammenfassung" --yesno \
"Bitte bestätige die Installation:\n\n$SUMMARY" \
$HEIGHT $WIDTH || abort
zenity --question \
--title="Zusammenfassung" \
--text="Bitte bestätige die Installation:\n\n$SUMMARY" \
|| abort
# ----------------------------
# Installation
@@ -239,7 +225,7 @@ ensure_flathub
(
echo "10"; echo "# Installiere Browser..."
for b in "${BROWSERS[@]}"; do
for b in ${BROWSERS//|/ }; do
case "$b" in
firefox) flatpak install -y flathub org.mozilla.firefox ;;
chromium) flatpak install -y flathub org.chromium.Chromium ;;
@@ -248,70 +234,68 @@ ensure_flathub
done
echo "25"; echo "# Installiere Office..."
[[ " ${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
[[ "$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
echo "40"; echo "# Installiere GrafikTools..."
[[ " ${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
[[ "$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
echo "55"; echo "# Installiere Medien..."
[[ " ${MEDIA[*]} " == *" vlc "* ]] && flatpak install -y flathub org.videolan.VLC
[[ " ${MEDIA[*]} " == *" spotify "* ]] && flatpak install -y flathub com.spotify.Client
[[ "$MEDIA" == *vlc* ]] && flatpak install -y flathub org.videolan.VLC
[[ "$MEDIA" == *spotify* ]] && flatpak install -y flathub com.spotify.Client
echo "70"; echo "# Installiere Audio/VideoTools..."
[[ " ${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
[[ "$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
echo "85"; echo "# Installiere SpielePlattformen..."
[[ " ${GAMES[*]} " == *" steam "* ]] && flatpak install -y flathub com.valvesoftware.Steam
[[ " ${GAMES[*]} " == *" lutris "* ]] && flatpak install -y flathub net.lutris.Lutris
[[ "$GAMES" == *steam* ]] && flatpak install -y flathub com.valvesoftware.Steam
[[ "$GAMES" == *lutris* ]] && flatpak install -y flathub net.lutris.Lutris
echo "90"; echo "# Installiere EMailClients..."
[[ " ${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
[[ "$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
echo "95"; echo "# Installiere Entwicklung..."
[[ " ${DEV[*]} " == *" vscode "* ]] && flatpak install -y flathub com.visualstudio.code
[[ "$DEV" == *vscode* ]] && flatpak install -y flathub com.visualstudio.code
echo "97"; echo "# Installiere SystemTools..."
[[ " ${SYSTEM[*]} " == *" flatseal "* ]] && flatpak install -y flathub com.github.tchx84.Flatseal
[[ "$SYSTEM" == *flatseal* ]] && flatpak install -y flathub com.github.tchx84.Flatseal
echo "98"; echo "# Homebrew..."
[[ "$USE_BREW" == yes ]] && install_brew_and_setup_path
echo "100"; echo "# Fertig."
) | $DIALOG --title "Installation läuft" --gauge \
"Bitte warten..." \
$HEIGHT $WIDTH 0
) | zenity --progress \
--title="Installation läuft" \
--text="Bitte warten..." \
--percentage=0 \
--auto-close
# ----------------------------
# Mark wizard as done
# ----------------------------
rm -f "$HOME/.config/firstboot/run"
systemctl --user disable firstboot-user.service
systemctl --user disable firstboot-setup.service
zenity --info \
--title="Fertig" \
--text="Die Einrichtung ist abgeschlossen.
$DIALOG --title "Fertig" --msgbox \
"Die Einrichtung ist abgeschlossen.
Weitere Anwendungen kannst du jederzeit
über den COSMICShop installieren.
Weitere Anwendungen kannst du jederzeit über den COSMICShop installieren.
Updates:
• Installierte Anwendungen werden über den COSMICShop aktualisiert.
• HomebrewPakete können mit folgendem Befehl aktualisiert werden:
>>>>> brew update && brew upgrade <<<<<
brew update && brew upgrade
Der SetupWizard wird nicht erneut gestartet." \
$HEIGHT $WIDTH
clear
Der SetupWizard wird nicht erneut gestartet."