Update firstboot-setup.sh
switched to zenity
This commit is contained in:
@@ -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 Einrichtungs‑Assistent wird dann
|
||||
nicht erneut angezeigt.
|
||||
zenity --question \
|
||||
--title="Setup abbrechen?" \
|
||||
--text="Der Einrichtungs‑Assistent wird dann nicht erneut angezeigt.
|
||||
|
||||
Alle Anwendungen können jederzeit
|
||||
über den COSMIC‑Shop installiert
|
||||
oder entfernt werden.
|
||||
Alle Anwendungen können jederzeit über den COSMIC‑Shop installiert oder entfernt werden.
|
||||
|
||||
Möchtest du den Setup‑Assistenten
|
||||
wirklich abbrechen?" \
|
||||
$HEIGHT $WIDTH
|
||||
Möchtest du den Setup‑Assistenten 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 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.
|
||||
• 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.
|
||||
|
||||
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, Web‑Apps, Login‑Flows)." \
|
||||
$HEIGHT $WIDTH 5 \
|
||||
"firefox" "Mozilla Firefox (empfohlen)" ON \
|
||||
"chromium" "Chromium (Open‑Source 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 (Open‑Source 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 (Office‑Suite)" ON \
|
||||
"onlyoffice" "OnlyOffice (MS‑Office‑ähnlich)" OFF \
|
||||
"collabora" "Collabora Office (LibreOffice‑basiert)" OFF \
|
||||
"papers" "Papers (PDF‑Viewer)" ON \
|
||||
"simplescan" "Simple Scan (Scanner‑Anwendung)" OFF \
|
||||
2>&1 >/dev/tty)) || abort
|
||||
libreoffice "LibreOffice (Office‑Suite)" \
|
||||
onlyoffice "OnlyOffice (MS‑Office‑ähnlich)" \
|
||||
collabora "Collabora Office" \
|
||||
papers "Papers (PDF‑Viewer)" \
|
||||
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 & Video‑Bearbeitung" --checklist \
|
||||
AV=$(choose_list \
|
||||
"Audio & Video‑Bearbeitung" \
|
||||
"Erstellung und Bearbeitung von Audio‑ und Videoinhalten:" \
|
||||
$HEIGHT $WIDTH 6 \
|
||||
"shotcut" "Shotcut (einfacher Video‑Editor)" OFF \
|
||||
"kdenlive" "Kdenlive (leistungsfähiger Video‑Editor)" OFF \
|
||||
"audacity" "Audacity (Audio‑Bearbeitung)" OFF \
|
||||
"ardour" "Ardour (professionelle Audio‑Produktion)" OFF \
|
||||
2>&1 >/dev/tty)) || abort
|
||||
shotcut "Shotcut" \
|
||||
kdenlive "Kdenlive" \
|
||||
audacity "Audacity" \
|
||||
ardour "Ardour" \
|
||||
)
|
||||
|
||||
# ----------------------------
|
||||
# Games
|
||||
# ----------------------------
|
||||
GAMES=($($DIALOG --title "Spiele" --checklist \
|
||||
"Plattformen für PC‑Spiele.
|
||||
|
||||
Hinweis:
|
||||
• Für Steam und Lutris ist ein Benutzerkonto erforderlich.
|
||||
• Es werden keine Spiele automatisch installiert." \
|
||||
$HEIGHT $WIDTH 4 \
|
||||
"steam" "Steam (Valve‑Plattform)" OFF \
|
||||
"lutris" "Lutris (Multi‑Plattform‑Launcher)" OFF \
|
||||
2>&1 >/dev/tty)) || abort
|
||||
GAMES=$(choose_list \
|
||||
"Spiele" \
|
||||
"Plattformen für PC‑Spiele:" \
|
||||
steam "Steam" \
|
||||
lutris "Lutris" \
|
||||
)
|
||||
|
||||
# ----------------------------
|
||||
# Mail
|
||||
# ----------------------------
|
||||
MAIL=($($DIALOG --title "E‑Mail" --checklist \
|
||||
"Desktop‑E‑Mail‑Programme für IMAP/POP‑Konten:" \
|
||||
$HEIGHT $WIDTH 5 \
|
||||
"thunderbird" "Thunderbird (vollständiger Standard‑Client)" ON \
|
||||
"geary" "Geary (einfacher, moderner Mail‑Client)" OFF \
|
||||
"evolution" "Evolution (Business‑ & Exchange‑Client)" OFF \
|
||||
2>&1 >/dev/tty)) || abort
|
||||
MAIL=$(choose_list \
|
||||
"E‑Mail" \
|
||||
"Desktop‑E‑Mail‑Programme:" \
|
||||
thunderbird "Thunderbird" \
|
||||
geary "Geary" \
|
||||
evolution "Evolution" \
|
||||
)
|
||||
|
||||
# ----------------------------
|
||||
# Development
|
||||
# ----------------------------
|
||||
DEV=($($DIALOG --title "Entwicklung" --checklist \
|
||||
DEV=$(choose_list \
|
||||
"Entwicklung" \
|
||||
"Werkzeuge für Software‑Entwicklung:" \
|
||||
$HEIGHT $WIDTH 4 \
|
||||
"vscode" "Visual Studio Code" OFF \
|
||||
2>&1 >/dev/tty)) || abort
|
||||
vscode "Visual Studio Code" \
|
||||
)
|
||||
|
||||
# ----------------------------
|
||||
# System Tools
|
||||
# ----------------------------
|
||||
SYSTEM=($($DIALOG --title "System‑Werkzeuge" --checklist \
|
||||
SYSTEM=$(choose_list \
|
||||
"System‑Werkzeuge" \
|
||||
"Hilfsprogramme für System‑Konfiguration:" \
|
||||
$HEIGHT $WIDTH 4 \
|
||||
"flatseal" "Flatseal (Flatpak‑Rechte 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 CLI‑Werkzeuge.
|
||||
zenity --question \
|
||||
--title="Homebrew (optional)" \
|
||||
--text="Homebrew ist ein zusätzlicher Paketmanager für Entwickler‑ und CLI‑Werkzeuge.
|
||||
|
||||
• 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}
|
||||
E‑Mail: ${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}
|
||||
E‑Mail: ${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 Grafik‑Tools..."
|
||||
[[ " ${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/Video‑Tools..."
|
||||
[[ " ${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 Spiele‑Plattformen..."
|
||||
[[ " ${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 E‑Mail‑Clients..."
|
||||
[[ " ${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 System‑Tools..."
|
||||
[[ " ${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 COSMIC‑Shop installieren.
|
||||
Weitere Anwendungen kannst du jederzeit über den COSMIC‑Shop installieren.
|
||||
|
||||
Updates:
|
||||
• Installierte Anwendungen werden über den COSMIC‑Shop aktualisiert.
|
||||
• Homebrew‑Pakete können mit folgendem Befehl aktualisiert werden:
|
||||
|
||||
>>>>> brew update && brew upgrade <<<<<
|
||||
brew update && brew upgrade
|
||||
|
||||
Der Setup‑Wizard wird nicht erneut gestartet." \
|
||||
$HEIGHT $WIDTH
|
||||
|
||||
clear
|
||||
Der Setup‑Wizard wird nicht erneut gestartet."
|
||||
|
||||
Reference in New Issue
Block a user