5 changed files with 201 additions and 151 deletions
+21
View File
@@ -0,0 +1,21 @@
MIT License
Copyright (c) 2026 Linux-Café Esslingen
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+4
View File
@@ -18,6 +18,10 @@ You can also make use of snapshot feature of the virtualization software to easi
e.g. state directly after Linux Mint installation, before running the post-installation script.
This way you can test the script multiple times without needing to reinstall Linux Mint each time.
## License
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
## Release Process
This project uses a two-step release process.
@@ -2,18 +2,6 @@
SCRIPT_VERSION="v11"
question_answered_with_yes() {
local prompt="$1"
local ans
printf '%b\n Geben Sie j oder n ein und die Eingabetaste,\n Abbruch mit jeder anderen Taste ... [j/N]: ' "$prompt"
read -r ans
case "$ans" in
j|J|ja|y|Y) return 0 ;;
n|N|"") return 1 ;;
*) echo "Abbruch."; exit 1 ;;
esac
}
echo "
#####################################
#### Nachinstallationsarbeiten
@@ -48,17 +36,17 @@ sudo apt -y install clementine vlc htop hardinfo font-manager asunder gtkhash
sSuffixDate=$(date '+%Y-%m-%d_%H:%M:%S')
detect_desktop() {
if [ -n "$XDG_CURRENT_DESKTOP" ]; then
case "$XDG_CURRENT_DESKTOP" in
XFCE|Xfce|xfce) echo "xfce" ;;
X-Cinnamon|Cinnamon|cinnamon) echo "cinnamon" ;;
esac
elif [ -n "$DESKTOP_SESSION" ]; then
case "$DESKTOP_SESSION" in
*xfce*|*XFCE*) echo "xfce" ;;
*cinnamon*|*Cinnamon*) echo "cinnamon" ;;
esac
fi
if [ -n "$XDG_CURRENT_DESKTOP" ]; then
case "$XDG_CURRENT_DESKTOP" in
XFCE | Xfce | xfce) echo "xfce" ;;
X-Cinnamon | Cinnamon | cinnamon) echo "cinnamon" ;;
esac
elif [ -n "$DESKTOP_SESSION" ]; then
case "$DESKTOP_SESSION" in
*xfce* | *XFCE*) echo "xfce" ;;
*cinnamon* | *Cinnamon*) echo "cinnamon" ;;
esac
fi
}
echo
@@ -69,48 +57,54 @@ DETECTED_DESKTOP=$(detect_desktop)
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
if [ -z "$DETECTED_DESKTOP" ]; then
echo
echo
echo "Desktop-Umgebung konnte nicht erkannt werden."
echo "Bitte manuell auswählen:"
echo "1) XFCE"
echo "2) Cinnamon"
echo -n "Auswahl: "
read -r desktop_choice
case "$desktop_choice" in
1) DESKTOP="xfce" ;;
2) DESKTOP="cinnamon" ;;
*)
echo "Ungültige Auswahl. Skript wird beendet."
exit 1
;;
esac
else
echo
echo
echo "Erkannte Desktop-Umgebung: $DETECTED_DESKTOP"
if question_answered_with_yes "Verwende erkannte Desktop-Umgebung?"; then
DESKTOP="$DETECTED_DESKTOP"
else
echo
echo
echo "Desktop-Umgebung konnte nicht erkannt werden."
echo "Bitte manuell auswählen:"
echo "1) XFCE"
echo "2) Cinnamon"
echo -n "Auswahl: "
read -r desktop_choice
case "$desktop_choice" in
1) DESKTOP="xfce" ;;
2) DESKTOP="cinnamon" ;;
*) echo "Ungültige Auswahl. Skript wird beendet."; exit 1 ;;
1) DESKTOP="xfce" ;;
2) DESKTOP="cinnamon" ;;
*)
echo "Ungültige Auswahl. Skript wird beendet."
exit 1
;;
esac
else
echo
echo
echo "Erkannte Desktop-Umgebung: $DETECTED_DESKTOP"
if question_answered_with_yes "Verwende erkannte Desktop-Umgebung?"; then
DESKTOP="$DETECTED_DESKTOP"
else
echo
echo
echo "Bitte manuell auswählen:"
echo "1) XFCE"
echo "2) Cinnamon"
echo -n "Auswahl: "
read -r desktop_choice
case "$desktop_choice" in
1) DESKTOP="xfce" ;;
2) DESKTOP="cinnamon" ;;
*) echo "Ungültige Auswahl. Skript wird beendet."; exit 1 ;;
esac
fi
fi
fi
case "$DESKTOP" in
xfce)
source "$SCRIPT_DIR/xfce/xfce.sh"
;;
cinnamon)
source "$SCRIPT_DIR/cinnamon/cinnamon.sh"
;;
xfce)
source "$SCRIPT_DIR/xfce/xfce.sh"
;;
cinnamon)
source "$SCRIPT_DIR/cinnamon/cinnamon.sh"
;;
esac
echo ""
@@ -121,151 +115,146 @@ echo "#### nur auf Wunsch / bei Bedarf ####"
echo
### Sensoren ###
if question_answered_with_yes " ### Installiere Sensoren? ###"; then
echo "### Sensoren ###"
sudo apt install lm-sensors psensor
sudo sensors-detect
sudo service kmod start
if [ "$DESKTOP" = "xfce" ]; then
echo "## im Anschluss \"psensor\" konfigurieren im XFCE-Applet in der Taskleiste"
fi
echo "### Sensoren ###"
sudo apt install lm-sensors psensor
sudo sensors-detect
sudo service kmod start
if [ "$DESKTOP" = "xfce" ]; then
echo "## im Anschluss \"psensor\" konfigurieren im XFCE-Applet in der Taskleiste"
fi
fi
echo
echo
echo "### Kauf-DVDs abspielen ###"
if question_answered_with_yes " ### Installiere Paket um Film DVDs abspielen zu können? ###"; then
echo "### Kauf-DVDs abspielen ###"
sudo apt install libdvd-pkg
sudo dpkg-reconfigure libdvd-pkg
echo "### Kauf-DVDs abspielen ###"
sudo apt install libdvd-pkg
sudo dpkg-reconfigure libdvd-pkg
fi
echo
echo
echo "### Schriften, falls Microsoft-Office-Dokumente weiterverwendet werden sollen oder Dokumentenaustausch mit Microsoft-Nutzern gewünscht ist ###
## frei verfügbare, alte Microsoft-Standardschriften installieren:"
if question_answered_with_yes " ### Installiere M$ Schriften? ###"; then
echo "### M$ Schriften ###"
sudo apt install ttf-mscorefonts-installer
echo "### M$ Schriften ###"
sudo apt install ttf-mscorefonts-installer
fi
echo
echo
echo " ## Microsoft Aptos Schriftarten installieren:"
if question_answered_with_yes " ### Installiere Aptos Schriften? ###"; then
echo
echo "### Aptos Schriften ###"
echo
echo "### Aptos Schriften ###"
_aptos_zip="/tmp/Microsoft Aptos Fonts.zip"
_aptos_url="https://download.microsoft.com/download/8/6/0/860a94fa-7feb-44ef-ac79-c072d9113d69/Microsoft%20Aptos%20Fonts.zip"
_aptos_zip="/tmp/Microsoft Aptos Fonts.zip"
_aptos_url="https://download.microsoft.com/download/8/6/0/860a94fa-7feb-44ef-ac79-c072d9113d69/Microsoft%20Aptos%20Fonts.zip"
echo "Lade Aptos Schriften herunter..."
wget "$_aptos_url" -O "$_aptos_zip"
echo "Lade Aptos Schriften herunter..."
wget "$_aptos_url" -O "$_aptos_zip"
echo "Entpacke das Archiv..."
unzip -o "$_aptos_zip" -d /tmp/aptos_fonts
echo "Erstelle /usr/share/fonts/truetype/aptos/"
sudo mkdir -p /usr/share/fonts/truetype/aptos
echo "Installiere alle .ttf Schriften..."
find /tmp/aptos_fonts -name "*.ttf" -exec sudo install -m644 {} /usr/share/fonts/truetype/aptos/ \; 2>/dev/null || true
echo "Aktualisiere den Font-Cache"
fc-cache -f
echo "Fertig! Aptos Schriftarten sind installiert."
echo "Entpacke das Archiv..."
unzip -o "$_aptos_zip" -d /tmp/aptos_fonts
echo "Erstelle /usr/share/fonts/truetype/aptos/"
sudo mkdir -p /usr/share/fonts/truetype/aptos
echo "Installiere alle .ttf Schriften..."
find /tmp/aptos_fonts -name "*.ttf" -exec sudo install -m644 {} /usr/share/fonts/truetype/aptos/ \; 2>/dev/null || true
echo "Aktualisiere den Font-Cache"
fc-cache -f
echo "Fertig! Aptos Schriftarten sind installiert."
echo "Entferne temporäre Dateien..."
rm -rf "$_aptos_zip" /tmp/aptos_fonts
echo "Entferne temporäre Dateien..."
rm -rf "$_aptos_zip" /tmp/aptos_fonts
fi
echo
echo
echo " ## freie Google-Schriften"
if question_answered_with_yes " ### Installiere Google Schriften? ###"; then
echo
echo "### Google Schriften ###"
echo
echo "### Google Schriften ###"
_google_fonts_dir="/usr/share/fonts/truetype/google-fonts"
_google_fonts_url_base="https://gwfh.mranftl.com/api/fonts"
_google_fonts_dir="/usr/share/fonts/truetype/google-fonts"
_google_fonts_url_base="https://gwfh.mranftl.com/api/fonts"
_google_fonts="arimo carlito caladea inconsolata cousine libre-franklin neuton cabin oswald crimson-text lustria tinos league-spartan pt-sans"
_google_fonts="arimo carlito caladea inconsolata cousine libre-franklin neuton cabin oswald crimson-text lustria tinos league-spartan pt-sans"
sudo mkdir -p "$_google_fonts_dir"
sudo mkdir -p "$_google_fonts_dir"
for _font in $_google_fonts; do
echo "Lade $_font herunter..."
curl -s -o /tmp/"$_font".zip "${_google_fonts_url_base}/$_font?download=zip&subsets=latin,latin-ext&variants=regular,700"
if [ -s /tmp/"$_font".zip ] && head -c 2 /tmp/"$_font".zip | grep -q "PK"; then
unzip -o /tmp/"$_font".zip -d /tmp/"$_font"_fonts
sudo cp /tmp/"$_font"_fonts/fonts/"$_font"/* "$_google_fonts_dir/" 2>/dev/null || \
sudo cp /tmp/"$_font"_fonts/* "$_google_fonts_dir/" 2>/dev/null || true
rm -rf /tmp/"$_font".zip /tmp/"$_font"_fonts
else
echo "Fehler: Download von $_font fehlgeschlagen, überspringe..."
rm -f /tmp/"$_font".zip
fi
done
for _font in $_google_fonts; do
echo "Lade $_font herunter..."
curl -s -o /tmp/"$_font".zip "${_google_fonts_url_base}/$_font?download=zip&subsets=latin,latin-ext&variants=regular,700"
if [ -s /tmp/"$_font".zip ] && head -c 2 /tmp/"$_font".zip | grep -q "PK"; then
unzip -o /tmp/"$_font".zip -d /tmp/"$_font"_fonts
sudo cp /tmp/"$_font"_fonts/fonts/"$_font"/* "$_google_fonts_dir/" 2>/dev/null ||
sudo cp /tmp/"$_font"_fonts/* "$_google_fonts_dir/" 2>/dev/null || true
rm -rf /tmp/"$_font".zip /tmp/"$_font"_fonts
else
echo "Fehler: Download von $_font fehlgeschlagen, überspringe..."
rm -f /tmp/"$_font".zip
fi
done
echo "Aktualisiere den Font-Cache"
fc-cache -f
echo "Fertig! Google Schriftarten sind installiert."
echo "Die Anpassung der Standardschriften und/oder das Erstellen der Ersetzungstabelle in Libre Office muss manuell erfolgen, falls gewünscht."
echo "Aktualisiere den Font-Cache"
fc-cache -f
echo "Fertig! Google Schriftarten sind installiert."
echo "Die Anpassung der Standardschriften und/oder das Erstellen der Ersetzungstabelle in Libre Office muss manuell erfolgen, falls gewünscht."
fi
echo
echo
echo "#### Chromium Browser installieren:"
if question_answered_with_yes " ### Installiere Chromium? ###"; then
echo "### Chromium ###"
sudo apt install chromium-browser
sudo apt install chromium
echo "### Chromium ###"
sudo apt install chromium-browser
sudo apt install chromium
fi
echo
echo
echo "#### Vivaldi Browser installieren:"
if question_answered_with_yes " ### Installiere Vivaldi? ###"; then
echo "### ###"
echo "## nötige Zusatzpakete installieren"
sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https curl -y
#
echo "## ## key importieren"
curl -fsSL https://repo.vivaldi.com/archive/linux_signing_key.pub | gpg --dearmor | sudo tee /usr/share/keyrings/vivaldi.gpg > /dev/null
#
echo "## ## Repository hinzufügen"
echo deb [arch=amd64,armhf signed-by=/usr/share/keyrings/vivaldi.gpg] https://repo.vivaldi.com/stable/deb/ stable main | sudo tee /etc/apt/sources.list.d/vivaldi.list
#
sudo apt update && sudo apt install vivaldi-stable
#
echo "## ## Gnome-Schlüsselbund-Fehlermeldung bei jedem Start von Chrome/Chromium beheben: Starter bzw. .desktop-Datei mit folgendem Parameter ergänzen: "
echo "## ## --password-store=basic"
#
echo "### ###"
echo "## nötige Zusatzpakete installieren"
sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https curl -y
#
echo "## ## key importieren"
curl -fsSL https://repo.vivaldi.com/archive/linux_signing_key.pub | gpg --dearmor | sudo tee /usr/share/keyrings/vivaldi.gpg >/dev/null
#
echo "## ## Repository hinzufügen"
echo deb [arch=amd64,armhf signed-by=/usr/share/keyrings/vivaldi.gpg] https://repo.vivaldi.com/stable/deb/ stable main | sudo tee /etc/apt/sources.list.d/vivaldi.list
#
sudo apt update && sudo apt install vivaldi-stable
#
echo "## ## Gnome-Schlüsselbund-Fehlermeldung bei jedem Start von Chrome/Chromium beheben: Starter bzw. .desktop-Datei mit folgendem Parameter ergänzen: "
echo "## ## --password-store=basic"
#
fi
echo
echo
echo "####Signal für Desktop (die Nutzung setzt eine Signal-Installation auf einem Android- Oder Apple-Gerät voraus!)#### "
if question_answered_with_yes " ### Installiere Signal? ###"; then
echo "### ###"
echo "## zusätzliches Repository nötig!
echo "### ###"
echo "## zusätzliches Repository nötig!
## NOTE: These instructions only work for 64-bit Debian-based
## Linux distributions such as Ubuntu, Mint etc.
## key importieren
"
wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor > /tmp/signal-desktop-keyring.gpg
cat /tmp/signal-desktop-keyring.gpg | sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg > /dev/null
#
echo "## Repository hinzufügen:"
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main' | sudo tee /etc/apt/sources.list.d/signal-xenial.list
sudo apt update && sudo apt install signal-desktop
#
wget -O- https://updates.signal.org/desktop/apt/keys.asc | gpg --dearmor >/tmp/signal-desktop-keyring.gpg
cat /tmp/signal-desktop-keyring.gpg | sudo tee /usr/share/keyrings/signal-desktop-keyring.gpg >/dev/null
#
echo "## Repository hinzufügen:"
echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/signal-desktop-keyring.gpg] https://updates.signal.org/desktop/apt xenial main' | sudo tee /etc/apt/sources.list.d/signal-xenial.list
sudo apt update && sudo apt install signal-desktop
#
fi
# execute bundles
# example: $SCRIPT_DIR/bundles/template.sh
echo
echo "###############################"
@@ -277,8 +266,8 @@ echo
echo "Verbleibende manuelle Schritte:"
if [ "$DESKTOP" = "xfce" ]; then
echo "### Taskleiste ###: XFCE-Applets für 2x Netzwerkmonitor (LAN + WLAN) konfigurieren"
echo "Wenn ### Sensoren ### installiert wurden: psensor konfigurieren im XFCE-Applet in der Taskleiste, falls gewünscht."
echo "### Taskleiste ###: XFCE-Applets für 2x Netzwerkmonitor (LAN + WLAN) konfigurieren"
echo "Wenn ### Sensoren ### installiert wurden: psensor konfigurieren im XFCE-Applet in der Taskleiste, falls gewünscht."
fi
echo "Wenn ### Google-Schriften ### installiert wurden: Anpassung der Standardschriften und/oder das Erstellen der Ersetzungstabelle in Libre Office, falls gewünscht."
+20
View File
@@ -0,0 +1,20 @@
#!/bin/bash
# <short description here>
# A shellscript meant to be used as subscript of `/post_installation_script/Nachinstallationsarbeiten_LC_Esslingen.sh`.
SCRIPT_DIR="$(cd "$(dirname "$0")"/.. && pwd)"
source "$SCRIPT_DIR/common.sh"
# please seperate stuff that doesn't belong together and maybe put short descriptions before those blocks (as comments) like in the following example:
# # Steam and Steam-related packages
# echo '### Steam ###'
# if question_answered_with_yes " ### Installiere Steam? ###"; then
# echo "### Steam ###"
# sudo apt install steam-installer
# # sudo flatpak install com.valvesoftware.Steam
# if question_answered_with_yes " ### Installiere Steam-Geräte-Unterstützungspaket (z. B. für Steam-Controller)? ###"; then
# echo "### Steam-Devices ###"
# sudo apt install steam-devices
# fi
# fi
# echo '### Ende Steam ###'
+16
View File
@@ -0,0 +1,16 @@
# functions and variables for use in multiple files ("common" functions and variables)
question_answered_with_yes() {
local prompt="$1"
local ans
printf '%b\n Geben Sie j oder n ein und die Eingabetaste,\n Abbruch mit jeder anderen Taste ... [j/N]: ' "$prompt"
read -r ans
case "$ans" in
j | J | ja | y | Y) return 0 ;;
n | N | "") return 1 ;;
*)
echo "Abbruch."
exit 1
;;
esac
}