106 lines
3.8 KiB
Bash
Executable File
106 lines
3.8 KiB
Bash
Executable File
#!/bin/bash
|
||
|
||
set -e # Skript bricht bei Fehlern ab
|
||
|
||
# Sicherstellen, dass das Skript **nicht** als root ausgeführt wird
|
||
if [[ $EUID -eq 0 ]]; then
|
||
echo "Bitte **nicht** als root oder mit sudo ausführen! Das Skript fordert sudo nur dort an, wo es benötigt wird."
|
||
exit 1
|
||
fi
|
||
|
||
echo "🔄 System wird aktualisiert..."
|
||
sudo apt update && sudo apt install -y flatpak neovim
|
||
|
||
# Flatpak Flathub-Repo hinzufügen
|
||
sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
||
|
||
# XDG_DATA_DIRS für Flatpak setzen in /etc/profile.d/flatpak_env.sh
|
||
sudo cat << 'EOF' > /etc/profile.d/flatpak.sh
|
||
if command -v flatpak > /dev/null; then
|
||
new_dirs=$(
|
||
(
|
||
unset G_MESSAGES_DEBUG
|
||
echo "${XDG_DATA_HOME:-"$HOME/.local/share"}/flatpak"
|
||
GIO_USE_VFS=local flatpak --installations
|
||
) | (
|
||
new_dirs=
|
||
while read -r install_path
|
||
do
|
||
share_path=$install_path/exports/share
|
||
case ":$XDG_DATA_DIRS:" in
|
||
(*":$share_path:"*) :;;
|
||
(*":$share_path/:"*) :;;
|
||
(*) new_dirs=${new_dirs:+${new_dirs}:}$share_path;;
|
||
esac
|
||
done
|
||
echo "$new_dirs"
|
||
)
|
||
)
|
||
|
||
export XDG_DATA_DIRS
|
||
XDG_DATA_DIRS="${new_dirs:+${new_dirs}:}${XDG_DATA_DIRS:-/usr/local/share:/usr/share}"
|
||
|
||
unset new_dirs
|
||
fi
|
||
EOF
|
||
|
||
sudo chmod +x /etc/profile.d/flatpak_env.sh
|
||
|
||
# Firefox-Installation
|
||
echo "🌍 Firefox wird installiert..."
|
||
sudo install -d -m 0755 /etc/apt/keyrings
|
||
wget -q https://packages.mozilla.org/apt/repo-signing-key.gpg -O /tmp/packages.mozilla.org.asc
|
||
gpg --dearmor < /tmp/packages.mozilla.org.asc | sudo tee /etc/apt/keyrings/packages.mozilla.org.asc > /dev/null
|
||
rm /tmp/packages.mozilla.org.asc
|
||
|
||
echo "deb [signed-by=/etc/apt/keyrings/packages.mozilla.org.asc] https://packages.mozilla.org/apt mozilla main" | sudo tee /etc/apt/sources.list.d/mozilla.list > /dev/null
|
||
echo -e 'Package: *\nPin: origin packages.mozilla.org\nPin-Priority: 1000' | sudo tee /etc/apt/preferences.d/mozilla > /dev/null
|
||
|
||
sudo apt update && sudo apt install -y firefox
|
||
|
||
# Hyprland User Bindings
|
||
HYPR_CONFIG_DIR="$HOME/.config/hypr/UserConfigs"
|
||
mkdir -p "$HYPR_CONFIG_DIR"
|
||
|
||
# Keybinds hinzufügen (falls nicht vorhanden)
|
||
declare -A KEYBINDS=(
|
||
["bindr = \$mainMod, \$mainMod_L, exec, pkill rofi || rofi -show drun -modi drun,filebrowser,run,window"]="rofi menu"
|
||
["bindr = \$mainMod, L, exec, \$scriptsDir/LockScreen.sh"]="screen lock"
|
||
["bindr = \$mainMod, V, exec, \$scriptsDir/ClipManager.sh"]="Clipboard Manager"
|
||
)
|
||
|
||
for BIND in "${!KEYBINDS[@]}"; do
|
||
if ! grep -Fxq "$BIND" "$HYPR_CONFIG_DIR/UserKeybinds.conf" 2>/dev/null; then
|
||
echo "$BIND # ${KEYBINDS[$BIND]}" >> "$HYPR_CONFIG_DIR/UserKeybinds.conf"
|
||
echo "✅ Keybind hinzugefügt: ${KEYBINDS[$BIND]}"
|
||
else
|
||
echo "ℹ️ Keybind existiert bereits: ${KEYBINDS[$BIND]}"
|
||
fi
|
||
done
|
||
|
||
# Standardvorlagen ablegen
|
||
echo "📂 Standardvorlagen werden im Vorlagen-Ordner erstellt..."
|
||
TEMPLATES_DIR="$HOME/Vorlagen"
|
||
mkdir -p "$TEMPLATES_DIR"
|
||
|
||
# Vorlagenliste
|
||
declare -A TEMPLATES=(
|
||
["Textdokument.txt"]="Dies ist eine Standard-Textdatei."
|
||
["Markdown-Dokument.md"]="# Markdown-Vorlage\n\nHier beginnt dein Markdown-Dokument."
|
||
["Bash-Skript.sh"]="#!/bin/bash\n\necho 'Hello, world!'"
|
||
["Python-Skript.py"]='#!/usr/bin/env python3\n\nprint("Hello, world!")'
|
||
)
|
||
|
||
for FILE in "${!TEMPLATES[@]}"; do
|
||
TEMPLATE_PATH="$TEMPLATES_DIR/$FILE"
|
||
if [[ ! -f "$TEMPLATE_PATH" ]]; then
|
||
echo -e "${TEMPLATES[$FILE]}" > "$TEMPLATE_PATH"
|
||
chmod +x "$TEMPLATE_PATH" # Falls Skript
|
||
echo "✅ Vorlage erstellt: $FILE"
|
||
else
|
||
echo "ℹ️ Vorlage existiert bereits: $FILE"
|
||
fi
|
||
done
|
||
|
||
echo "✅ Skript erfolgreich ausgeführt!"
|