From d991228c6b5512b5aa7f5cf2e3f450c9c24f64ff Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Sun, 9 Mar 2025 23:31:50 +0100 Subject: [PATCH 01/41] =?UTF-8?q?Feat:=20Passt=20die=20Debian=2012=20bookw?= =?UTF-8?q?orm=20Install-Skripte=20f=C3=BCr=20Tuxedo=20OS=20an.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 0_Setup.sh | 34 +++++++++++++++++++++++++++++----- 10_Programs.sh | 5 ++--- 1_TrixieUpgrade.sh | 34 ---------------------------------- 3_HyprlandInstall.sh | 27 ++++++--------------------- 4_ZshRegister.sh | 4 ++-- 6_Polish.sh | 14 +++++++++++--- 9_GamingSetup.sh | 18 +----------------- README.md | 3 ++- 8 files changed, 53 insertions(+), 86 deletions(-) delete mode 100755 1_TrixieUpgrade.sh diff --git a/0_Setup.sh b/0_Setup.sh index 8e98297..9c13ebb 100755 --- a/0_Setup.sh +++ b/0_Setup.sh @@ -1,13 +1,37 @@ #!/bin/bash -# Root-Rechte prüfen -if [ "$(id -u)" -ne 0 ]; then - echo "Bitte mit sudo ausführen!" - exit 1 +# Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird +if [ "$EUID" -ne 0 ]; then + echo "Bitte führen Sie das Skript mit Root-Rechten aus." + exit 1 fi apt update && apt upgrade -y -apt install -y git sudo 7zip unrar unzip network-manager software-properties-common tree bluetooth +apt install -y git sudo 7zip unrar unzip network-manager software-properties-common tree bluetooth tuxedo-neofetch tuxedo-ufw-profiles ubuntu-drivers-common apt-file kerneloops language-pack-gnome-de + +echo "Passe Grub-Konfig an." + +# Backup der aktuellen GRUB-Konfiguration +GRUB_CONFIG="/etc/default/grub" +BACKUP_CONFIG="/etc/default/grub.bak" + +if [ -f "$GRUB_CONFIG" ]; then + echo "Erstelle ein Backup der aktuellen GRUB-Konfiguration unter $BACKUP_CONFIG" + cp "$GRUB_CONFIG" "$BACKUP_CONFIG" + + # GRUB-Konfiguration anpassen + echo "Passe die GRUB-Konfiguration an, um den GRUB-Loader immer anzuzeigen..." + sed -i 's/^GRUB_TIMEOUT_STYLE=.*/GRUB_TIMEOUT_STYLE=menu/' "$GRUB_CONFIG" + sed -i 's/^GRUB_TIMEOUT=.*/GRUB_TIMEOUT=5/' "$GRUB_CONFIG" + + # GRUB-Konfiguration aktualisieren + echo "Aktualisiere die GRUB-Konfiguration..." + update-grub + + echo "Die GRUB-Konfiguration wurde erfolgreich angepasst." +else + echo "Die Datei $GRUB_CONFIG wurde nicht gefunden. Passe GRUB-Config nicht an." +fi # Der Code, der eingefügt werden soll CONFIG_BLOCK='if groups | grep -q "\bsudo\b"; then diff --git a/10_Programs.sh b/10_Programs.sh index 3dd72a7..af84eaa 100755 --- a/10_Programs.sh +++ b/10_Programs.sh @@ -236,9 +236,8 @@ flatpak install flathub org.gnome.World.Secrets -y flatpak install flathub org.gnome.FileRoller echo "🔄 Installiere VeraCrypt..." -echo 'deb http://download.opensuse.org/repositories/home:/unit193:/veracrypt/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:unit193:veracrypt.list -curl -fsSL https://download.opensuse.org/repositories/home:unit193:veracrypt/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_unit193_veracrypt.gpg > /dev/null +sudo add-apt-repository ppa:unit193/encryption sudo apt update -sudo apt install veracrypt +sudo apt install -y veracrypt echo "✅ Alle Programme wurden erfolgreich installiert!" diff --git a/1_TrixieUpgrade.sh b/1_TrixieUpgrade.sh deleted file mode 100755 index 7c045f8..0000000 --- a/1_TrixieUpgrade.sh +++ /dev/null @@ -1,34 +0,0 @@ -#!/bin/bash - -# Root-Rechte prüfen -if [ "$(id -u)" -ne 0 ]; then - echo "Bitte mit sudo ausführen!" - exit 1 -fi - -# Sicherheitsabfrage -read -p "Achtung! Du führst ein Release-Upgrade auf Debian Trixie durch. Fortfahren? (ja/nein): " choice -if [[ "$choice" != "ja" ]]; then - echo "Upgrade abgebrochen." - exit 0 -fi - -echo "Aktualisiere Paketlisten..." -sudo apt-get update - -echo "Starte System-Upgrade..." -sudo apt-get full-upgrade -y - -echo "Ändere die Paketquellen auf Debian Trixie..." -sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list -sudo find /etc/apt/sources.list.d -type f -exec sed -i 's/bookworm/trixie/g' {} \; - -echo "Aktualisiere Paketlisten erneut..." -sudo apt-get update - -echo "Starte vollständiges Release-Upgrade..." -sudo apt-get full-upgrade -y - -echo "System wird jetzt neu gestartet..." -sudo reboot - diff --git a/3_HyprlandInstall.sh b/3_HyprlandInstall.sh index 8f60635..22c2888 100755 --- a/3_HyprlandInstall.sh +++ b/3_HyprlandInstall.sh @@ -1,26 +1,11 @@ #!/bin/bash -# Repository-Pfad definieren -REPO_DIR="$HOME/Debian-Hyprland" - -# Falls das Repository bereits existiert, überspringen -if [ -d "$REPO_DIR" ]; then - echo "Repository existiert bereits. Aktualisiere stattdessen..." - cd "$REPO_DIR" || { echo "Fehler: Konnte nicht in das Verzeichnis wechseln!"; exit 1; } - git pull -else - echo "Klonen des Repositories..." - git clone --depth=1 https://github.com/JaKooLit/Debian-Hyprland.git "$REPO_DIR" || { echo "Fehler beim Klonen!"; exit 1; } - cd "$REPO_DIR" || { echo "Fehler: Konnte nicht in das Verzeichnis wechseln!"; exit 1; } -fi - -# Sicherstellen, dass das Installationsskript existiert und ausführbar ist -if [ -f "install.sh" ]; then - chmod +x install.sh - echo "Starte Installation..." - ./install.sh -else - echo "Fehler: install.sh nicht gefunden!" +# 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 +sudo apt remove -y tuxedoos-desktop + +sh <(curl -L https://raw.githubusercontent.com/JaKooLit/Ubuntu-Hyprland/24.04/auto-install.sh) diff --git a/4_ZshRegister.sh b/4_ZshRegister.sh index fa3e108..07cffe1 100755 --- a/4_ZshRegister.sh +++ b/4_ZshRegister.sh @@ -33,8 +33,8 @@ else fi # Repository klonen -REPO_DIR="$USER_HOME/Debian-Hyprland" -sudo -u "$USER_NAME" git clone https://github.com/JaKooLit/Debian-Hyprland.git "$REPO_DIR" +REPO_DIR="$USER_HOME/Ubuntu-Hyprland" +sudo -u "$USER_NAME" git clone -b 24.04 https://github.com/JaKooLit/Ubuntu-Hyprland.git "$REPO_DIR" # Ordner nach ~/.oh-my-zsh/themes kopieren THEME_SRC="$REPO_DIR/assets/add_zsh_theme" diff --git a/6_Polish.sh b/6_Polish.sh index abd602a..867e88c 100755 --- a/6_Polish.sh +++ b/6_Polish.sh @@ -10,7 +10,15 @@ fi # System aktualisieren und benötigte Pakete installieren echo "🔄 System wird aktualisiert..." -sudo apt update && sudo apt install -y flatpak neovim ufw rfkill xdg-user-dirs rsync +sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y + +echo "🔄 Entferne Pakete..." + +sudo apt remove -y ark plasma-discover dolphin elisa firefox gwenview khelpcenter kinfocenter isoimagewriter kamoso kate kcalc kdeconnect partitionmanager kfind kmahjongg kmines konsole kpat ksudoku ksystemlog ktorrent kwalletmanager kwrite kmenuedit nextcloud-desktop skanlite ksystemstats thunderbird kuserfeedback-doc virtualbox + +echo "🔄 Installiere Pakete..." + +sudo apt install -y flatpak neovim ufw rfkill xdg-user-dirs rsync sudo ufw enable # Flatpak Flathub-Repo hinzufügen @@ -19,8 +27,8 @@ sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flat # Waterfox-Installation echo "🌍 Waterfox wird installiert..." sudo install -d -m 0755 /etc/apt/keyrings -curl -fsSL https://download.opensuse.org/repositories/home:hawkeye116477:waterfox/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_hawkeye116477_waterfox.gpg > /dev/null -echo 'deb https://download.opensuse.org/repositories/home:/hawkeye116477:/waterfox/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:hawkeye116477:waterfox.list +echo 'deb http://download.opensuse.org/repositories/home:/hawkeye116477:/waterfox/xUbuntu_24.04/ /' | sudo tee /etc/apt/sources.list.d/home:hawkeye116477:waterfox.list +curl -fsSL https://download.opensuse.org/repositories/home:hawkeye116477:waterfox/xUbuntu_24.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_hawkeye116477_waterfox.gpg > /dev/null sudo apt update && sudo apt install -y waterfox diff --git a/9_GamingSetup.sh b/9_GamingSetup.sh index bf12fae..70c038c 100755 --- a/9_GamingSetup.sh +++ b/9_GamingSetup.sh @@ -14,22 +14,6 @@ dpkg --add-architecture i386 apt update apt install -y wget curl -wget -O /tmp/steam.deb https://cdn.akamai.steamstatic.com/client/installer/steam.deb -apt install -y /tmp/steam.deb -rm /tmp/steam.deb - -# Lutris-Installation -LUTRIS_KEYRING="/etc/apt/keyrings/lutris.gpg" -LUTRIS_REPO="https://download.opensuse.org/repositories/home:/strycore/Debian_12/" - -mkdir -p /etc/apt/keyrings -wget -qO /tmp/lutris-key.gpg "${LUTRIS_REPO}Release.key" -gpg --dearmor "$LUTRIS_KEYRING" -rm /tmp/lutris-key.gpg - -echo "deb [signed-by=$LUTRIS_KEYRING] $LUTRIS_REPO ./" >/etc/apt/sources.list.d/lutris.list - -apt update -apt install -y lutris +apt install -y steam lutris echo "✅ Installation von Steam und Lutris abgeschlossen!" diff --git a/README.md b/README.md index a39b240..f975e5b 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,8 @@ Dieses Repository enthält Skripte um ein Linux System mit Hyprland und diversen Programmen aufzusetzen. Die entsprechenden Skripte befinden sich in den Branches zur jeweiligen Distribution. -**Mit diesen Skripten kann *Debian 12 (Bookworm)* mit *Hyprland* und diversen Programmen aufgesetzt werden.** +**Mit diesen Skripten kann *Tuxedo OS*, das auf Ubuntu 24.04 (Noble Numbat) basiert, mit *Hyprland* und diversen +Programmen aufgesetzt werden.** ## Anforderungen -- 2.49.1 From 84273f27df5d6875a9c5344b23330d3c9ab69ec8 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 09:40:03 +0100 Subject: [PATCH 02/41] =?UTF-8?q?Feat:=20Entfernt=20grafische=20Oberfl?= =?UTF-8?q?=C3=A4che=20und=20etabliert=20eine=20Internetverbindung-?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 0_Setup.sh | 90 ++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 88 insertions(+), 2 deletions(-) mode change 100755 => 100644 0_Setup.sh diff --git a/0_Setup.sh b/0_Setup.sh old mode 100755 new mode 100644 index 9c13ebb..dd99fdc --- a/0_Setup.sh +++ b/0_Setup.sh @@ -7,7 +7,7 @@ if [ "$EUID" -ne 0 ]; then fi apt update && apt upgrade -y -apt install -y git sudo 7zip unrar unzip network-manager software-properties-common tree bluetooth tuxedo-neofetch tuxedo-ufw-profiles ubuntu-drivers-common apt-file kerneloops language-pack-gnome-de +apt install -y git sudo echo "Passe Grub-Konfig an." @@ -98,5 +98,91 @@ fi echo "$XDG_BLOCK" >/etc/profile.d/xdg_dirs_desktop_session.sh -echo "Fertig! Bitte neu einloggen." +echo "Passwort für sudo-Nutzer setzen..." +passwd root +apt remove -y tuxedoos-desktop "*plasma*" "*libreoffice*" "*x11*" "*wayland*" sddm +apt autoremove -y + +# Utils +apt install -y 7zip unrar unzip network-manager software-properties-common tree bluetooth tuxedo-neofetch tuxedo-ufw-profiles ubuntu-drivers-common apt-file kerneloops language-pack-gnome-de ffmpeg +# Internet +apt install -y network-manager network-manager-openconnect network-manager-openvpn network-manager-pptp network-manager-vpnc +# Bluetooth +apt install -y bluedevil bluez bluez-cups avahi-utils dnsmasq-base +# Passwortspeicherung für Netzwerke +apt install -y gnome-keyring libsecret-1-0 libpam-gnome-keyring signon-plugin-password pinentry-gnome3 +# Tastatur +apt install -y ibus-data libibus-1.0-5 maliit-keyboard +# Drucker/Scanner +apt install -y cups sane-utils printer-driver-* +# Sound +apt install -y pipewire pipewire-bin pipewire-pulse + +# WLAN-Verbindung. + +# Frage, ob eine WLAN-Verbindung aufgebaut werden soll +read -p "Möchten Sie eine WLAN-Verbindung aufbauen? (ja/nein): " RESPONSE +if [[ "$RESPONSE" == "ja" ]]; then + # Schritt 1: WLAN-Adapter automatisch ermitteln + echo "Ermittle verfügbare WLAN-Adapter..." + WLAN_ADAPTERS=$(iw dev | grep Interface | awk '{print $2}') + + if [[ -z "$WLAN_ADAPTERS" ]]; then + echo "Es wurden keine WLAN-Adapter gefunden. Bitte stellen Sie sicher, dass ein WLAN-Adapter verfügbar ist." + exit 1 + fi + + # Wenn nur ein Adapter gefunden wurde, automatisch auswählen + if [[ $(echo "$WLAN_ADAPTERS" | wc -l) -eq 1 ]]; then + WLAN_INTERFACE="$WLAN_ADAPTERS" + echo "Gefundener WLAN-Adapter: $WLAN_INTERFACE" + else + # Wenn mehrere Adapter gefunden wurden, den Benutzer fragen + echo "Mehrere WLAN-Adapter gefunden:" + echo "$WLAN_ADAPTERS" + read -p "Bitte geben Sie den gewünschten WLAN-Adapter ein: " WLAN_INTERFACE + fi + + # Schritt 2: Eingabe der SSID und des Passworts + read -p "Bitte geben Sie die SSID des Routers ein: " ROUTER_SSID + read -sp "Bitte geben Sie das Passwort für die SSID ein: " ROUTER_PASSWORD + echo + + # Schritt 3: Erstellen der WPA-Konfigurationsdatei + CONFIG_FILE="/root/wpa.conf" + echo "Erstelle WPA-Konfigurationsdatei unter $CONFIG_FILE..." + wpa_passphrase "$ROUTER_SSID" "$ROUTER_PASSWORD" > "$CONFIG_FILE" + + # Hinweis für Sonderzeichen in der SSID + echo "Hinweis: Wenn Ihre SSID Sonderzeichen enthält, bearbeiten Sie die Datei $CONFIG_FILE manuell." + + # Schritt 4: Verbindung mit wpa_supplicant aufbauen + echo "Starte wpa_supplicant..." + wpa_supplicant -B -i "$WLAN_INTERFACE" -c "$CONFIG_FILE" + + # Schritt 5: Überprüfen, ob die Verbindung hergestellt wurde + echo "Überprüfe die Verbindung..." + sleep 5 # Wartezeit, um die Verbindung aufzubauen + IW_OUTPUT=$(iw dev "$WLAN_INTERFACE" link) + + if echo "$IW_OUTPUT" | grep -q "Connected to"; then + echo "Verbindung erfolgreich hergestellt!" + echo "$IW_OUTPUT" + else + echo "Verbindung konnte nicht hergestellt werden. Bitte überprüfen Sie die Konfiguration." + exit 1 + fi + + # Schritt 6: IP-Adresse und Netzwerkkonfiguration über DHCP abrufen + echo "Hole IP-Adresse und Netzwerkkonfiguration über DHCP..." + dhcpcd + + echo "Die WPA-verschlüsselte Verbindung wurde erfolgreich hergestellt!" +else + echo "Abbruch. Es wird keine WLAN-Verbindung aufgebaut." +fi + +echo "Fertig! Das System wird neugestartet." + +reboot -- 2.49.1 From e9ac090a97eda70c46cfff84b06d36d6018b0756 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 09:41:20 +0100 Subject: [PATCH 03/41] =?UTF-8?q?Ref:=20Entfernen=20von=20grafischer=20Ben?= =?UTF-8?q?utzeroberfl=C3=A4che=20passiert=20an=20anderer=20Stelle.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 3_HyprlandInstall.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/3_HyprlandInstall.sh b/3_HyprlandInstall.sh index 22c2888..5a93dc7 100755 --- a/3_HyprlandInstall.sh +++ b/3_HyprlandInstall.sh @@ -6,6 +6,4 @@ if [[ $EUID -eq 0 ]]; then exit 1 fi -sudo apt remove -y tuxedoos-desktop - sh <(curl -L https://raw.githubusercontent.com/JaKooLit/Ubuntu-Hyprland/24.04/auto-install.sh) -- 2.49.1 From 798629e75621d40262735c52bdb925cd6815b2da Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 09:41:33 +0100 Subject: [PATCH 04/41] =?UTF-8?q?Feat:=20F=C3=BCgt=20Pakete=20zur=20Instal?= =?UTF-8?q?lation=20hinzu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 6_Polish.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/6_Polish.sh b/6_Polish.sh index 867e88c..197e078 100755 --- a/6_Polish.sh +++ b/6_Polish.sh @@ -18,7 +18,7 @@ sudo apt remove -y ark plasma-discover dolphin elisa firefox gwenview khelpcente echo "🔄 Installiere Pakete..." -sudo apt install -y flatpak neovim ufw rfkill xdg-user-dirs rsync +sudo apt install -y flatpak neovim ufw rfkill xdg-user-dirs rsync maliit-keyboard ffmpeg printer-driver-* sudo ufw enable # Flatpak Flathub-Repo hinzufügen -- 2.49.1 From 4ca16ec2738f4f676c696bffb30a2b8d5637ac48 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 10:02:32 +0100 Subject: [PATCH 05/41] Fix: Passt Berechtigungen an. --- 0_Setup.sh | 0 1 file changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 0_Setup.sh diff --git a/0_Setup.sh b/0_Setup.sh old mode 100644 new mode 100755 -- 2.49.1 From beccffac1ecb11cfe25e28dcbec30e6e985c9b53 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 10:13:53 +0100 Subject: [PATCH 06/41] Fix: Passt install an. --- 0_Setup.sh | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/0_Setup.sh b/0_Setup.sh index dd99fdc..1cdd54b 100755 --- a/0_Setup.sh +++ b/0_Setup.sh @@ -101,15 +101,17 @@ echo "$XDG_BLOCK" >/etc/profile.d/xdg_dirs_desktop_session.sh echo "Passwort für sudo-Nutzer setzen..." passwd root +apt install -y network-manager + apt remove -y tuxedoos-desktop "*plasma*" "*libreoffice*" "*x11*" "*wayland*" sddm apt autoremove -y # Utils -apt install -y 7zip unrar unzip network-manager software-properties-common tree bluetooth tuxedo-neofetch tuxedo-ufw-profiles ubuntu-drivers-common apt-file kerneloops language-pack-gnome-de ffmpeg -# Internet -apt install -y network-manager network-manager-openconnect network-manager-openvpn network-manager-pptp network-manager-vpnc +apt install -y 7zip unrar unzip network-manager software-properties-common tree tuxedo-neofetch tuxedo-ufw-profiles ubuntu-drivers-common apt-file kerneloops language-pack-gnome-de ffmpeg # Bluetooth apt install -y bluedevil bluez bluez-cups avahi-utils dnsmasq-base +# Internet +apt install -y network-manager network-manager-openconnect network-manager-openvpn network-manager-pptp network-manager-vpnc # Passwortspeicherung für Netzwerke apt install -y gnome-keyring libsecret-1-0 libpam-gnome-keyring signon-plugin-password pinentry-gnome3 # Tastatur -- 2.49.1 From d307b0a2f25885d4ff20960fe075a895e370f886 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 11:31:58 +0100 Subject: [PATCH 07/41] Fix: Tastaturpakete on hold setzen. --- 0_Setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/0_Setup.sh b/0_Setup.sh index 1cdd54b..fe20e69 100755 --- a/0_Setup.sh +++ b/0_Setup.sh @@ -101,7 +101,7 @@ echo "$XDG_BLOCK" >/etc/profile.d/xdg_dirs_desktop_session.sh echo "Passwort für sudo-Nutzer setzen..." passwd root -apt install -y network-manager +apt install -y network-manager ibus-data libibus-1.0-5 apt remove -y tuxedoos-desktop "*plasma*" "*libreoffice*" "*x11*" "*wayland*" sddm apt autoremove -y -- 2.49.1 From 84f7909292598cf2d6a55eefeed9b95fb0fb43e0 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 11:36:48 +0100 Subject: [PATCH 08/41] Fix: Entfernt ein Paket. --- 0_Setup.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/0_Setup.sh b/0_Setup.sh index fe20e69..f19552f 100755 --- a/0_Setup.sh +++ b/0_Setup.sh @@ -115,7 +115,7 @@ apt install -y network-manager network-manager-openconnect network-manager-openv # Passwortspeicherung für Netzwerke apt install -y gnome-keyring libsecret-1-0 libpam-gnome-keyring signon-plugin-password pinentry-gnome3 # Tastatur -apt install -y ibus-data libibus-1.0-5 maliit-keyboard +apt install -y ibus-data libibus-1.0-5 # Drucker/Scanner apt install -y cups sane-utils printer-driver-* # Sound -- 2.49.1 From 75e39c2a4d3dcfec8870fff65b45dfd999238aa9 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 12:47:36 +0100 Subject: [PATCH 09/41] Feat: Passt Pakete an. --- 0_Setup.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/0_Setup.sh b/0_Setup.sh index f19552f..47ec8d3 100755 --- a/0_Setup.sh +++ b/0_Setup.sh @@ -101,9 +101,9 @@ echo "$XDG_BLOCK" >/etc/profile.d/xdg_dirs_desktop_session.sh echo "Passwort für sudo-Nutzer setzen..." passwd root -apt install -y network-manager ibus-data libibus-1.0-5 +apt install -y network-manager ibus-data libibus-1.0-5 console-setup keyboard-configuration software-properties-common -apt remove -y tuxedoos-desktop "*plasma*" "*libreoffice*" "*x11*" "*wayland*" sddm +apt remove -y tuxedoos-desktop "*plasma*" "*libreoffice*" "*x11*" "*wayland*" sddm gdm3 lightdm apt autoremove -y # Utils @@ -115,7 +115,7 @@ apt install -y network-manager network-manager-openconnect network-manager-openv # Passwortspeicherung für Netzwerke apt install -y gnome-keyring libsecret-1-0 libpam-gnome-keyring signon-plugin-password pinentry-gnome3 # Tastatur -apt install -y ibus-data libibus-1.0-5 +apt install -y ibus-data libibus-1.0-5 console-setup keyboard-configuration # Drucker/Scanner apt install -y cups sane-utils printer-driver-* # Sound -- 2.49.1 From 10c3de710f403133bacd47c7df774045b6453aba Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 13:55:39 +0100 Subject: [PATCH 10/41] Fix: Konfiguriert Tastatur. --- 0_Setup.sh | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/0_Setup.sh b/0_Setup.sh index 47ec8d3..aba94c2 100755 --- a/0_Setup.sh +++ b/0_Setup.sh @@ -121,6 +121,11 @@ apt install -y cups sane-utils printer-driver-* # Sound apt install -y pipewire pipewire-bin pipewire-pulse +# Tastatur Konfigurieren +apt install --reinstall console-setup keyboard-configuration +dpkg-reconfigure keyboard-configuration +service keyboard-setup restart + # WLAN-Verbindung. # Frage, ob eine WLAN-Verbindung aufgebaut werden soll -- 2.49.1 From badffdf68205407176ddaaff2e93ea8035d99f12 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 14:27:30 +0100 Subject: [PATCH 11/41] Fix: Entferne das entfernen von Paketen. --- 0_Setup.sh | 24 +----------------------- 1 file changed, 1 insertion(+), 23 deletions(-) diff --git a/0_Setup.sh b/0_Setup.sh index aba94c2..c49127e 100755 --- a/0_Setup.sh +++ b/0_Setup.sh @@ -101,31 +101,9 @@ echo "$XDG_BLOCK" >/etc/profile.d/xdg_dirs_desktop_session.sh echo "Passwort für sudo-Nutzer setzen..." passwd root -apt install -y network-manager ibus-data libibus-1.0-5 console-setup keyboard-configuration software-properties-common - -apt remove -y tuxedoos-desktop "*plasma*" "*libreoffice*" "*x11*" "*wayland*" sddm gdm3 lightdm +apt remove -y sddm gdm3 lightdm apt autoremove -y -# Utils -apt install -y 7zip unrar unzip network-manager software-properties-common tree tuxedo-neofetch tuxedo-ufw-profiles ubuntu-drivers-common apt-file kerneloops language-pack-gnome-de ffmpeg -# Bluetooth -apt install -y bluedevil bluez bluez-cups avahi-utils dnsmasq-base -# Internet -apt install -y network-manager network-manager-openconnect network-manager-openvpn network-manager-pptp network-manager-vpnc -# Passwortspeicherung für Netzwerke -apt install -y gnome-keyring libsecret-1-0 libpam-gnome-keyring signon-plugin-password pinentry-gnome3 -# Tastatur -apt install -y ibus-data libibus-1.0-5 console-setup keyboard-configuration -# Drucker/Scanner -apt install -y cups sane-utils printer-driver-* -# Sound -apt install -y pipewire pipewire-bin pipewire-pulse - -# Tastatur Konfigurieren -apt install --reinstall console-setup keyboard-configuration -dpkg-reconfigure keyboard-configuration -service keyboard-setup restart - # WLAN-Verbindung. # Frage, ob eine WLAN-Verbindung aufgebaut werden soll -- 2.49.1 From f9f32faa1b11552f5a193ed03c7b0bc9f2463770 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 15:24:11 +0100 Subject: [PATCH 12/41] Feat: Ersetzt fastfetch mit neofetch. --- 4_ZshRegister.sh | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/4_ZshRegister.sh b/4_ZshRegister.sh index 07cffe1..5cc7e29 100755 --- a/4_ZshRegister.sh +++ b/4_ZshRegister.sh @@ -59,4 +59,23 @@ else echo "ℹ️ 'source /etc/profile' ist bereits in /etc/zsh/zprofile vorhanden." fi +# Pfad zur .zshrc-Datei +ZSHRC_FILE="$HOME/.zshrc" + +# Sicherstellen, dass die Datei existiert +if [[ -f "$ZSHRC_FILE" ]]; then + # Zeilen mit "fastfetch" am Anfang auskommentieren + sed -i '/^fastfetch/ s/^/#/' "$ZSHRC_FILE" + + # Prüfen, ob "neofetch" bereits am Ende steht + if ! grep -q "neofetch" "$ZSHRC_FILE"; then + # "neofetch" ans Ende der Datei hinzufügen + echo "neofetch" >> "$ZSHRC_FILE" + fi + + echo "Die Änderungen wurden erfolgreich vorgenommen." +else + echo "Die Datei $ZSHRC_FILE wurde nicht gefunden." +fi + echo "✅ Installation abgeschlossen!" -- 2.49.1 From 8bfe82c40a6e8b2c8ae7ba0a4756d69180048489 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 15:27:44 +0100 Subject: [PATCH 13/41] Fix: Verwendet den richtigen User. --- 4_ZshRegister.sh | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/4_ZshRegister.sh b/4_ZshRegister.sh index 5cc7e29..ed2e3b8 100755 --- a/4_ZshRegister.sh +++ b/4_ZshRegister.sh @@ -59,8 +59,15 @@ else echo "ℹ️ 'source /etc/profile' ist bereits in /etc/zsh/zprofile vorhanden." fi -# Pfad zur .zshrc-Datei -ZSHRC_FILE="$HOME/.zshrc" +# Den tatsächlichen Benutzer ermitteln, der das Skript mit sudo ausführt +if [[ -n "$SUDO_USER" ]]; then + USER_HOME=$(eval echo "~$SUDO_USER") +else + USER_HOME="$HOME" +fi + +# Pfad zur .zshrc-Datei des tatsächlichen Benutzers +ZSHRC_FILE="$USER_HOME/.zshrc" # Sicherstellen, dass die Datei existiert if [[ -f "$ZSHRC_FILE" ]]; then -- 2.49.1 From e68a2a312da70fed82022093e1957c591dc602c0 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 15:30:33 +0100 Subject: [PATCH 14/41] =?UTF-8?q?Fix:=20Umbr=C3=BCche=20bei=20neofetch=20u?= =?UTF-8?q?nd=20nur=20einf=C3=BCgen,=20wenn=20nicht=20vorhanden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 4_ZshRegister.sh | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/4_ZshRegister.sh b/4_ZshRegister.sh index ed2e3b8..8542ba3 100755 --- a/4_ZshRegister.sh +++ b/4_ZshRegister.sh @@ -74,10 +74,10 @@ if [[ -f "$ZSHRC_FILE" ]]; then # Zeilen mit "fastfetch" am Anfang auskommentieren sed -i '/^fastfetch/ s/^/#/' "$ZSHRC_FILE" - # Prüfen, ob "neofetch" bereits am Ende steht - if ! grep -q "neofetch" "$ZSHRC_FILE"; then - # "neofetch" ans Ende der Datei hinzufügen - echo "neofetch" >> "$ZSHRC_FILE" + # Prüfen, ob "neofetch" bereits in der Datei steht + if ! grep -q "^neofetch$" "$ZSHRC_FILE"; then + # Zwei Zeilenumbrüche vor und ein Zeilenumbruch nach "neofetch" hinzufügen + echo -e "\n\nneofetch\n" >> "$ZSHRC_FILE" fi echo "Die Änderungen wurden erfolgreich vorgenommen." -- 2.49.1 From b438ae765b34669f794d8d352a6f04ebef2314d9 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 15:39:06 +0100 Subject: [PATCH 15/41] =?UTF-8?q?Feat:=20F=C3=BCgt=20das=20isntallieren=20?= =?UTF-8?q?von=20Plymouth=20noch=20an=20einer=20anderes=20Stelle=20hinzu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 8_Plymouth.sh | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/8_Plymouth.sh b/8_Plymouth.sh index 187a7e1..40e4f8c 100755 --- a/8_Plymouth.sh +++ b/8_Plymouth.sh @@ -37,7 +37,29 @@ fi # Plymouth-Theme setzen PLYMOUTH_THEME="spinner" echo "🎨 Setze Plymouth-Theme auf '$PLYMOUTH_THEME'..." -plymouth-set-default-theme -R "$PLYMOUTH_THEME" + +# Sicherstellen, dass das Paket "plymouth" installiert ist +if command -v plymouth-set-default-theme &> /dev/null || { + echo "WARNUNG: Das Paket 'plymouth' ist nicht installiert. Es wird versucht, es zu installieren..." + sudo apt update && sudo apt install -y plymouth || { + echo "WARNUNG: Das Paket 'plymouth' konnte nicht installiert werden. Überspringe diesen Schritt." + false + } +}; then + # Überprüfen, ob die Variable PLYMOUTH_THEME gesetzt ist + if [[ -n "$PLYMOUTH_THEME" ]]; then + # Den Plymouth-Theme-Befehl ausführen + if plymouth-set-default-theme -R "$PLYMOUTH_THEME"; then + echo "Das Plymouth-Theme wurde erfolgreich auf '$PLYMOUTH_THEME' gesetzt." + else + echo "WARNUNG: Der Befehl 'plymouth-set-default-theme' konnte nicht ausgeführt werden. Überspringe diesen Schritt." + fi + else + echo "WARNUNG: Die Variable PLYMOUTH_THEME ist nicht gesetzt. Überspringe diesen Schritt." + fi +else + echo "WARNUNG: Der Befehl 'plymouth-set-default-theme' ist nicht verfügbar. Überspringe diesen Schritt." +fi # Kernel-Boot-Parameter in GRUB anpassen GRUB_CFG="/etc/default/grub" -- 2.49.1 From fe4d7f79be3548a9fbff33e495f4353a52c5efe8 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 15:49:52 +0100 Subject: [PATCH 16/41] =?UTF-8?q?Feat:=20F=C3=BCgt=20ein=20-y=20hinzu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 10_Programs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/10_Programs.sh b/10_Programs.sh index af84eaa..adc6f55 100755 --- a/10_Programs.sh +++ b/10_Programs.sh @@ -233,7 +233,7 @@ flatpak install flathub net.nokyan.Resources -y # Secrets flatpak install flathub org.gnome.World.Secrets -y # Archivverwaltung -flatpak install flathub org.gnome.FileRoller +flatpak install flathub org.gnome.FileRoller -y echo "🔄 Installiere VeraCrypt..." sudo add-apt-repository ppa:unit193/encryption -- 2.49.1 From f7b1bd93a1146d109c9f332dfa7df4b04b0d9418 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 16:26:00 +0100 Subject: [PATCH 17/41] Feat: Manuelles setzen des Plymouth Themes. --- 8_Plymouth.sh | 49 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 32 insertions(+), 17 deletions(-) diff --git a/8_Plymouth.sh b/8_Plymouth.sh index 40e4f8c..c8f090a 100755 --- a/8_Plymouth.sh +++ b/8_Plymouth.sh @@ -39,26 +39,41 @@ PLYMOUTH_THEME="spinner" echo "🎨 Setze Plymouth-Theme auf '$PLYMOUTH_THEME'..." # Sicherstellen, dass das Paket "plymouth" installiert ist -if command -v plymouth-set-default-theme &> /dev/null || { - echo "WARNUNG: Das Paket 'plymouth' ist nicht installiert. Es wird versucht, es zu installieren..." - sudo apt update && sudo apt install -y plymouth || { - echo "WARNUNG: Das Paket 'plymouth' konnte nicht installiert werden. Überspringe diesen Schritt." - false - } -}; then - # Überprüfen, ob die Variable PLYMOUTH_THEME gesetzt ist - if [[ -n "$PLYMOUTH_THEME" ]]; then - # Den Plymouth-Theme-Befehl ausführen - if plymouth-set-default-theme -R "$PLYMOUTH_THEME"; then - echo "Das Plymouth-Theme wurde erfolgreich auf '$PLYMOUTH_THEME' gesetzt." - else - echo "WARNUNG: Der Befehl 'plymouth-set-default-theme' konnte nicht ausgeführt werden. Überspringe diesen Schritt." - fi +if command -v plymouth-set-default-theme &> /dev/null; then + # Den Plymouth-Theme-Befehl ausführen + if plymouth-set-default-theme -R "$PLYMOUTH_THEME"; then + echo "Das Plymouth-Theme wurde erfolgreich auf '$PLYMOUTH_THEME' gesetzt." else - echo "WARNUNG: Die Variable PLYMOUTH_THEME ist nicht gesetzt. Überspringe diesen Schritt." + echo "WARNUNG: Der Befehl 'plymouth-set-default-theme' konnte nicht ausgeführt werden. Versuche, das Theme manuell zu setzen..." fi else - echo "WARNUNG: Der Befehl 'plymouth-set-default-theme' ist nicht verfügbar. Überspringe diesen Schritt." + echo "WARNUNG: Der Befehl 'plymouth-set-default-theme' ist nicht verfügbar. Versuche, das Theme manuell zu setzen..." +fi + +# Manuelles Setzen des Plymouth-Themes +PLYMOUTH_DIR="/usr/share/plymouth/themes" +PLYMOUTH_THEME_FILE="$PLYMOUTH_DIR/$PLYMOUTH_THEME/$PLYMOUTH_THEME.plymouth" +PLYMOUTH_CONFIG="/etc/plymouth/plymouthd.conf" + +if [[ -f "$PLYMOUTH_THEME_FILE" ]]; then + if [[ -f "$PLYMOUTH_CONFIG" ]]; then + sudo sed -i "s|^Theme=.*|Theme=$PLYMOUTH_THEME|" "$PLYMOUTH_CONFIG" + echo "Das Plymouth-Theme wurde manuell auf '$PLYMOUTH_THEME' gesetzt." + else + echo "WARNUNG: Die Datei '$PLYMOUTH_CONFIG' wurde nicht gefunden. Erstelle die Datei und setze das Theme..." + echo -e "[Daemon]\nTheme=$PLYMOUTH_THEME\n" | sudo tee "$PLYMOUTH_CONFIG" > /dev/null + echo "Die Datei '$PLYMOUTH_CONFIG' wurde erstellt und das Theme wurde gesetzt." + fi +else + echo "WARNUNG: Das Theme '$PLYMOUTH_THEME' existiert nicht unter '$PLYMOUTH_DIR'. Überspringe diesen Schritt." +fi + +# Initramfs aktualisieren, um die Änderungen zu übernehmen +echo "🔄 Aktualisiere Initramfs..." +if sudo update-initramfs -u; then + echo "Initramfs wurde erfolgreich aktualisiert." +else + echo "WARNUNG: Initramfs konnte nicht aktualisiert werden." fi # Kernel-Boot-Parameter in GRUB anpassen -- 2.49.1 From 1da25afe66169e5a6beaef6543d1d87e965d29a8 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 16:34:55 +0100 Subject: [PATCH 18/41] =?UTF-8?q?Ref:=20Entfernt=20unn=C3=B6tige=20Dinge.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 0_Setup.sh | 3 -- 7_GrubTheme.sh | 36 ------------------- 8_Plymouth.sh | 96 -------------------------------------------------- 3 files changed, 135 deletions(-) delete mode 100755 7_GrubTheme.sh delete mode 100755 8_Plymouth.sh diff --git a/0_Setup.sh b/0_Setup.sh index c49127e..61e307b 100755 --- a/0_Setup.sh +++ b/0_Setup.sh @@ -101,9 +101,6 @@ echo "$XDG_BLOCK" >/etc/profile.d/xdg_dirs_desktop_session.sh echo "Passwort für sudo-Nutzer setzen..." passwd root -apt remove -y sddm gdm3 lightdm -apt autoremove -y - # WLAN-Verbindung. # Frage, ob eine WLAN-Verbindung aufgebaut werden soll diff --git a/7_GrubTheme.sh b/7_GrubTheme.sh deleted file mode 100755 index 8060845..0000000 --- a/7_GrubTheme.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash - -set -e # Skript bricht bei Fehlern ab - -# Theme-Name -THEME_NAME="vimix" - -# Prüfen, ob GRUB bereits das Theme verwendet -if grep -q "GRUB_THEME=" /etc/default/grub && grep -q "$THEME_NAME" /etc/default/grub; then - echo "✅ Das Theme '$THEME_NAME' ist bereits installiert und aktiv." - exit 0 -fi - -echo "🔄 Installiere das GRUB-Theme '$THEME_NAME'..." - -# Falls der Ordner existiert, vorher löschen -THEME_DIR="$HOME/grub-themes" -if [[ -d "$THEME_DIR" ]]; then - rm -rf "$THEME_DIR" -fi - -# Repository klonen -git clone https://github.com/vinceliuice/grub2-themes.git "$THEME_DIR" -cd "$THEME_DIR" - -# Theme installieren -sudo ./install.sh -b -t "$THEME_NAME" - -# GRUB-Konfiguration aktualisieren -echo "🔄 Aktualisiere die GRUB-Konfiguration..." -sudo update-grub - -# Aufräumen -rm -rf "$THEME_DIR" - -echo "✅ GRUB-Theme '$THEME_NAME' erfolgreich installiert und aktiviert!" diff --git a/8_Plymouth.sh b/8_Plymouth.sh deleted file mode 100755 index c8f090a..0000000 --- a/8_Plymouth.sh +++ /dev/null @@ -1,96 +0,0 @@ -#!/bin/bash - -set -e # Skript bricht bei Fehlern ab - -# Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird -if [[ $EUID -ne 0 ]]; then - echo "Dieses Skript muss als root ausgeführt werden." - exit 1 -fi - -echo "🔄 Plymouth und benötigte Pakete installieren..." -if ! dpkg -l | grep -qw plymouth; then - apt update && apt install -y plymouth plymouth-themes -else - echo "✅ Plymouth ist bereits installiert." -fi - -# Plymouth in initramfs aktivieren -MKINIT_CONF="/etc/mkinitcpio.conf" -if [[ -f "$MKINIT_CONF" ]]; then - if grep -q "^HOOKS=" "$MKINIT_CONF"; then - sed -i 's/^HOOKS=.*/HOOKS=(base udev plymouth autodetect modconf block encrypt lvm2 filesystems keyboard fsck)/' "$MKINIT_CONF" - else - echo 'HOOKS=(base udev plymouth autodetect modconf block encrypt lvm2 filesystems keyboard fsck)' >>"$MKINIT_CONF" - fi -fi - -# Falls Dracut genutzt wird, initramfs neu erstellen -if command -v dracut &>/dev/null; then - echo "🔄 Dracut erkannt, erstelle neues initramfs..." - dracut -f -else - echo "🔄 Initramfs wird aktualisiert..." - update-initramfs -u -fi - -# Plymouth-Theme setzen -PLYMOUTH_THEME="spinner" -echo "🎨 Setze Plymouth-Theme auf '$PLYMOUTH_THEME'..." - -# Sicherstellen, dass das Paket "plymouth" installiert ist -if command -v plymouth-set-default-theme &> /dev/null; then - # Den Plymouth-Theme-Befehl ausführen - if plymouth-set-default-theme -R "$PLYMOUTH_THEME"; then - echo "Das Plymouth-Theme wurde erfolgreich auf '$PLYMOUTH_THEME' gesetzt." - else - echo "WARNUNG: Der Befehl 'plymouth-set-default-theme' konnte nicht ausgeführt werden. Versuche, das Theme manuell zu setzen..." - fi -else - echo "WARNUNG: Der Befehl 'plymouth-set-default-theme' ist nicht verfügbar. Versuche, das Theme manuell zu setzen..." -fi - -# Manuelles Setzen des Plymouth-Themes -PLYMOUTH_DIR="/usr/share/plymouth/themes" -PLYMOUTH_THEME_FILE="$PLYMOUTH_DIR/$PLYMOUTH_THEME/$PLYMOUTH_THEME.plymouth" -PLYMOUTH_CONFIG="/etc/plymouth/plymouthd.conf" - -if [[ -f "$PLYMOUTH_THEME_FILE" ]]; then - if [[ -f "$PLYMOUTH_CONFIG" ]]; then - sudo sed -i "s|^Theme=.*|Theme=$PLYMOUTH_THEME|" "$PLYMOUTH_CONFIG" - echo "Das Plymouth-Theme wurde manuell auf '$PLYMOUTH_THEME' gesetzt." - else - echo "WARNUNG: Die Datei '$PLYMOUTH_CONFIG' wurde nicht gefunden. Erstelle die Datei und setze das Theme..." - echo -e "[Daemon]\nTheme=$PLYMOUTH_THEME\n" | sudo tee "$PLYMOUTH_CONFIG" > /dev/null - echo "Die Datei '$PLYMOUTH_CONFIG' wurde erstellt und das Theme wurde gesetzt." - fi -else - echo "WARNUNG: Das Theme '$PLYMOUTH_THEME' existiert nicht unter '$PLYMOUTH_DIR'. Überspringe diesen Schritt." -fi - -# Initramfs aktualisieren, um die Änderungen zu übernehmen -echo "🔄 Aktualisiere Initramfs..." -if sudo update-initramfs -u; then - echo "Initramfs wurde erfolgreich aktualisiert." -else - echo "WARNUNG: Initramfs konnte nicht aktualisiert werden." -fi - -# Kernel-Boot-Parameter in GRUB anpassen -GRUB_CFG="/etc/default/grub" -GRUB_BACKUP="/etc/default/grub.bak" - -echo "🔍 Überprüfe GRUB-Einstellungen..." -NEW_CMDLINE="quiet splash vt.global_cursor_default=0 loglevel=3 rd.luks.options=discard plymouth.ignore-serial-consoles" - -if grep -q "^GRUB_CMDLINE_LINUX_DEFAULT=.*" "$GRUB_CFG"; then - sed -i "s|^GRUB_CMDLINE_LINUX_DEFAULT=.*|GRUB_CMDLINE_LINUX_DEFAULT=\"$NEW_CMDLINE\"|" "$GRUB_CFG" - echo "🔄 GRUB wird aktualisiert..." - update-grub -else - echo "GRUB_CMDLINE_LINUX_DEFAULT=\"$NEW_CMDLINE\"" >>"$GRUB_CFG" - echo "🔄 GRUB wird aktualisiert..." - update-grub -fi - -echo "✅ Einrichtung abgeschlossen. Bitte starte das System neu, um die Änderungen zu übernehmen." -- 2.49.1 From 7193e5cff3f6fd98de6329433e6189b381dc0261 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 17:07:14 +0100 Subject: [PATCH 19/41] =?UTF-8?q?Feat:=20F=C3=BCgt=20ppa=20f=C3=BCr=20Vera?= =?UTF-8?q?Crypt=20autoamtisch=20hinzu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 10_Programs.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/10_Programs.sh b/10_Programs.sh index adc6f55..d91e908 100755 --- a/10_Programs.sh +++ b/10_Programs.sh @@ -236,7 +236,7 @@ flatpak install flathub org.gnome.World.Secrets -y flatpak install flathub org.gnome.FileRoller -y echo "🔄 Installiere VeraCrypt..." -sudo add-apt-repository ppa:unit193/encryption +sudo add-apt-repository ppa:unit193/encryption -y sudo apt update sudo apt install -y veracrypt -- 2.49.1 From 320060fa65791523a4210d6ab1c61fea13ac5e4c Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 17:07:56 +0100 Subject: [PATCH 20/41] Feat: Entferne Grub-Config Anpassung. --- 0_Setup.sh | 24 ------------------------ 1 file changed, 24 deletions(-) diff --git a/0_Setup.sh b/0_Setup.sh index 61e307b..051cfb9 100755 --- a/0_Setup.sh +++ b/0_Setup.sh @@ -9,30 +9,6 @@ fi apt update && apt upgrade -y apt install -y git sudo -echo "Passe Grub-Konfig an." - -# Backup der aktuellen GRUB-Konfiguration -GRUB_CONFIG="/etc/default/grub" -BACKUP_CONFIG="/etc/default/grub.bak" - -if [ -f "$GRUB_CONFIG" ]; then - echo "Erstelle ein Backup der aktuellen GRUB-Konfiguration unter $BACKUP_CONFIG" - cp "$GRUB_CONFIG" "$BACKUP_CONFIG" - - # GRUB-Konfiguration anpassen - echo "Passe die GRUB-Konfiguration an, um den GRUB-Loader immer anzuzeigen..." - sed -i 's/^GRUB_TIMEOUT_STYLE=.*/GRUB_TIMEOUT_STYLE=menu/' "$GRUB_CONFIG" - sed -i 's/^GRUB_TIMEOUT=.*/GRUB_TIMEOUT=5/' "$GRUB_CONFIG" - - # GRUB-Konfiguration aktualisieren - echo "Aktualisiere die GRUB-Konfiguration..." - update-grub - - echo "Die GRUB-Konfiguration wurde erfolgreich angepasst." -else - echo "Die Datei $GRUB_CONFIG wurde nicht gefunden. Passe GRUB-Config nicht an." -fi - # Der Code, der eingefügt werden soll CONFIG_BLOCK='if groups | grep -q "\bsudo\b"; then case ":$PATH:" in -- 2.49.1 From 515e978581f95be0aab2fa2a4b19b609855fe79f Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 17:18:06 +0100 Subject: [PATCH 21/41] Feat: Passt Pakete an, die entfernt werden. --- 6_Polish.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/6_Polish.sh b/6_Polish.sh index 197e078..75ff4c1 100755 --- a/6_Polish.sh +++ b/6_Polish.sh @@ -14,7 +14,7 @@ sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y echo "🔄 Entferne Pakete..." -sudo apt remove -y ark plasma-discover dolphin elisa firefox gwenview khelpcenter kinfocenter isoimagewriter kamoso kate kcalc kdeconnect partitionmanager kfind kmahjongg kmines konsole kpat ksudoku ksystemlog ktorrent kwalletmanager kwrite kmenuedit nextcloud-desktop skanlite ksystemstats thunderbird kuserfeedback-doc virtualbox +sudo apt remove -y firefox kdeconnect kmahjongg kmines kpat ksudoku ktorrent kwalletmanager nextcloud-desktop skanlite thunderbird kuserfeedback-doc virtualbox echo "🔄 Installiere Pakete..." -- 2.49.1 From 673849b3c287af84233bc183521e35d0608fc918 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 17:45:41 +0100 Subject: [PATCH 22/41] Feat: Entfernt weitere Pakete von der Deinstallation. --- 6_Polish.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/6_Polish.sh b/6_Polish.sh index 75ff4c1..2383047 100755 --- a/6_Polish.sh +++ b/6_Polish.sh @@ -14,7 +14,7 @@ sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y echo "🔄 Entferne Pakete..." -sudo apt remove -y firefox kdeconnect kmahjongg kmines kpat ksudoku ktorrent kwalletmanager nextcloud-desktop skanlite thunderbird kuserfeedback-doc virtualbox +sudo apt remove -y firefox kmahjongg kmines kpat ksudoku nextcloud-desktop skanlite thunderbird virtualbox echo "🔄 Installiere Pakete..." -- 2.49.1 From 68c2534576c06a584916b0830124de0dfd9b7bbd Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 18:35:52 +0100 Subject: [PATCH 23/41] =?UTF-8?q?Feat:=20F=C3=BCgt=20tuxedo-control-center?= =?UTF-8?q?=20zum=20Autostart=20hinzu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 6_Polish.sh | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/6_Polish.sh b/6_Polish.sh index 2383047..f28e252 100755 --- a/6_Polish.sh +++ b/6_Polish.sh @@ -198,4 +198,25 @@ echo "📂 Verschiebe $(xdg-user-dir)/Pictures nach $(xdg-user-dir PICTURES)..." rsync -av --ignore-existing "$(xdg-user-dir)/Pictures/" "$(xdg-user-dir PICTURES)/" rm -r "$(xdg-user-dir)/Pictures/" +echo "Füge Autostart-Apps hinzu..." +# Pfad zur Konfigurationsdatei +CONFIG_FILE="$HOME/.config/hypr/UserConfigs/Startup_Apps.conf" + +# Zeile, die hinzugefügt werden soll +LINE_TO_ADD="exec-once = tuxedo-control-center --tray" + +# Überprüfen, ob die Datei existiert +if [ -f "$CONFIG_FILE" ]; then + # Überprüfen, ob die Zeile bereits existiert + if ! grep -Fxq "$LINE_TO_ADD" "$CONFIG_FILE"; then + # Zeile hinzufügen + echo "$LINE_TO_ADD" >> "$CONFIG_FILE" + echo "Zeile wurde erfolgreich hinzugefügt." + else + echo "Die Zeile existiert bereits in der Datei." + fi +else + echo "Die Datei $CONFIG_FILE existiert nicht." +fi + echo "✅ Skript erfolgreich ausgeführt!" -- 2.49.1 From dfaac4730e50405c8e09d19c58b814b80cf34180 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 10 Mar 2025 18:38:25 +0100 Subject: [PATCH 24/41] Feat: Setzt an andere Stellen. --- 6_Polish.sh | 49 +++++++++++++++++++++++++++---------------------- 1 file changed, 27 insertions(+), 22 deletions(-) diff --git a/6_Polish.sh b/6_Polish.sh index f28e252..b2de672 100755 --- a/6_Polish.sh +++ b/6_Polish.sh @@ -68,6 +68,27 @@ for BIND in "${!KEYBINDS[@]}"; do fi done +echo "🔄 Füge Autostart-Apps hinzu..." +# Pfad zur Konfigurationsdatei +CONFIG_FILE="$HOME/.config/hypr/UserConfigs/Startup_Apps.conf" + +# Zeile, die hinzugefügt werden soll +LINE_TO_ADD="exec-once = tuxedo-control-center --tray" + +# Überprüfen, ob die Datei existiert +if [ -f "$CONFIG_FILE" ]; then + # Überprüfen, ob die Zeile bereits existiert + if ! grep -Fxq "$LINE_TO_ADD" "$CONFIG_FILE"; then + # Zeile hinzufügen + echo "$LINE_TO_ADD" >> "$CONFIG_FILE" + echo "Zeile wurde erfolgreich hinzugefügt." + else + echo "Die Zeile existiert bereits in der Datei." + fi +else + echo "Die Datei $CONFIG_FILE existiert nicht." +fi + # Standardvorlagen ablegen echo "📂 Standardvorlagen werden im Vorlagen-Ordner erstellt..." TEMPLATES_DIR=$(xdg-user-dir TEMPLATES 2>/dev/null || echo "$HOME/Vorlagen") @@ -194,29 +215,13 @@ else echo "⚠️ Datei $USER_KEYBINDS_FILE existiert nicht. Überspringe Anpassung der Verweise." fi -echo "📂 Verschiebe $(xdg-user-dir)/Pictures nach $(xdg-user-dir PICTURES)..." -rsync -av --ignore-existing "$(xdg-user-dir)/Pictures/" "$(xdg-user-dir PICTURES)/" -rm -r "$(xdg-user-dir)/Pictures/" - -echo "Füge Autostart-Apps hinzu..." -# Pfad zur Konfigurationsdatei -CONFIG_FILE="$HOME/.config/hypr/UserConfigs/Startup_Apps.conf" - -# Zeile, die hinzugefügt werden soll -LINE_TO_ADD="exec-once = tuxedo-control-center --tray" - -# Überprüfen, ob die Datei existiert -if [ -f "$CONFIG_FILE" ]; then - # Überprüfen, ob die Zeile bereits existiert - if ! grep -Fxq "$LINE_TO_ADD" "$CONFIG_FILE"; then - # Zeile hinzufügen - echo "$LINE_TO_ADD" >> "$CONFIG_FILE" - echo "Zeile wurde erfolgreich hinzugefügt." - else - echo "Die Zeile existiert bereits in der Datei." - fi +# Überprüfen, ob der Ordner existiert +if [ -d "$(xdg-user-dir)/Pictures" ]; then + echo "📂 Verschiebe $(xdg-user-dir)/Pictures nach $(xdg-user-dir PICTURES)..." + rsync -av --ignore-existing "$(xdg-user-dir)/Pictures/" "$(xdg-user-dir PICTURES)/" + rm -r "$(xdg-user-dir)/Pictures/" else - echo "Die Datei $CONFIG_FILE existiert nicht." + echo "📂 Der Ordner $(xdg-user-dir)/Pictures existiert nicht. Kein Verschieben notwendig." fi echo "✅ Skript erfolgreich ausgeführt!" -- 2.49.1 From 3fa1f007c25a437fffbc323f1000bf16ec380a55 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Thu, 13 Mar 2025 16:10:03 +0100 Subject: [PATCH 25/41] =?UTF-8?q?Feat:=20F=C3=BCgt=20Obfuscate=20hinzu?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 10_Programs.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/10_Programs.sh b/10_Programs.sh index d91e908..6fb1a30 100755 --- a/10_Programs.sh +++ b/10_Programs.sh @@ -234,6 +234,8 @@ flatpak install flathub net.nokyan.Resources -y flatpak install flathub org.gnome.World.Secrets -y # Archivverwaltung flatpak install flathub org.gnome.FileRoller -y +# Obfuscate +flatpak install flathub com.belmoussaoui.Obfuscate -y echo "🔄 Installiere VeraCrypt..." sudo add-apt-repository ppa:unit193/encryption -y -- 2.49.1 From 5d723f8c260403f32234c1ce61421fc933da988d Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Sun, 23 Mar 2025 16:30:21 +0100 Subject: [PATCH 26/41] =?UTF-8?q?Feat:=20F=C3=BCgt=20network-manager-gnome?= =?UTF-8?q?=20hinzu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 6_Polish.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/6_Polish.sh b/6_Polish.sh index 1c48db9..930d09b 100755 --- a/6_Polish.sh +++ b/6_Polish.sh @@ -18,7 +18,7 @@ sudo apt remove -y firefox kmahjongg kmines kpat ksudoku nextcloud-desktop skanl echo "🔄 Installiere Pakete..." -sudo apt update && sudo apt install -y flatpak neovim ufw rfkill xdg-user-dirs rsync maliit-keyboard ffmpeg printer-driver-* clamav clamav-freshclam clamav-docs libclamunrar9 clamav-daemon bleachbit +sudo apt update && sudo apt install -y flatpak neovim ufw rfkill xdg-user-dirs rsync maliit-keyboard ffmpeg printer-driver-* clamav clamav-freshclam clamav-docs clamav-daemon bleachbit network-manager-gnome sudo ufw enable # Flatpak Flathub-Repo hinzufügen -- 2.49.1 From e7d0773ea262e1d5efa2bf643be4a716cb46788c Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Sun, 23 Mar 2025 16:30:46 +0100 Subject: [PATCH 27/41] =?UTF-8?q?Feat:=20F=C3=BCgt=20network-manager-gnome?= =?UTF-8?q?=20hinzu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 6_Polish.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/6_Polish.sh b/6_Polish.sh index 08a6051..f61f084 100755 --- a/6_Polish.sh +++ b/6_Polish.sh @@ -10,7 +10,7 @@ fi # System aktualisieren und benötigte Pakete installieren echo "🔄 System wird aktualisiert..." -sudo apt update && sudo apt install -y flatpak neovim ufw rfkill xdg-user-dirs rsync clamav clamav-freshclam clamav-docs libclamunrar9 clamav-daemon bleachbit +sudo apt update && sudo apt install -y flatpak neovim ufw rfkill xdg-user-dirs rsync clamav clamav-freshclam clamav-docs libclamunrar9 clamav-daemon bleachbit network-manager-gnome sudo ufw enable # Flatpak Flathub-Repo hinzufügen -- 2.49.1 From 964f8df4ebe34741aa0d7b95d053a16250aae727 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 24 Mar 2025 11:31:15 +0100 Subject: [PATCH 28/41] =?UTF-8?q?Feat:=20F=C3=BCgt=20Programme=20hinzu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 10_Programs.sh | 52 ++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 46 insertions(+), 6 deletions(-) diff --git a/10_Programs.sh b/10_Programs.sh index 3dd72a7..041bcde 100755 --- a/10_Programs.sh +++ b/10_Programs.sh @@ -233,12 +233,52 @@ flatpak install flathub net.nokyan.Resources -y # Secrets flatpak install flathub org.gnome.World.Secrets -y # Archivverwaltung -flatpak install flathub org.gnome.FileRoller +flatpak install flathub org.gnome.FileRoller -y -echo "🔄 Installiere VeraCrypt..." -echo 'deb http://download.opensuse.org/repositories/home:/unit193:/veracrypt/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:unit193:veracrypt.list -curl -fsSL https://download.opensuse.org/repositories/home:unit193:veracrypt/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_unit193_veracrypt.gpg > /dev/null -sudo apt update -sudo apt install veracrypt +# Flatseal +flatpak install com.github.tchx84.Flatseal -y + +# VeraCrypt installieren +read -p "Soll VeraCrypt installiert werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" == "j" ]] || [[ "$anwser" == "y" ]]; then + echo "🔄 Installiere VeraCrypt..." + echo 'deb http://download.opensuse.org/repositories/home:/unit193:/veracrypt/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:unit193:veracrypt.list + curl -fsSL https://download.opensuse.org/repositories/home:unit193:veracrypt/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_unit193_veracrypt.gpg > /dev/null + sudo apt update + sudo apt install veracrypt +fi + +# Webmin installieren +read -p "Soll webmin installiert werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" == "j" ]] || [[ "$anwser" == "y" ]]; then + curl -o /tmp/webmin-setup-repo.sh https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repo.sh + sudo sh /tmp/webmin-setup-repo.sh + sudo apt install webmin -y +fi + +# Waydroid installieren +read -p "Soll Waydroid installiert werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" == "j" ]] || [[ "$anwser" == "y" ]]; then + sudo apt install curl ca-certificates -y + curl -s https://repo.waydro.id | sudo bash + sudo apt install waydroid -y + + sudo ufw allow 53 + sudo ufw allow 67 + sudo ufw default allow FORWARD + + sudo systemctl enable --now waydroid-container + + echo "⚠️ Beachte, dass in Portmaster unter 'Network Noise' die Ports 53 und 67 komplett freigegeben sind!" +fi echo "✅ Alle Programme wurden erfolgreich installiert!" -- 2.49.1 From 86da8cf610936e53fb69d6242f0e203b4132afa6 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 24 Mar 2025 16:50:56 +0100 Subject: [PATCH 29/41] Feat: Versteck Waydroid-Apps. --- 10_Programs.sh | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/10_Programs.sh b/10_Programs.sh index 041bcde..f8288d1 100755 --- a/10_Programs.sh +++ b/10_Programs.sh @@ -278,6 +278,14 @@ if [[ "$answer" == "j" ]] || [[ "$anwser" == "y" ]]; then sudo systemctl enable --now waydroid-container + sudo cat << 'EOF' | sudo tee /etc/profile.d/hide_waydroid_apps.sh > /dev/null +for app in ~/.local/share/applications/waydroid.*.desktop; do + grep -q NoDisplay $app || sed '/^Icon=/a NoDisplay=true' -i $app +done +EOF + + sudo chmod +x /etc/profile.d/* + echo "⚠️ Beachte, dass in Portmaster unter 'Network Noise' die Ports 53 und 67 komplett freigegeben sind!" fi -- 2.49.1 From c6b18177f8893d7c2cc2c98a992b29f0b4f6bd5a Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Mon, 24 Mar 2025 18:34:56 +0100 Subject: [PATCH 30/41] Feat: Logging mit Abfrage. --- 0_Setup.sh | 89 +++++++------ 10_Programs.sh | 2 +- 1_TrixieUpgrade.sh | 26 ++-- 2_AdJoin.sh | 21 +-- 3_HyprlandInstall.sh | 23 ++-- 4_ZshRegister.sh | 92 ++++++------- 5_DomainLogin.sh | 70 +++++----- 6_Polish.sh | 300 ++++++++++++++++++++++++------------------- 8_Plymouth.sh | 2 +- 9_GamingSetup.sh | 46 ++++--- 10 files changed, 382 insertions(+), 289 deletions(-) diff --git a/0_Setup.sh b/0_Setup.sh index 8e98297..d4be5c6 100755 --- a/0_Setup.sh +++ b/0_Setup.sh @@ -2,50 +2,63 @@ # Root-Rechte prüfen if [ "$(id -u)" -ne 0 ]; then - echo "Bitte mit sudo ausführen!" + echo "❌ Bitte als root ausführen!" exit 1 fi apt update && apt upgrade -y -apt install -y git sudo 7zip unrar unzip network-manager software-properties-common tree bluetooth +apt install -y git sudo 7zip unrar unzip network-manager software-properties-common tree bluetooth wget curl -# Der Code, der eingefügt werden soll -CONFIG_BLOCK='if groups | grep -q "\bsudo\b"; then -case ":$PATH:" in -*":/sbin:"*) ;; -*) export PATH="$PATH:/sbin" ;; -esac -case ":$PATH:" in -*":/usr/sbin:"*) ;; -*) export PATH="$PATH:/usr/sbin" ;; -esac -fi' +# sbin in Path +read -p "❓ Soll sbin für sudo-Nutzer in den PATH aufgenommen werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer -# Saubere Lösung über /etc/profile.d/ -echo "$CONFIG_BLOCK" >/etc/profile.d/custom_path.sh - -# Sudo-Hinweis für bash.bashrc -SUDO_HINT_BLOCK='# sudo hint -if [ ! -e "$HOME/.sudo_as_admin_successful" ] && [ ! -e "$HOME/.hushlogin" ] ; then -case " $(groups) " in *\ admin\ *|*\ sudo\ *) -if [ -x /usr/bin/sudo ]; then -cat <<-EOF -To run a command as administrator (user "root"), use "sudo ". -See "man sudo_root" for details. +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + cat << 'EOF' > /etc/profile.d/sbin_in_path.sh +if groups | grep -q "\bsudo\b"; then + case ":$PATH:" in + *":/sbin:"*) ;; + *) export PATH="$PATH:/sbin" ;; + esac + case ":$PATH:" in + *":/usr/sbin:"*) ;; + *) export PATH="$PATH:/usr/sbin" ;; + esac +fi EOF -fi -esac -fi' -# Prüfen, ob der sudo-Hinweis bereits existiert -if ! grep -Fxq "# sudo hint" /etc/bash.bashrc; then - echo -e "\n$SUDO_HINT_BLOCK" | tee -a /etc/bash.bashrc >/dev/null - echo "Sudo-Hinweis zur bash.bashrc hinzugefügt." -else - echo "Sudo-Hinweis ist bereits in bash.bashrc vorhanden." + echo "ℹ️ sbin wurde zum PATH für sudo-Nutzer hinzugefügt." fi -XDG_BLOCK='# /etc/profile.d/desktop_session_xdg_dirs.sh - Prepend a $DESKTOP_SESSION-named directory to $XDG_CONFIG_DIRS and $XDG_DATA_DIRS +# sudo-Hinweis +read -p "❓ Soll ein sudo-Hinweis hinzugefügt werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + cat << 'EOF' > /etc/profile.d/sudo_hint.sh +if [ ! -e "$HOME/.sudo_as_admin_successful" ] && [ ! -e "$HOME/.hushlogin" ] ; then + case " $(groups) " in *\ admin\ *|*\ sudo\ *) + if [ -x /usr/bin/sudo ]; then + echo 'To run a command as administrator (user "root"), use "sudo ".' + echo 'See "man sudo_root" for details.' + fi + esac +fi +EOF + + echo "ℹ️ sudo-Hinweis wurde hinzugefügt!" +fi + +# sudo-Hinweis +read -p "❓ Sollen die XDG-Data-Dirs gesetzt werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + cat << 'EOF' > /etc/profile.d/xdg_dirs_desktop_session.sh +# /etc/profile.d/desktop_session_xdg_dirs.sh - Prepend a $DESKTOP_SESSION-named directory to $XDG_CONFIG_DIRS and $XDG_DATA_DIRS DEFAULT_XDG_CONFIG_DIRS="/etc/xdg" DEFAULT_XDG_DATA_DIRS="/usr/local/share/:/usr/share/" @@ -70,9 +83,11 @@ if [ -n "$DESKTOP_SESSION" ]; then export XDG_DATA_DIRS fi fi -' +EOF -echo "$XDG_BLOCK" >/etc/profile.d/xdg_dirs_desktop_session.sh + echo "ℹ️ XDG-Data-Dirs wurden gesetzt!" +fi -echo "Fertig! Bitte neu einloggen." +chmod +x /etc/profile.d/* +echo "✅ Abgeschlossen. Zum Anwenden der Änderungen bitte neu einloggen!" diff --git a/10_Programs.sh b/10_Programs.sh index f8288d1..ee593ad 100755 --- a/10_Programs.sh +++ b/10_Programs.sh @@ -4,7 +4,7 @@ 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." + 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 diff --git a/1_TrixieUpgrade.sh b/1_TrixieUpgrade.sh index 7c045f8..3421b80 100755 --- a/1_TrixieUpgrade.sh +++ b/1_TrixieUpgrade.sh @@ -2,33 +2,39 @@ # Root-Rechte prüfen if [ "$(id -u)" -ne 0 ]; then - echo "Bitte mit sudo ausführen!" + echo "❌ Bitte als root ausführen!" exit 1 fi # Sicherheitsabfrage -read -p "Achtung! Du führst ein Release-Upgrade auf Debian Trixie durch. Fortfahren? (ja/nein): " choice -if [[ "$choice" != "ja" ]]; then - echo "Upgrade abgebrochen." +read -p "⚠️ Achtung! Du führst ein Release-Upgrade auf Debian Trixie durch. Fortfahren? (ja/nein): " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" != "j" ]] || [[ "$answer" != "y" ]]; then + echo "❌ Upgrade abgebrochen." exit 0 fi -echo "Aktualisiere Paketlisten..." +echo "ℹ️ Aktualisiere Paketlisten..." sudo apt-get update -echo "Starte System-Upgrade..." +echo "ℹ️ Starte System-Upgrade..." sudo apt-get full-upgrade -y -echo "Ändere die Paketquellen auf Debian Trixie..." +echo "ℹ️ Ändere die Paketquellen auf Debian Trixie..." sudo sed -i 's/bookworm/trixie/g' /etc/apt/sources.list sudo find /etc/apt/sources.list.d -type f -exec sed -i 's/bookworm/trixie/g' {} \; -echo "Aktualisiere Paketlisten erneut..." +echo "ℹ️ Aktualisiere Paketlisten erneut..." sudo apt-get update -echo "Starte vollständiges Release-Upgrade..." +echo "ℹ️ Starte vollständiges Release-Upgrade..." sudo apt-get full-upgrade -y -echo "System wird jetzt neu gestartet..." + +read -p "❓ Drücke [ENTER], um das System jetzt neuzustarten." + +echo "ℹ️ System wird jetzt neu gestartet..." sudo reboot diff --git a/2_AdJoin.sh b/2_AdJoin.sh index 4bd5738..f678821 100755 --- a/2_AdJoin.sh +++ b/2_AdJoin.sh @@ -2,25 +2,30 @@ # Root-Rechte prüfen if [ "$(id -u)" -eq 0 ]; then - echo "Bitte nicht als Root ausführen! Das Skript nutzt sudo, falls nötig." + echo "❌ Bitte nicht als root ausführen! Das Skript nutzt sudo, falls nötig." exit 1 fi # Verzeichnis setzen -REPO_DIR="$HOME/Linux-Active-Directory-join-script" +REPO_DIR="/tmp/Linux-Active-Directory-join-script" # Repository klonen, falls es noch nicht existiert if [ -d "$REPO_DIR" ]; then - echo "Repository existiert bereits. Überspringe das Klonen." + echo "ℹ️ Repository existiert bereits. Überspringe das Klonen." else - echo "Klonen des Repositories..." + echo "ℹ️ Klonen des Repositories..." git clone https://gitea.creative-dragonslayer.de/DragonSlayer_14/Linux-Active-Directory-join-script.git "$REPO_DIR" fi # In das Verzeichnis wechseln -cd "$REPO_DIR" || { echo "Fehler: Konnte nicht in das Verzeichnis wechseln!"; exit 1; } +cd "$REPO_DIR" || { echo "❌ Fehler: Konnte nicht in das Verzeichnis wechseln!"; exit 1; } # AD-Skript ausführen -echo "Starte Active Directory Verbindung..." -sudo bash ADconnection.sh - +if [ -f "ADconnection.sh" ]; then + chmod +x ADconnection.sh + echo "ℹ️ Starte Active Directory setup..." + ./ADconnection.sh +else + echo "❌ Fehler: ADconnection.sh nicht gefunden!" + exit 1 +fi diff --git a/3_HyprlandInstall.sh b/3_HyprlandInstall.sh index 8f60635..eccc50e 100755 --- a/3_HyprlandInstall.sh +++ b/3_HyprlandInstall.sh @@ -1,26 +1,31 @@ #!/bin/bash +# Root-Rechte prüfen +if [ "$(id -u)" -eq 0 ]; then + echo "❌ Bitte nicht als root ausführen! Das Skript nutzt sudo, falls nötig." + exit 1 +fi + # Repository-Pfad definieren -REPO_DIR="$HOME/Debian-Hyprland" +REPO_DIR="/tmp/Debian-Hyprland" # Falls das Repository bereits existiert, überspringen if [ -d "$REPO_DIR" ]; then - echo "Repository existiert bereits. Aktualisiere stattdessen..." - cd "$REPO_DIR" || { echo "Fehler: Konnte nicht in das Verzeichnis wechseln!"; exit 1; } - git pull + echo "ℹ️ Repository existiert bereits. Überspringe das klonen..." else - echo "Klonen des Repositories..." + echo "ℹ️ Klonen des Repositories..." git clone --depth=1 https://github.com/JaKooLit/Debian-Hyprland.git "$REPO_DIR" || { echo "Fehler beim Klonen!"; exit 1; } - cd "$REPO_DIR" || { echo "Fehler: Konnte nicht in das Verzeichnis wechseln!"; exit 1; } fi +# In das Verzeichnis wechseln +cd "$REPO_DIR" || { echo "❌ Fehler: Konnte nicht in das Verzeichnis wechseln!"; exit 1; } + # Sicherstellen, dass das Installationsskript existiert und ausführbar ist if [ -f "install.sh" ]; then chmod +x install.sh - echo "Starte Installation..." + echo "ℹ️ Starte Installation..." ./install.sh else - echo "Fehler: install.sh nicht gefunden!" + echo "❌ Fehler: install.sh nicht gefunden!" exit 1 fi - diff --git a/4_ZshRegister.sh b/4_ZshRegister.sh index fa3e108..9f2e083 100755 --- a/4_ZshRegister.sh +++ b/4_ZshRegister.sh @@ -2,61 +2,67 @@ # Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird if [[ $EUID -ne 0 ]]; then - echo "Dieses Skript muss als root ausgeführt werden." + echo "❌ Bitte als root ausführen!" exit 1 fi # Tatsächlichen Benutzer ermitteln (nicht root) if [[ -z "$SUDO_USER" || "$SUDO_USER" == "root" ]]; then - echo "Fehler: Das Skript muss mit 'sudo' von einem normalen Benutzer ausgeführt werden." + echo "❌ Fehler: Das Skript muss mit 'sudo' von einem normalen Benutzer ausgeführt werden." exit 1 fi USER_NAME="$SUDO_USER" USER_HOME=$(eval echo ~$USER_NAME) -# Eintrag aus getent passwd holen -USER_ENTRY=$(getent passwd "$USER_NAME") +read -p "❓ Soll die shell für $USER_NAME auf ZSH gesetzt werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer -# Backup der passwd Datei -cp /etc/passwd /etc/passwd.bak +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + # Eintrag aus getent passwd holen + USER_ENTRY=$(getent passwd "$USER_NAME") -if grep -q "^$USER_NAME:" /etc/passwd; then - # Existierenden Eintrag aktualisieren - sed -i "/^$USER_NAME:/s|[^:]*$|/bin/zsh|" /etc/passwd - echo "Shell für $USER_NAME wurde auf zsh aktualisiert." -else - # Neuen Eintrag hinzufügen - UPDATED_ENTRY=$(echo "$USER_ENTRY" | awk -F: -v OFS=: '{ $NF="/bin/zsh"; print }') - echo "$UPDATED_ENTRY" >>/etc/passwd - echo "Eintrag für $USER_NAME wurde in /etc/passwd geschrieben mit zsh als Shell." + # Backup der passwd Datei + cp /etc/passwd /etc/passwd.bak + + if grep -q "^$USER_NAME:" /etc/passwd; then + # Existierenden Eintrag aktualisieren + sed -i "/^$USER_NAME:/s|[^:]*$|/bin/zsh|" /etc/passwd + echo "ℹ️ Shell für $USER_NAME wurde auf zsh aktualisiert." + else + # Neuen Eintrag hinzufügen + UPDATED_ENTRY=$(echo "$USER_ENTRY" | awk -F: -v OFS=: '{ $NF="/bin/zsh"; print }') + echo "$UPDATED_ENTRY" >>/etc/passwd + echo "ℹ️ Eintrag für $USER_NAME wurde in /etc/passwd geschrieben mit zsh als Shell." + fi + + # Repository klonen + REPO_DIR="$USER_HOME/Debian-Hyprland" + sudo -u "$USER_NAME" git clone https://github.com/JaKooLit/Debian-Hyprland.git "$REPO_DIR" + + # Ordner nach ~/.oh-my-zsh/themes kopieren + THEME_SRC="$REPO_DIR/assets/add_zsh_theme" + THEME_DEST="$USER_HOME/.oh-my-zsh/themes" + + if [[ -d "$THEME_SRC" ]]; then + sudo -u "$USER_NAME" mkdir -p "$THEME_DEST" + sudo -u "$USER_NAME" cp -r "$THEME_SRC"/* "$THEME_DEST/" + echo "🎨 ZSH-Theme wurde nach $THEME_DEST kopiert." + else + echo "⚠️ Fehler: Theme-Ordner wurde nicht gefunden!" + fi + + # Repository löschen + rm -rf "$REPO_DIR" + + # /etc/profile in /etc/zsh/zprofile einfügen, falls nicht bereits vorhanden + if ! grep -q "source /etc/profile" /etc/zsh/zprofile; then + echo "source /etc/profile" >>/etc/zsh/zprofile + echo "🔧 'source /etc/profile' wurde in /etc/zsh/zprofile hinzugefügt." + else + echo "ℹ️ 'source /etc/profile' ist bereits in /etc/zsh/zprofile vorhanden." + fi fi -# Repository klonen -REPO_DIR="$USER_HOME/Debian-Hyprland" -sudo -u "$USER_NAME" git clone https://github.com/JaKooLit/Debian-Hyprland.git "$REPO_DIR" - -# Ordner nach ~/.oh-my-zsh/themes kopieren -THEME_SRC="$REPO_DIR/assets/add_zsh_theme" -THEME_DEST="$USER_HOME/.oh-my-zsh/themes" - -if [[ -d "$THEME_SRC" ]]; then - sudo -u "$USER_NAME" mkdir -p "$THEME_DEST" - sudo -u "$USER_NAME" cp -r "$THEME_SRC"/* "$THEME_DEST/" - echo "🎨 ZSH-Theme wurde nach $THEME_DEST kopiert." -else - echo "⚠️ Fehler: Theme-Ordner wurde nicht gefunden!" -fi - -# Repository löschen -rm -rf "$REPO_DIR" - -# /etc/profile in /etc/zsh/zprofile einfügen, falls nicht bereits vorhanden -if ! grep -q "source /etc/profile" /etc/zsh/zprofile; then - echo "source /etc/profile" >>/etc/zsh/zprofile - echo "🔧 'source /etc/profile' wurde in /etc/zsh/zprofile hinzugefügt." -else - echo "ℹ️ 'source /etc/profile' ist bereits in /etc/zsh/zprofile vorhanden." -fi - -echo "✅ Installation abgeschlossen!" +echo "✅ Shell wurde erfolgreich auf ZSH gesetzt! Zum Anwenden, neue Terminal-Sitzung öffnen." diff --git a/5_DomainLogin.sh b/5_DomainLogin.sh index 91d9751..653dc1e 100755 --- a/5_DomainLogin.sh +++ b/5_DomainLogin.sh @@ -2,46 +2,52 @@ # Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird if [[ $EUID -ne 0 ]]; then - echo "Dieses Skript muss als root ausgeführt werden." + echo "❌ Dieses Skript muss als root ausgeführt werden." exit 1 fi -# SDDM-Konfigurationsdatei in sddm.conf.d erstellen -SDDM_CONF_DIR="/etc/sddm.conf.d" -SDDM_CUSTOM_CONF="$SDDM_CONF_DIR/custom.conf" -mkdir -p "$SDDM_CONF_DIR" +read -p "❓ Soll SDDM so konfiguriert werden, dass Domänenbenutzer angezeigt werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer -# Bestehende Konfiguration sichern und anpassen -if [[ -f "$SDDM_CUSTOM_CONF" ]]; then - sed -i '/MaximumUid/d' "$SDDM_CUSTOM_CONF" - sed -i '/MinimumUid/d' "$SDDM_CUSTOM_CONF" - sed -i '/HideShells/d' "$SDDM_CUSTOM_CONF" - echo "MaximumUid=9999999999" >>"$SDDM_CUSTOM_CONF" - echo "MinimumUid=1000" >>"$SDDM_CUSTOM_CONF" - echo "HideShells=/sbin/nologin,/bin/false,/usr/sbin/nologin" >>"$SDDM_CUSTOM_CONF" -else - cat <"$SDDM_CUSTOM_CONF" +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + # SDDM-Konfigurationsdatei in sddm.conf.d erstellen + SDDM_CONF_DIR="/etc/sddm.conf.d" + SDDM_CUSTOM_CONF="$SDDM_CONF_DIR/ad_login.conf" + mkdir -p "$SDDM_CONF_DIR" + + # Bestehende Konfiguration sichern und anpassen + if [[ -f "$SDDM_CUSTOM_CONF" ]]; then + sed -i '/MaximumUid/d' "$SDDM_CUSTOM_CONF" + sed -i '/MinimumUid/d' "$SDDM_CUSTOM_CONF" + sed -i '/HideShells/d' "$SDDM_CUSTOM_CONF" + echo "MaximumUid=99999999999999999999" >>"$SDDM_CUSTOM_CONF" + echo "MinimumUid=1000" >>"$SDDM_CUSTOM_CONF" + echo "HideShells=/sbin/nologin,/bin/false,/usr/sbin/nologin" >>"$SDDM_CUSTOM_CONF" + else + cat <"$SDDM_CUSTOM_CONF" [Users] -MaximumUid=9999999999 +MaximumUid=999999999999999999 MinimumUid=1000 HideShells=/sbin/nologin,/bin/false,/usr/sbin/nologin EOF -fi - -# SSSD-Konfiguration anpassen, falls die Datei existiert -SSSD_CONF="/etc/sssd/sssd.conf" -if [[ -f "$SSSD_CONF" ]]; then - if grep -q "^enumerate" "$SSSD_CONF"; then - sed -i 's/^enumerate.*/enumerate = false/' "$SSSD_CONF" - else - echo "enumerate = false" >>"$SSSD_CONF" fi - # Berechtigungen für SSSD-Konfigurationsdatei setzen - chmod 600 "$SSSD_CONF" + + # SSSD-Konfiguration anpassen, falls die Datei existiert + SSSD_CONF="/etc/sssd/sssd.conf" + if [[ -f "$SSSD_CONF" ]]; then + if grep -q "^enumerate" "$SSSD_CONF"; then + sed -i 's/^enumerate.*/enumerate = false/' "$SSSD_CONF" + else + echo "enumerate = false" >>"$SSSD_CONF" + fi + # Berechtigungen für SSSD-Konfigurationsdatei setzen + chmod 600 "$SSSD_CONF" + fi + + # SSSD und SDDM neu starten + systemctl restart sssd + systemctl restart sddm fi -# SSSD und SDDM neu starten -systemctl restart sssd -systemctl restart sddm - -echo "SDDM wurde so konfiguriert, dass lokale und bereits angemeldete Domänenbenutzer angezeigt werden." +echo "✅ Konfiguration von SDDM und sssd abgeschlossen!" diff --git a/6_Polish.sh b/6_Polish.sh index f61f084..7eaf7ae 100755 --- a/6_Polish.sh +++ b/6_Polish.sh @@ -2,68 +2,100 @@ 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." +# Root-Rechte prüfen +if [ "$(id -u)" -eq 0 ]; then + echo "❌ Bitte nicht als root ausführen! Das Skript nutzt sudo, falls nötig." exit 1 fi # System aktualisieren und benötigte Pakete installieren echo "🔄 System wird aktualisiert..." -sudo apt update && sudo apt install -y flatpak neovim ufw rfkill xdg-user-dirs rsync clamav clamav-freshclam clamav-docs libclamunrar9 clamav-daemon bleachbit network-manager-gnome +sudo apt update && sudo apt upgrade -y + +echo "ℹ️ Firewall (ufw) wird installiert..." +sudo apt install -y ufw sudo ufw enable -# Flatpak Flathub-Repo hinzufügen +echo "ℹ️ Virenschutz (clamav) wird installiert..." +sudo apt install -y clamav clamav-freshclam clamav-docs libclamunrar9 clamav-daemon + +echo "ℹ️ Installiere Flatpak..." +sudo apt install -y flatpak sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo +echo "ℹ️ Installiere nützliche Pakete..." +sudo apt install -y neovim rfkill xdg-user-dirs rsync bleachbit network-manager-gnome + # Portmaster installieren -wget -O /tmp/portmaster-installer.deb https://updates.safing.io/latest/linux_amd64/packages/portmaster-installer.deb -sudo apt install -y /tmp/portmaster-installer.deb -rm /tmp/portmaster-installer.deb +read -p "❓ Soll Portmaster installiert werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + wget -O /tmp/portmaster-installer.deb https://updates.safing.io/latest/linux_amd64/packages/portmaster-installer.deb + sudo apt install -y /tmp/portmaster-installer.deb + rm /tmp/portmaster-installer.deb + + echo "✅ Portmaster wurde installiert!" +fi # Waterfox-Installation -echo "🌍 Waterfox wird installiert..." -sudo install -d -m 0755 /etc/apt/keyrings -curl -fsSL https://download.opensuse.org/repositories/home:hawkeye116477:waterfox/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_hawkeye116477_waterfox.gpg > /dev/null -echo 'deb https://download.opensuse.org/repositories/home:/hawkeye116477:/waterfox/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:hawkeye116477:waterfox.list +read -p "❓ Soll Firefox durch Waterfox ersetzt werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer -sudo apt update && sudo apt install -y waterfox +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + echo "🌍 Waterfox wird installiert..." + sudo apt remove -y firefox + sudo install -d -m 0755 /etc/apt/keyrings + curl -fsSL https://download.opensuse.org/repositories/home:hawkeye116477:waterfox/Debian_12/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_hawkeye116477_waterfox.gpg > /dev/null + echo 'deb https://download.opensuse.org/repositories/home:/hawkeye116477:/waterfox/Debian_12/ /' | sudo tee /etc/apt/sources.list.d/home:hawkeye116477:waterfox.list -# Waterfox als Standardbrowser setzen -echo "🌍 Setze Waterfox als Standardbrowser..." -if command -v xdg-settings >/dev/null 2>&1; then - xdg-settings set default-web-browser waterfox.desktop - echo "✅ Waterfox wurde als Standardbrowser gesetzt." + sudo apt update && sudo apt install -y waterfox + echo "✅ Waterfox wurde installiert!" - # Standardanwendungen für spezifische Dateitypen setzen - xdg-mime default waterfox.desktop text/html - xdg-mime default waterfox.desktop application/xhtml+xml - xdg-mime default waterfox.desktop x-scheme-handler/http - xdg-mime default waterfox.desktop x-scheme-handler/https -else - echo "❌ 'xdg-settings' ist nicht verfügbar. Bitte manuell den Standardbrowser setzen." + # Waterfox als Standardbrowser setzen + echo "🌍 Setze Waterfox als Standardbrowser..." + if command -v xdg-settings >/dev/null 2>&1; then + xdg-settings set default-web-browser waterfox.desktop + echo "✅ Waterfox wurde als Standardbrowser gesetzt." + + # Standardanwendungen für spezifische Dateitypen setzen + xdg-mime default waterfox.desktop text/html + xdg-mime default waterfox.desktop application/xhtml+xml + xdg-mime default waterfox.desktop x-scheme-handler/http + xdg-mime default waterfox.desktop x-scheme-handler/https + else + echo "❌ 'xdg-settings' ist nicht verfügbar. Bitte manuell den Standardbrowser setzen." + fi fi # Hyprland User Bindings -HYPR_CONFIG_DIR="$HOME/.config/hypr/UserConfigs" -mkdir -p "$HYPR_CONFIG_DIR" +read -p "❓ Sollen Anpassungen an den Hyprland-Keybinds vorgenomen werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer -# 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" -) +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + HYPR_CONFIG_DIR="$HOME/.config/hypr/UserConfigs" + mkdir -p "$HYPR_CONFIG_DIR" -for BIND in "${!KEYBINDS[@]}"; do - FULL_BIND="$BIND # ${KEYBINDS[$BIND]}" - if ! grep -Fxq "$FULL_BIND" "$HYPR_CONFIG_DIR/UserKeybinds.conf" 2>/dev/null; then - echo "$FULL_BIND" >>"$HYPR_CONFIG_DIR/UserKeybinds.conf" - echo "✅ Keybind hinzugefügt: ${KEYBINDS[$BIND]}" - else - echo "ℹ️ Keybind existiert bereits: ${KEYBINDS[$BIND]}" - fi -done + # 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 + FULL_BIND="$BIND # ${KEYBINDS[$BIND]}" + if ! grep -Fxq "$FULL_BIND" "$HYPR_CONFIG_DIR/UserKeybinds.conf" 2>/dev/null; then + echo "$FULL_BIND" >>"$HYPR_CONFIG_DIR/UserKeybinds.conf" + echo "✅ Keybind hinzugefügt: ${KEYBINDS[$BIND]}" + else + echo "ℹ️ Keybind existiert bereits: ${KEYBINDS[$BIND]}" + fi + done +fi # Standardvorlagen ablegen echo "📂 Standardvorlagen werden im Vorlagen-Ordner erstellt..." @@ -95,104 +127,110 @@ TARGET_DIR="$HOME/.config/hypr/UserScripts" CONFIG_DIR="$HOME/.config/hypr/UserConfigs" USER_KEYBINDS_FILE="$CONFIG_DIR/UserKeybinds.conf" # Definition an der richtigen Stelle -# Bereinige fälschlicherweise kopierte Dateien -echo "📂 Überprüfe und bereinige Dateien im Verzeichnis $TARGET_DIR..." -if [[ -d "$TARGET_DIR" ]]; then +read -p "❓ Sollen Anpassungen an den Users-Dirs in den Hyprland-Skripten vorgenommen werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + # Bereinige fälschlicherweise kopierte Dateien + echo "📂 Überprüfe und bereinige Dateien im Verzeichnis $TARGET_DIR..." + if [[ -d "$TARGET_DIR" ]]; then + for FILE in "$TARGET_DIR"/*; do + if [[ -f "$FILE" ]]; then + BASENAME=$(basename "$FILE") + SOURCE_FILE="$SOURCE_DIR/$BASENAME" + + # Prüfen, ob die Datei im Quellverzeichnis existiert und angepasst werden musste + if [[ -f "$SOURCE_FILE" ]] && ! grep -qE '\$HOME/Desktop|\$HOME/Downloads|\$HOME/Documents|\$HOME/Pictures|\$HOME/Music|\$HOME/Videos' "$SOURCE_FILE"; then + echo "🗑️ Entferne fälschlicherweise kopierte Datei: $BASENAME" + rm "$FILE" + + # Rückgängig machen der falschen Verweise in UserKeybinds.conf + if [[ -f "$USER_KEYBINDS_FILE" ]]; then + echo "🔄 Setze falschen Verweis für $BASENAME in $USER_KEYBINDS_FILE zurück..." + sed -i "s|\$UserScripts/$BASENAME|\$scriptsDir/$BASENAME|g" "$USER_KEYBINDS_FILE" + echo "✅ Verweis für $BASENAME zurückgesetzt." + fi + else + echo "✅ Datei $BASENAME ist korrekt und bleibt erhalten." + fi + fi + done + else + echo "⚠️ Zielverzeichnis $TARGET_DIR existiert nicht. Keine Bereinigung erforderlich." + fi + + # Kopiere nur relevante Dateien und behalte die Verzeichnisstruktur bei + echo "📂 Verarbeite Dateien im Verzeichnis $SOURCE_DIR..." + mkdir -p "$TARGET_DIR" + COPIED_FILES=() # Array, um die tatsächlich kopierten Dateien zu speichern + + if [[ -d "$SOURCE_DIR" ]]; then + find "$SOURCE_DIR" -type f | while read -r FILE; do + RELATIVE_PATH="${FILE#$SOURCE_DIR/}" # Relativer Pfad zur Datei + TARGET_PATH="$TARGET_DIR/$RELATIVE_PATH" + + # Prüfen, ob die Datei angepasst werden muss + if grep -qE '\$HOME/Desktop|\$HOME/Downloads|\$HOME/Documents|\$HOME/Pictures|\$HOME/Music|\$HOME/Videos|/home/[a-zA-Z0-9._-]*/Desktop|/home/[a-zA-Z0-9._-]*/Downloads|/home/[a-zA-Z0-9._-]*/Documents|/home/[a-zA-Z0-9._-]*/Pictures|/home/[a-zA-Z0-9._-]*/Music|/home/[a-zA-Z0-9._-]*/Videos|\$\(xdg-user-dir\)/Desktop|\$\(xdg-user-dir\)/Downloads|\$\(xdg-user-dir\)/Documents|\$\(xdg-user-dir\)/Pictures|\$\(xdg-user-dir\)/Music|\$\(xdg-user-dir\)/Videos' "$FILE"; then + echo "🔄 Kopiere Datei zur Anpassung: $RELATIVE_PATH" + mkdir -p "$(dirname "$TARGET_PATH")" # Zielverzeichnis erstellen + cp "$FILE" "$TARGET_PATH" + COPIED_FILES+=("$RELATIVE_PATH") # Relativen Pfad speichern + else + echo "ℹ️ Datei $RELATIVE_PATH benötigt keine Anpassung. Überspringe Kopieren." + fi + done + else + echo "⚠️ Quellverzeichnis $SOURCE_DIR existiert nicht. Überspringe Verarbeitung." + fi + + # Ersetzungen in allen Dateien im Verzeichnis UserScripts vornehmen + echo "🔄 Ersetze absolute Pfade, XDG-Verzeichnisse und Platzhalter in allen Dateien im Verzeichnis $TARGET_DIR..." for FILE in "$TARGET_DIR"/*; do if [[ -f "$FILE" ]]; then - BASENAME=$(basename "$FILE") - SOURCE_FILE="$SOURCE_DIR/$BASENAME" + echo "Verarbeite Datei: $FILE" - # Prüfen, ob die Datei im Quellverzeichnis existiert und angepasst werden musste - if [[ -f "$SOURCE_FILE" ]] && ! grep -qE '\$HOME/Desktop|\$HOME/Downloads|\$HOME/Documents|\$HOME/Pictures|\$HOME/Music|\$HOME/Videos' "$SOURCE_FILE"; then - echo "🗑️ Entferne fälschlicherweise kopierte Datei: $BASENAME" - rm "$FILE" + # Ersetzungen vornehmen + sed -i \ + -e 's|\$HOME/Desktop|$(xdg-user-dir DESKTOP)|g' \ + -e 's|\$HOME/Downloads|$(xdg-user-dir DOWNLOAD)|g' \ + -e 's|\$HOME/Documents|$(xdg-user-dir DOCUMENTS)|g' \ + -e 's|\$HOME/Pictures|$(xdg-user-dir PICTURES)|g' \ + -e 's|\$HOME/Music|$(xdg-user-dir MUSIC)|g' \ + -e 's|\$HOME/Videos|$(xdg-user-dir VIDEOS)|g' \ + -e 's|/home/[a-zA-Z0-9._-]*/Desktop|$(xdg-user-dir DESKTOP)|g' \ + -e 's|/home/[a-zA-Z0-9._-]*/Downloads|$(xdg-user-dir DOWNLOAD)|g' \ + -e 's|/home/[a-zA-Z0-9._-]*/Documents|$(xdg-user-dir DOCUMENTS)|g' \ + -e 's|/home/[a-zA-Z0-9._-]*/Pictures|$(xdg-user-dir PICTURES)|g' \ + -e 's|/home/[a-zA-Z0-9._-]*/Music|$(xdg-user-dir MUSIC)|g' \ + -e 's|/home/[a-zA-Z0-9._-]*/Videos|$(xdg-user-dir VIDEOS)|g' \ + -e 's|$(xdg-user-dir)/Desktop|$(xdg-user-dir DESKTOP)|g' \ + -e 's|$(xdg-user-dir)/Downloads|$(xdg-user-dir DOWNLOAD)|g' \ + -e 's|$(xdg-user-dir)/Documents|$(xdg-user-dir DOCUMENTS)|g' \ + -e 's|$(xdg-user-dir)/Pictures|$(xdg-user-dir PICTURES)|g' \ + -e 's|$(xdg-user-dir)/Music|$(xdg-user-dir MUSIC)|g' \ + -e 's|$(xdg-user-dir)/Videos|$(xdg-user-dir VIDEOS)|g' \ + "$FILE" - # Rückgängig machen der falschen Verweise in UserKeybinds.conf - if [[ -f "$USER_KEYBINDS_FILE" ]]; then - echo "🔄 Setze falschen Verweis für $BASENAME in $USER_KEYBINDS_FILE zurück..." - sed -i "s|\$UserScripts/$BASENAME|\$scriptsDir/$BASENAME|g" "$USER_KEYBINDS_FILE" - echo "✅ Verweis für $BASENAME zurückgesetzt." - fi - else - echo "✅ Datei $BASENAME ist korrekt und bleibt erhalten." - fi + echo "✅ Ersetzungen in $FILE abgeschlossen." fi done -else - echo "⚠️ Zielverzeichnis $TARGET_DIR existiert nicht. Keine Bereinigung erforderlich." -fi -# Kopiere nur relevante Dateien und behalte die Verzeichnisstruktur bei -echo "📂 Verarbeite Dateien im Verzeichnis $SOURCE_DIR..." -mkdir -p "$TARGET_DIR" -COPIED_FILES=() # Array, um die tatsächlich kopierten Dateien zu speichern - -if [[ -d "$SOURCE_DIR" ]]; then - find "$SOURCE_DIR" -type f | while read -r FILE; do - RELATIVE_PATH="${FILE#$SOURCE_DIR/}" # Relativer Pfad zur Datei - TARGET_PATH="$TARGET_DIR/$RELATIVE_PATH" - - # Prüfen, ob die Datei angepasst werden muss - if grep -qE '\$HOME/Desktop|\$HOME/Downloads|\$HOME/Documents|\$HOME/Pictures|\$HOME/Music|\$HOME/Videos|/home/[a-zA-Z0-9._-]*/Desktop|/home/[a-zA-Z0-9._-]*/Downloads|/home/[a-zA-Z0-9._-]*/Documents|/home/[a-zA-Z0-9._-]*/Pictures|/home/[a-zA-Z0-9._-]*/Music|/home/[a-zA-Z0-9._-]*/Videos|\$\(xdg-user-dir\)/Desktop|\$\(xdg-user-dir\)/Downloads|\$\(xdg-user-dir\)/Documents|\$\(xdg-user-dir\)/Pictures|\$\(xdg-user-dir\)/Music|\$\(xdg-user-dir\)/Videos' "$FILE"; then - echo "🔄 Kopiere Datei zur Anpassung: $RELATIVE_PATH" - mkdir -p "$(dirname "$TARGET_PATH")" # Zielverzeichnis erstellen - cp "$FILE" "$TARGET_PATH" - COPIED_FILES+=("$RELATIVE_PATH") # Relativen Pfad speichern - else - echo "ℹ️ Datei $RELATIVE_PATH benötigt keine Anpassung. Überspringe Kopieren." - fi - done -else - echo "⚠️ Quellverzeichnis $SOURCE_DIR existiert nicht. Überspringe Verarbeitung." -fi - -# Ersetzungen in allen Dateien im Verzeichnis UserScripts vornehmen -echo "🔄 Ersetze absolute Pfade, XDG-Verzeichnisse und Platzhalter in allen Dateien im Verzeichnis $TARGET_DIR..." -for FILE in "$TARGET_DIR"/*; do - if [[ -f "$FILE" ]]; then - echo "Verarbeite Datei: $FILE" - - # Ersetzungen vornehmen - sed -i \ - -e 's|\$HOME/Desktop|$(xdg-user-dir DESKTOP)|g' \ - -e 's|\$HOME/Downloads|$(xdg-user-dir DOWNLOAD)|g' \ - -e 's|\$HOME/Documents|$(xdg-user-dir DOCUMENTS)|g' \ - -e 's|\$HOME/Pictures|$(xdg-user-dir PICTURES)|g' \ - -e 's|\$HOME/Music|$(xdg-user-dir MUSIC)|g' \ - -e 's|\$HOME/Videos|$(xdg-user-dir VIDEOS)|g' \ - -e 's|/home/[a-zA-Z0-9._-]*/Desktop|$(xdg-user-dir DESKTOP)|g' \ - -e 's|/home/[a-zA-Z0-9._-]*/Downloads|$(xdg-user-dir DOWNLOAD)|g' \ - -e 's|/home/[a-zA-Z0-9._-]*/Documents|$(xdg-user-dir DOCUMENTS)|g' \ - -e 's|/home/[a-zA-Z0-9._-]*/Pictures|$(xdg-user-dir PICTURES)|g' \ - -e 's|/home/[a-zA-Z0-9._-]*/Music|$(xdg-user-dir MUSIC)|g' \ - -e 's|/home/[a-zA-Z0-9._-]*/Videos|$(xdg-user-dir VIDEOS)|g' \ - -e 's|$(xdg-user-dir)/Desktop|$(xdg-user-dir DESKTOP)|g' \ - -e 's|$(xdg-user-dir)/Downloads|$(xdg-user-dir DOWNLOAD)|g' \ - -e 's|$(xdg-user-dir)/Documents|$(xdg-user-dir DOCUMENTS)|g' \ - -e 's|$(xdg-user-dir)/Pictures|$(xdg-user-dir PICTURES)|g' \ - -e 's|$(xdg-user-dir)/Music|$(xdg-user-dir MUSIC)|g' \ - -e 's|$(xdg-user-dir)/Videos|$(xdg-user-dir VIDEOS)|g' \ - "$FILE" - - echo "✅ Ersetzungen in $FILE abgeschlossen." + # Verweise in UserKeybinds.conf anpassen + if [[ -f "$USER_KEYBINDS_FILE" ]]; then + echo "🔄 Passe Verweise in $USER_KEYBINDS_FILE an..." + for SCRIPT in "${COPIED_FILES[@]}"; do + # Ersetze $scriptsDir/ durch $UserScripts/ + sed -i "s|\$scriptsDir/$SCRIPT|\$UserScripts/$SCRIPT|g" "$USER_KEYBINDS_FILE" + echo "✅ Verweis für $SCRIPT angepasst." + done + else + echo "⚠️ Datei $USER_KEYBINDS_FILE existiert nicht. Überspringe Anpassung der Verweise." fi -done -# Verweise in UserKeybinds.conf anpassen -if [[ -f "$USER_KEYBINDS_FILE" ]]; then - echo "🔄 Passe Verweise in $USER_KEYBINDS_FILE an..." - for SCRIPT in "${COPIED_FILES[@]}"; do - # Ersetze $scriptsDir/ durch $UserScripts/ - sed -i "s|\$scriptsDir/$SCRIPT|\$UserScripts/$SCRIPT|g" "$USER_KEYBINDS_FILE" - echo "✅ Verweis für $SCRIPT angepasst." - done -else - echo "⚠️ Datei $USER_KEYBINDS_FILE existiert nicht. Überspringe Anpassung der Verweise." + echo "📂 Verschiebe $(xdg-user-dir)/Pictures nach $(xdg-user-dir PICTURES)..." + rsync -av --ignore-existing "$(xdg-user-dir)/Pictures/" "$(xdg-user-dir PICTURES)/" + rm -r "$(xdg-user-dir)/Pictures/" fi -echo "📂 Verschiebe $(xdg-user-dir)/Pictures nach $(xdg-user-dir PICTURES)..." -rsync -av --ignore-existing "$(xdg-user-dir)/Pictures/" "$(xdg-user-dir PICTURES)/" -rm -r "$(xdg-user-dir)/Pictures/" - echo "✅ Skript erfolgreich ausgeführt!" diff --git a/8_Plymouth.sh b/8_Plymouth.sh index 187a7e1..25a8d95 100755 --- a/8_Plymouth.sh +++ b/8_Plymouth.sh @@ -4,7 +4,7 @@ set -e # Skript bricht bei Fehlern ab # Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird if [[ $EUID -ne 0 ]]; then - echo "Dieses Skript muss als root ausgeführt werden." + echo "❌ Dieses Skript muss als root ausgeführt werden." exit 1 fi diff --git a/9_GamingSetup.sh b/9_GamingSetup.sh index bf12fae..a1ecbd2 100755 --- a/9_GamingSetup.sh +++ b/9_GamingSetup.sh @@ -2,7 +2,7 @@ # Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird if [[ $EUID -ne 0 ]]; then - echo "Dieses Skript muss als root ausgeführt werden." + echo "❌ Dieses Skript muss als root ausgeführt werden." exit 1 fi @@ -10,26 +10,38 @@ fi apt update && apt upgrade -y # Steam-Installation -dpkg --add-architecture i386 -apt update -apt install -y wget curl +read -p "❓ Soll Steam installiert werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer -wget -O /tmp/steam.deb https://cdn.akamai.steamstatic.com/client/installer/steam.deb -apt install -y /tmp/steam.deb -rm /tmp/steam.deb +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + dpkg --add-architecture i386 + apt update + apt install -y wget curl + + wget -O /tmp/steam.deb https://cdn.akamai.steamstatic.com/client/installer/steam.deb + apt install -y /tmp/steam.deb + rm /tmp/steam.deb +fi # Lutris-Installation -LUTRIS_KEYRING="/etc/apt/keyrings/lutris.gpg" -LUTRIS_REPO="https://download.opensuse.org/repositories/home:/strycore/Debian_12/" +read -p "❓ Soll Lutris installiert werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer -mkdir -p /etc/apt/keyrings -wget -qO /tmp/lutris-key.gpg "${LUTRIS_REPO}Release.key" -gpg --dearmor "$LUTRIS_KEYRING" -rm /tmp/lutris-key.gpg +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + LUTRIS_KEYRING="/etc/apt/keyrings/lutris.gpg" + LUTRIS_REPO="https://download.opensuse.org/repositories/home:/strycore/Debian_12/" -echo "deb [signed-by=$LUTRIS_KEYRING] $LUTRIS_REPO ./" >/etc/apt/sources.list.d/lutris.list + mkdir -p /etc/apt/keyrings + wget -qO /tmp/lutris-key.gpg "${LUTRIS_REPO}Release.key" + gpg --dearmor "$LUTRIS_KEYRING" + rm /tmp/lutris-key.gpg -apt update -apt install -y lutris + echo "deb [signed-by=$LUTRIS_KEYRING] $LUTRIS_REPO ./" >/etc/apt/sources.list.d/lutris.list -echo "✅ Installation von Steam und Lutris abgeschlossen!" + apt update + apt install -y lutris +fi + +echo "✅ Skript abgeschlossen!" -- 2.49.1 From 31535d56aabf927748c3f40a85a299746d2d71eb Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Tue, 25 Mar 2025 11:16:59 +0100 Subject: [PATCH 31/41] =?UTF-8?q?Feat:=20F=C3=BCgt=20Obfuscate=20als=20Pro?= =?UTF-8?q?gramm=20hinzu.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 10_Programs.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/10_Programs.sh b/10_Programs.sh index ee593ad..402b574 100755 --- a/10_Programs.sh +++ b/10_Programs.sh @@ -234,6 +234,8 @@ flatpak install flathub net.nokyan.Resources -y flatpak install flathub org.gnome.World.Secrets -y # Archivverwaltung flatpak install flathub org.gnome.FileRoller -y +# Obfuscate +flatpak install flathub com.belmoussaoui.Obfuscate -y # Flatseal flatpak install com.github.tchx84.Flatseal -y -- 2.49.1 From 50468884d22a936c552b53674f565faa900b423c Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Tue, 25 Mar 2025 11:24:06 +0100 Subject: [PATCH 32/41] Feat: Logging mit Abfrage. --- 0_Setup.sh | 170 ++++++++------------- 10_Programs.sh | 60 +++++++- 2_AdJoin.sh | 21 ++- 3_HyprlandInstall.sh | 7 +- 4_ZshRegister.sh | 144 +++++++++--------- 5_DomainLogin.sh | 70 +++++---- 6_Polish.sh | 342 ++++++++++++++++++++++++------------------- 9_GamingSetup.sh | 25 +++- 8 files changed, 460 insertions(+), 379 deletions(-) diff --git a/0_Setup.sh b/0_Setup.sh index 051cfb9..4e07112 100755 --- a/0_Setup.sh +++ b/0_Setup.sh @@ -1,51 +1,64 @@ #!/bin/bash -# Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird -if [ "$EUID" -ne 0 ]; then - echo "Bitte führen Sie das Skript mit Root-Rechten aus." - exit 1 +# Root-Rechte prüfen +if [ "$(id -u)" -ne 0 ]; then + echo "❌ Bitte als root ausführen!" + exit 1 fi apt update && apt upgrade -y -apt install -y git sudo +apt install -y git sudo 7zip unrar unzip network-manager software-properties-common tree bluetooth wget curl -# Der Code, der eingefügt werden soll -CONFIG_BLOCK='if groups | grep -q "\bsudo\b"; then -case ":$PATH:" in -*":/sbin:"*) ;; -*) export PATH="$PATH:/sbin" ;; -esac -case ":$PATH:" in -*":/usr/sbin:"*) ;; -*) export PATH="$PATH:/usr/sbin" ;; -esac -fi' +# sbin in Path +read -p "❓ Soll sbin für sudo-Nutzer in den PATH aufgenommen werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer -# Saubere Lösung über /etc/profile.d/ -echo "$CONFIG_BLOCK" >/etc/profile.d/custom_path.sh - -# Sudo-Hinweis für bash.bashrc -SUDO_HINT_BLOCK='# sudo hint -if [ ! -e "$HOME/.sudo_as_admin_successful" ] && [ ! -e "$HOME/.hushlogin" ] ; then -case " $(groups) " in *\ admin\ *|*\ sudo\ *) -if [ -x /usr/bin/sudo ]; then -cat <<-EOF -To run a command as administrator (user "root"), use "sudo ". -See "man sudo_root" for details. +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + cat << 'EOF' > /etc/profile.d/sbin_in_path.sh +if groups | grep -q "\bsudo\b"; then + case ":$PATH:" in + *":/sbin:"*) ;; + *) export PATH="$PATH:/sbin" ;; + esac + case ":$PATH:" in + *":/usr/sbin:"*) ;; + *) export PATH="$PATH:/usr/sbin" ;; + esac +fi EOF -fi -esac -fi' -# Prüfen, ob der sudo-Hinweis bereits existiert -if ! grep -Fxq "# sudo hint" /etc/bash.bashrc; then - echo -e "\n$SUDO_HINT_BLOCK" | tee -a /etc/bash.bashrc >/dev/null - echo "Sudo-Hinweis zur bash.bashrc hinzugefügt." -else - echo "Sudo-Hinweis ist bereits in bash.bashrc vorhanden." + echo "ℹ️ sbin wurde zum PATH für sudo-Nutzer hinzugefügt." fi -XDG_BLOCK='# /etc/profile.d/desktop_session_xdg_dirs.sh - Prepend a $DESKTOP_SESSION-named directory to $XDG_CONFIG_DIRS and $XDG_DATA_DIRS +# sudo-Hinweis +read -p "❓ Soll ein sudo-Hinweis hinzugefügt werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + cat << 'EOF' > /etc/profile.d/sudo_hint.sh +if [ ! -e "$HOME/.sudo_as_admin_successful" ] && [ ! -e "$HOME/.hushlogin" ] ; then + case " $(groups) " in *\ admin\ *|*\ sudo\ *) + if [ -x /usr/bin/sudo ]; then + echo 'To run a command as administrator (user "root"), use "sudo ".' + echo 'See "man sudo_root" for details.' + fi + esac +fi +EOF + + echo "ℹ️ sudo-Hinweis wurde hinzugefügt!" +fi + +# sudo-Hinweis +read -p "❓ Sollen die XDG-Data-Dirs gesetzt werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + cat << 'EOF' > /etc/profile.d/xdg_dirs_desktop_session.sh +# /etc/profile.d/desktop_session_xdg_dirs.sh - Prepend a $DESKTOP_SESSION-named directory to $XDG_CONFIG_DIRS and $XDG_DATA_DIRS DEFAULT_XDG_CONFIG_DIRS="/etc/xdg" DEFAULT_XDG_DATA_DIRS="/usr/local/share/:/usr/share/" @@ -70,77 +83,20 @@ if [ -n "$DESKTOP_SESSION" ]; then export XDG_DATA_DIRS fi fi -' +EOF -echo "$XDG_BLOCK" >/etc/profile.d/xdg_dirs_desktop_session.sh - -echo "Passwort für sudo-Nutzer setzen..." -passwd root - -# WLAN-Verbindung. - -# Frage, ob eine WLAN-Verbindung aufgebaut werden soll -read -p "Möchten Sie eine WLAN-Verbindung aufbauen? (ja/nein): " RESPONSE -if [[ "$RESPONSE" == "ja" ]]; then - # Schritt 1: WLAN-Adapter automatisch ermitteln - echo "Ermittle verfügbare WLAN-Adapter..." - WLAN_ADAPTERS=$(iw dev | grep Interface | awk '{print $2}') - - if [[ -z "$WLAN_ADAPTERS" ]]; then - echo "Es wurden keine WLAN-Adapter gefunden. Bitte stellen Sie sicher, dass ein WLAN-Adapter verfügbar ist." - exit 1 - fi - - # Wenn nur ein Adapter gefunden wurde, automatisch auswählen - if [[ $(echo "$WLAN_ADAPTERS" | wc -l) -eq 1 ]]; then - WLAN_INTERFACE="$WLAN_ADAPTERS" - echo "Gefundener WLAN-Adapter: $WLAN_INTERFACE" - else - # Wenn mehrere Adapter gefunden wurden, den Benutzer fragen - echo "Mehrere WLAN-Adapter gefunden:" - echo "$WLAN_ADAPTERS" - read -p "Bitte geben Sie den gewünschten WLAN-Adapter ein: " WLAN_INTERFACE - fi - - # Schritt 2: Eingabe der SSID und des Passworts - read -p "Bitte geben Sie die SSID des Routers ein: " ROUTER_SSID - read -sp "Bitte geben Sie das Passwort für die SSID ein: " ROUTER_PASSWORD - echo - - # Schritt 3: Erstellen der WPA-Konfigurationsdatei - CONFIG_FILE="/root/wpa.conf" - echo "Erstelle WPA-Konfigurationsdatei unter $CONFIG_FILE..." - wpa_passphrase "$ROUTER_SSID" "$ROUTER_PASSWORD" > "$CONFIG_FILE" - - # Hinweis für Sonderzeichen in der SSID - echo "Hinweis: Wenn Ihre SSID Sonderzeichen enthält, bearbeiten Sie die Datei $CONFIG_FILE manuell." - - # Schritt 4: Verbindung mit wpa_supplicant aufbauen - echo "Starte wpa_supplicant..." - wpa_supplicant -B -i "$WLAN_INTERFACE" -c "$CONFIG_FILE" - - # Schritt 5: Überprüfen, ob die Verbindung hergestellt wurde - echo "Überprüfe die Verbindung..." - sleep 5 # Wartezeit, um die Verbindung aufzubauen - IW_OUTPUT=$(iw dev "$WLAN_INTERFACE" link) - - if echo "$IW_OUTPUT" | grep -q "Connected to"; then - echo "Verbindung erfolgreich hergestellt!" - echo "$IW_OUTPUT" - else - echo "Verbindung konnte nicht hergestellt werden. Bitte überprüfen Sie die Konfiguration." - exit 1 - fi - - # Schritt 6: IP-Adresse und Netzwerkkonfiguration über DHCP abrufen - echo "Hole IP-Adresse und Netzwerkkonfiguration über DHCP..." - dhcpcd - - echo "Die WPA-verschlüsselte Verbindung wurde erfolgreich hergestellt!" -else - echo "Abbruch. Es wird keine WLAN-Verbindung aufgebaut." + echo "ℹ️ XDG-Data-Dirs wurden gesetzt!" fi -echo "Fertig! Das System wird neugestartet." +chmod +x /etc/profile.d/* -reboot +# Passwort root +read -p "❓ Soll ein Passwort für root gesetzt werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + passwd root +fi + +echo "✅ Abgeschlossen. Zum Anwenden der Änderungen bitte neu einloggen!" diff --git a/10_Programs.sh b/10_Programs.sh index 6fb1a30..d39ff1c 100755 --- a/10_Programs.sh +++ b/10_Programs.sh @@ -4,7 +4,7 @@ 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." + 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 @@ -33,7 +33,7 @@ for APP in "${!FLATPAK_APPS[@]}"; do done # Dynamischen Vorlagen-Ordner ermitteln -TEMPLATE_DIR=$(xdg-user-dir TEMPLATES 2>/dev/null || echo "$HOME/Vorlagen") +TEMPLATE_DIR=$(xdg-user-dir TEMPLATES 2 >/dev/null || echo "$HOME/Vorlagen") mkdir -p "$TEMPLATE_DIR" # Prüfen, ob LibreOffice als Flatpak installiert ist @@ -237,9 +237,57 @@ flatpak install flathub org.gnome.FileRoller -y # Obfuscate flatpak install flathub com.belmoussaoui.Obfuscate -y -echo "🔄 Installiere VeraCrypt..." -sudo add-apt-repository ppa:unit193/encryption -y -sudo apt update -sudo apt install -y veracrypt +# Flatseal +flatpak install com.github.tchx84.Flatseal -y + +# VeraCrypt installieren +read -p "❓ Soll VeraCrypt installiert werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" == "j" ]] || [[ "$anwser" == "y" ]]; then + echo "🔄 Installiere VeraCrypt..." + sudo add-apt-repository ppa:unit193/encryption -y + sudo apt update + sudo apt install -y veracrypt +fi + +# Webmin installieren +read -p "❓ Soll webmin installiert werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" == "j" ]] || [[ "$anwser" == "y" ]]; then + curl -o /tmp/webmin-setup-repo.sh https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repo.sh + sudo sh /tmp/webmin-setup-repo.sh + sudo apt install webmin -y --install-recommends +fi + +# Waydroid installieren +read -p "❓ Soll Waydroid installiert werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" == "j" ]] || [[ "$anwser" == "y" ]]; then + sudo apt install curl ca-certificates -y + curl -s https://repo.waydro.id | sudo bash -s -- -s noble + sudo apt install waydroid -y + + sudo ufw allow 53 + sudo ufw allow 67 + sudo ufw default allow FORWARD + + sudo systemctl enable --now waydroid-container + + sudo cat << 'EOF' | sudo tee /etc/profile.d/hide_waydroid_apps.sh > /dev/null +for app in ~/.local/share/applications/waydroid.*.desktop; do + grep -q NoDisplay $app || sed '/^Icon=/a NoDisplay=true' -i $app +done +EOF + + sudo chmod +x /etc/profile.d/* + + echo "⚠️ Beachte, dass in Portmaster unter 'Network Noise' die Ports 53 und 67 komplett freigegeben sind!" +fi echo "✅ Alle Programme wurden erfolgreich installiert!" diff --git a/2_AdJoin.sh b/2_AdJoin.sh index 4bd5738..c94f0e8 100755 --- a/2_AdJoin.sh +++ b/2_AdJoin.sh @@ -2,25 +2,30 @@ # Root-Rechte prüfen if [ "$(id -u)" -eq 0 ]; then - echo "Bitte nicht als Root ausführen! Das Skript nutzt sudo, falls nötig." + echo "❌ Bitte nicht als root ausführen! Das Skript nutzt sudo, falls nötig." exit 1 fi # Verzeichnis setzen -REPO_DIR="$HOME/Linux-Active-Directory-join-script" +REPO_DIR="/tmp/Linux-Active-Directory-join-script" # Repository klonen, falls es noch nicht existiert if [ -d "$REPO_DIR" ]; then - echo "Repository existiert bereits. Überspringe das Klonen." + echo "ℹ️ Repository existiert bereits. Überspringe das Klonen." else - echo "Klonen des Repositories..." + echo "ℹ️ Klonen des Repositories..." git clone https://gitea.creative-dragonslayer.de/DragonSlayer_14/Linux-Active-Directory-join-script.git "$REPO_DIR" fi # In das Verzeichnis wechseln -cd "$REPO_DIR" || { echo "Fehler: Konnte nicht in das Verzeichnis wechseln!"; exit 1; } +cd "$REPO_DIR" || { echo "❌ Fehler: Konnte nicht in das Verzeichnis wechseln!"; exit 1; } # AD-Skript ausführen -echo "Starte Active Directory Verbindung..." -sudo bash ADconnection.sh - +if [ -f "ADconnection.sh" ]; then + chmod +x ADconnection.sh + echo "ℹ️ Starte Active Directory setup mit: ./ADconnection.sh" + echo "⚠️ Achtung! Das Skript erkennt Tuxedo nicht. Passe es an, dass der ADJoin von Ubuntu ausgeführt wird!" +else + echo "❌ Fehler: ADconnection.sh nicht gefunden!" + exit 1 +fi diff --git a/3_HyprlandInstall.sh b/3_HyprlandInstall.sh index 5a93dc7..d428313 100755 --- a/3_HyprlandInstall.sh +++ b/3_HyprlandInstall.sh @@ -2,8 +2,13 @@ # 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." + echo "❌ Bitte nicht als root ausführen! Das Skript nutzt sudo, falls nötig." exit 1 fi +DIR = "/tmp/setup-hyprland" + +mkdir -p $DIR +cd $DIR + sh <(curl -L https://raw.githubusercontent.com/JaKooLit/Ubuntu-Hyprland/24.04/auto-install.sh) diff --git a/4_ZshRegister.sh b/4_ZshRegister.sh index 8542ba3..59b57fb 100755 --- a/4_ZshRegister.sh +++ b/4_ZshRegister.sh @@ -2,87 +2,93 @@ # Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird if [[ $EUID -ne 0 ]]; then - echo "Dieses Skript muss als root ausgeführt werden." + echo "❌ Bitte als root ausführen!" exit 1 fi # Tatsächlichen Benutzer ermitteln (nicht root) if [[ -z "$SUDO_USER" || "$SUDO_USER" == "root" ]]; then - echo "Fehler: Das Skript muss mit 'sudo' von einem normalen Benutzer ausgeführt werden." + echo "❌ Fehler: Das Skript muss mit 'sudo' von einem normalen Benutzer ausgeführt werden." exit 1 fi USER_NAME="$SUDO_USER" USER_HOME=$(eval echo ~$USER_NAME) -# Eintrag aus getent passwd holen -USER_ENTRY=$(getent passwd "$USER_NAME") +read -p "❓ Soll die shell für $USER_NAME auf ZSH gesetzt werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer -# Backup der passwd Datei -cp /etc/passwd /etc/passwd.bak +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + # Eintrag aus getent passwd holen + USER_ENTRY=$(getent passwd "$USER_NAME") -if grep -q "^$USER_NAME:" /etc/passwd; then - # Existierenden Eintrag aktualisieren - sed -i "/^$USER_NAME:/s|[^:]*$|/bin/zsh|" /etc/passwd - echo "Shell für $USER_NAME wurde auf zsh aktualisiert." -else - # Neuen Eintrag hinzufügen - UPDATED_ENTRY=$(echo "$USER_ENTRY" | awk -F: -v OFS=: '{ $NF="/bin/zsh"; print }') - echo "$UPDATED_ENTRY" >>/etc/passwd - echo "Eintrag für $USER_NAME wurde in /etc/passwd geschrieben mit zsh als Shell." + # Backup der passwd Datei + cp /etc/passwd /etc/passwd.bak + + if grep -q "^$USER_NAME:" /etc/passwd; then + # Existierenden Eintrag aktualisieren + sed -i "/^$USER_NAME:/s|[^:]*$|/bin/zsh|" /etc/passwd + echo "ℹ️ Shell für $USER_NAME wurde auf zsh aktualisiert." + else + # Neuen Eintrag hinzufügen + UPDATED_ENTRY=$(echo "$USER_ENTRY" | awk -F: -v OFS=: '{ $NF="/bin/zsh"; print }') + echo "$UPDATED_ENTRY" >>/etc/passwd + echo "ℹ️ Eintrag für $USER_NAME wurde in /etc/passwd geschrieben mit zsh als Shell." + fi + + # Repository klonen + REPO_DIR="$USER_HOME/Ubuntu-Hyprland" + sudo -u "$USER_NAME" git clone -b 24.04 https://github.com/JaKooLit/Ubuntu-Hyprland.git "$REPO_DIR" + + # Ordner nach ~/.oh-my-zsh/themes kopieren + THEME_SRC="$REPO_DIR/assets/add_zsh_theme" + THEME_DEST="$USER_HOME/.oh-my-zsh/themes" + + if [[ -d "$THEME_SRC" ]]; then + sudo -u "$USER_NAME" mkdir -p "$THEME_DEST" + sudo -u "$USER_NAME" cp -r "$THEME_SRC"/* "$THEME_DEST/" + echo "🎨 ZSH-Theme wurde nach $THEME_DEST kopiert." + else + echo "⚠️ Fehler: Theme-Ordner wurde nicht gefunden!" + fi + + # Repository löschen + rm -rf "$REPO_DIR" + + # /etc/profile in /etc/zsh/zprofile einfügen, falls nicht bereits vorhanden + if ! grep -q "source /etc/profile" /etc/zsh/zprofile; then + echo "source /etc/profile" >>/etc/zsh/zprofile + echo "🔧 'source /etc/profile' wurde in /etc/zsh/zprofile hinzugefügt." + else + echo "ℹ️ 'source /etc/profile' ist bereits in /etc/zsh/zprofile vorhanden." + fi + + # Den tatsächlichen Benutzer ermitteln, der das Skript mit sudo ausführt + if [[ -n "$SUDO_USER" ]]; then + USER_HOME=$(eval echo "~$SUDO_USER") + else + USER_HOME="$HOME" + fi + + # Pfad zur .zshrc-Datei des tatsächlichen Benutzers + ZSHRC_FILE="$USER_HOME/.zshrc" + + # Sicherstellen, dass die Datei existiert + if [[ -f "$ZSHRC_FILE" ]]; then + # Zeilen mit "fastfetch" am Anfang auskommentieren + sed -i '/^fastfetch/ s/^/#/' "$ZSHRC_FILE" + + # Prüfen, ob "neofetch" bereits in der Datei steht + if ! grep -q "^neofetch$" "$ZSHRC_FILE"; then + # Zwei Zeilenumbrüche vor und ein Zeilenumbruch nach "neofetch" hinzufügen + echo -e "\n\nneofetch\n" >> "$ZSHRC_FILE" + fi + + echo "Die Änderungen wurden erfolgreich vorgenommen." + else + echo "Die Datei $ZSHRC_FILE wurde nicht gefunden." + fi fi -# Repository klonen -REPO_DIR="$USER_HOME/Ubuntu-Hyprland" -sudo -u "$USER_NAME" git clone -b 24.04 https://github.com/JaKooLit/Ubuntu-Hyprland.git "$REPO_DIR" - -# Ordner nach ~/.oh-my-zsh/themes kopieren -THEME_SRC="$REPO_DIR/assets/add_zsh_theme" -THEME_DEST="$USER_HOME/.oh-my-zsh/themes" - -if [[ -d "$THEME_SRC" ]]; then - sudo -u "$USER_NAME" mkdir -p "$THEME_DEST" - sudo -u "$USER_NAME" cp -r "$THEME_SRC"/* "$THEME_DEST/" - echo "🎨 ZSH-Theme wurde nach $THEME_DEST kopiert." -else - echo "⚠️ Fehler: Theme-Ordner wurde nicht gefunden!" -fi - -# Repository löschen -rm -rf "$REPO_DIR" - -# /etc/profile in /etc/zsh/zprofile einfügen, falls nicht bereits vorhanden -if ! grep -q "source /etc/profile" /etc/zsh/zprofile; then - echo "source /etc/profile" >>/etc/zsh/zprofile - echo "🔧 'source /etc/profile' wurde in /etc/zsh/zprofile hinzugefügt." -else - echo "ℹ️ 'source /etc/profile' ist bereits in /etc/zsh/zprofile vorhanden." -fi - -# Den tatsächlichen Benutzer ermitteln, der das Skript mit sudo ausführt -if [[ -n "$SUDO_USER" ]]; then - USER_HOME=$(eval echo "~$SUDO_USER") -else - USER_HOME="$HOME" -fi - -# Pfad zur .zshrc-Datei des tatsächlichen Benutzers -ZSHRC_FILE="$USER_HOME/.zshrc" - -# Sicherstellen, dass die Datei existiert -if [[ -f "$ZSHRC_FILE" ]]; then - # Zeilen mit "fastfetch" am Anfang auskommentieren - sed -i '/^fastfetch/ s/^/#/' "$ZSHRC_FILE" - - # Prüfen, ob "neofetch" bereits in der Datei steht - if ! grep -q "^neofetch$" "$ZSHRC_FILE"; then - # Zwei Zeilenumbrüche vor und ein Zeilenumbruch nach "neofetch" hinzufügen - echo -e "\n\nneofetch\n" >> "$ZSHRC_FILE" - fi - - echo "Die Änderungen wurden erfolgreich vorgenommen." -else - echo "Die Datei $ZSHRC_FILE wurde nicht gefunden." -fi - -echo "✅ Installation abgeschlossen!" +echo "✅ Shell wurde erfolgreich auf ZSH gesetzt! Zum Anwenden, neue Terminal-Sitzung öffnen." diff --git a/5_DomainLogin.sh b/5_DomainLogin.sh index 91d9751..6dc66df 100755 --- a/5_DomainLogin.sh +++ b/5_DomainLogin.sh @@ -2,46 +2,52 @@ # Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird if [[ $EUID -ne 0 ]]; then - echo "Dieses Skript muss als root ausgeführt werden." + echo "❌ Dieses Skript muss als root ausgeführt werden." exit 1 fi -# SDDM-Konfigurationsdatei in sddm.conf.d erstellen -SDDM_CONF_DIR="/etc/sddm.conf.d" -SDDM_CUSTOM_CONF="$SDDM_CONF_DIR/custom.conf" -mkdir -p "$SDDM_CONF_DIR" +read -p "❓ Soll SDDM so konfiguriert werden, dass Domänenbenutzer angezeigt werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer -# Bestehende Konfiguration sichern und anpassen -if [[ -f "$SDDM_CUSTOM_CONF" ]]; then - sed -i '/MaximumUid/d' "$SDDM_CUSTOM_CONF" - sed -i '/MinimumUid/d' "$SDDM_CUSTOM_CONF" - sed -i '/HideShells/d' "$SDDM_CUSTOM_CONF" - echo "MaximumUid=9999999999" >>"$SDDM_CUSTOM_CONF" - echo "MinimumUid=1000" >>"$SDDM_CUSTOM_CONF" - echo "HideShells=/sbin/nologin,/bin/false,/usr/sbin/nologin" >>"$SDDM_CUSTOM_CONF" -else - cat <"$SDDM_CUSTOM_CONF" +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + # SDDM-Konfigurationsdatei in sddm.conf.d erstellen + SDDM_CONF_DIR="/etc/sddm.conf.d" + SDDM_CUSTOM_CONF="$SDDM_CONF_DIR/ad_login.conf" + mkdir -p "$SDDM_CONF_DIR" + + # Bestehende Konfiguration sichern und anpassen + if [[ -f "$SDDM_CUSTOM_CONF" ]]; then + sed -i '/MaximumUid/d' "$SDDM_CUSTOM_CONF" + sed -i '/MinimumUid/d' "$SDDM_CUSTOM_CONF" + sed -i '/HideShells/d' "$SDDM_CUSTOM_CONF" + echo "MaximumUid=99999999999999999999" >>"$SDDM_CUSTOM_CONF" + echo "MinimumUid=1000" >>"$SDDM_CUSTOM_CONF" + echo "HideShells=/sbin/nologin,/bin/false,/usr/sbin/nologin" >>"$SDDM_CUSTOM_CONF" + else + cat <"$SDDM_CUSTOM_CONF" [Users] -MaximumUid=9999999999 +MaximumUid=999999999999999999 MinimumUid=1000 HideShells=/sbin/nologin,/bin/false,/usr/sbin/nologin EOF -fi - -# SSSD-Konfiguration anpassen, falls die Datei existiert -SSSD_CONF="/etc/sssd/sssd.conf" -if [[ -f "$SSSD_CONF" ]]; then - if grep -q "^enumerate" "$SSSD_CONF"; then - sed -i 's/^enumerate.*/enumerate = false/' "$SSSD_CONF" - else - echo "enumerate = false" >>"$SSSD_CONF" fi - # Berechtigungen für SSSD-Konfigurationsdatei setzen - chmod 600 "$SSSD_CONF" + + # SSSD-Konfiguration anpassen, falls die Datei existiert + SSSD_CONF="/etc/sssd/sssd.conf" + if [[ -f "$SSSD_CONF" ]]; then + if grep -q "^enumerate" "$SSSD_CONF"; then + sed -i 's/^enumerate.*/enumerate = false/' "$SSSD_CONF" + else + echo "enumerate = false" >>"$SSSD_CONF" + fi + # Berechtigungen für SSSD-Konfigurationsdatei setzen + chmod 600 "$SSSD_CONF" + fi + + # SSSD und SDDM neu starten + systemctl restart sssd + systemctl restart sddm fi -# SSSD und SDDM neu starten -systemctl restart sssd -systemctl restart sddm - -echo "SDDM wurde so konfiguriert, dass lokale und bereits angemeldete Domänenbenutzer angezeigt werden." +echo "✅ Konfiguration von SDDM und sssd abgeschlossen!" \ No newline at end of file diff --git a/6_Polish.sh b/6_Polish.sh index 930d09b..3c36091 100755 --- a/6_Polish.sh +++ b/6_Polish.sh @@ -2,9 +2,9 @@ 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." +# Root-Rechte prüfen +if [ "$(id -u)" -eq 0 ]; then + echo "❌ Bitte nicht als root ausführen! Das Skript nutzt sudo, falls nötig." exit 1 fi @@ -12,91 +12,126 @@ fi echo "🔄 System wird aktualisiert..." sudo apt update && sudo apt upgrade -y && sudo apt autoremove -y -echo "🔄 Entferne Pakete..." +# Unnötige Pakete entfernen +read -p "❓ Sollen unnötige KDE-Pakete entfernt werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer -sudo apt remove -y firefox kmahjongg kmines kpat ksudoku nextcloud-desktop skanlite thunderbird virtualbox - -echo "🔄 Installiere Pakete..." - -sudo apt update && sudo apt install -y flatpak neovim ufw rfkill xdg-user-dirs rsync maliit-keyboard ffmpeg printer-driver-* clamav clamav-freshclam clamav-docs clamav-daemon bleachbit network-manager-gnome -sudo ufw enable - -# Flatpak Flathub-Repo hinzufügen -sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo - -# Portmaster installieren -wget -O /tmp/portmaster-installer.deb https://updates.safing.io/latest/linux_amd64/packages/portmaster-installer.deb -sudo apt install -y /tmp/portmaster-installer.deb -rm /tmp/portmaster-installer.deb - -# Waterfox-Installation -echo "🌍 Waterfox wird installiert..." -sudo install -d -m 0755 /etc/apt/keyrings -echo 'deb http://download.opensuse.org/repositories/home:/hawkeye116477:/waterfox/xUbuntu_24.04/ /' | sudo tee /etc/apt/sources.list.d/home:hawkeye116477:waterfox.list -curl -fsSL https://download.opensuse.org/repositories/home:hawkeye116477:waterfox/xUbuntu_24.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_hawkeye116477_waterfox.gpg > /dev/null - -sudo apt update && sudo apt install -y waterfox - -# Waterfox als Standardbrowser setzen -echo "🌍 Setze Waterfox als Standardbrowser..." -if command -v xdg-settings >/dev/null 2>&1; then - xdg-settings set default-web-browser waterfox.desktop - echo "✅ Waterfox wurde als Standardbrowser gesetzt." - - # Standardanwendungen für spezifische Dateitypen setzen - xdg-mime default waterfox.desktop text/html - xdg-mime default waterfox.desktop application/xhtml+xml - xdg-mime default waterfox.desktop x-scheme-handler/http - xdg-mime default waterfox.desktop x-scheme-handler/https -else - echo "❌ 'xdg-settings' ist nicht verfügbar. Bitte manuell den Standardbrowser setzen." +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + echo "🔄 Entferne Pakete..." + sudo apt remove -y kmahjongg kmines kpat ksudoku nextcloud-desktop skanlite thunderbird virtualbox fi -# Hyprland User Bindings -HYPR_CONFIG_DIR="$HOME/.config/hypr/UserConfigs" -mkdir -p "$HYPR_CONFIG_DIR" +echo "ℹ️ Firewall (ufw) wird installiert..." +sudo apt install -y ufw +sudo ufw -# 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" -) +echo "ℹ️ Virenschutz (clamav) wird installiert..." +sudo apt install -y enable clamav clamav-freshclam clamav-docs clamav-daemon -for BIND in "${!KEYBINDS[@]}"; do - FULL_BIND="$BIND # ${KEYBINDS[$BIND]}" - if ! grep -Fxq "$FULL_BIND" "$HYPR_CONFIG_DIR/UserKeybinds.conf" 2>/dev/null; then - echo "$FULL_BIND" >>"$HYPR_CONFIG_DIR/UserKeybinds.conf" - echo "✅ Keybind hinzugefügt: ${KEYBINDS[$BIND]}" +echo "ℹ️ Installiere Flatpak..." +sudo apt install -y flatpak +sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo + +echo "🔄 Installiere nützliche Pakete..." +sudo apt install -y neovim rfkill xdg-user-dirs rsync maliit-keyboard ffmpeg printer-driver-* bleachbit network-manager-gnome + +# Portmaster installieren +read -p "❓ Soll Portmaster installiert werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + wget -O /tmp/portmaster-installer.deb https://updates.safing.io/latest/linux_amd64/packages/portmaster-installer.deb + sudo apt install -y /tmp/portmaster-installer.deb + rm /tmp/portmaster-installer.deb + + echo "✅ Portmaster wurde installiert!" +fi + +# Waterfox-Installation +read -p "❓ Soll Firefox durch Waterfox ersetzt werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + echo "🌍 Waterfox wird installiert..." + sudo apt remove -y firefox + sudo install -d -m 0755 /etc/apt/keyrings + echo 'deb http://download.opensuse.org/repositories/home:/hawkeye116477:/waterfox/xUbuntu_24.04/ /' | sudo tee /etc/apt/sources.list.d/home:hawkeye116477:waterfox.list + curl -fsSL https://download.opensuse.org/repositories/home:hawkeye116477:waterfox/xUbuntu_24.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_hawkeye116477_waterfox.gpg >/dev/null + + sudo apt update && sudo apt install -y waterfox + echo "✅ Waterfox wurde installiert!" + + # Waterfox als Standardbrowser setzen + echo "🌍 Setze Waterfox als Standardbrowser..." + if command -v xdg-settings >/dev/null 2 >&1; then + xdg-settings set default-web-browser waterfox.desktop + echo "✅ Waterfox wurde als Standardbrowser gesetzt." + + # Standardanwendungen für spezifische Dateitypen setzen + xdg-mime default waterfox.desktop text/html + xdg-mime default waterfox.desktop application/xhtml+xml + xdg-mime default waterfox.desktop x-scheme-handler/http + xdg-mime default waterfox.desktop x-scheme-handler/https else - echo "ℹ️ Keybind existiert bereits: ${KEYBINDS[$BIND]}" + echo "❌ 'xdg-settings' ist nicht verfügbar. Bitte manuell den Standardbrowser setzen." fi -done +fi -echo "🔄 Füge Autostart-Apps hinzu..." -# Pfad zur Konfigurationsdatei -CONFIG_FILE="$HOME/.config/hypr/UserConfigs/Startup_Apps.conf" +# Hyprland Anpassungen +read -p "❓ Sollen Anpassungen an den Hyprland-Configs vorgenomen werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer -# Zeile, die hinzugefügt werden soll -LINE_TO_ADD="exec-once = tuxedo-control-center --tray" +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + # Hyprland User Bindings + HYPR_CONFIG_DIR="$HOME/.config/hypr/UserConfigs" + mkdir -p "$HYPR_CONFIG_DIR" -# Überprüfen, ob die Datei existiert -if [ -f "$CONFIG_FILE" ]; then - # Überprüfen, ob die Zeile bereits existiert - if ! grep -Fxq "$LINE_TO_ADD" "$CONFIG_FILE"; then - # Zeile hinzufügen - echo "$LINE_TO_ADD" >> "$CONFIG_FILE" - echo "Zeile wurde erfolgreich hinzugefügt." + # 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 + FULL_BIND="$BIND # ${KEYBINDS[$BIND]}" + if ! grep -Fxq "$FULL_BIND" "$HYPR_CONFIG_DIR/UserKeybinds.conf" 2 >/dev/null; then + echo "$FULL_BIND" >>"$HYPR_CONFIG_DIR/UserKeybinds.conf" + echo "✅ Keybind hinzugefügt: ${KEYBINDS[$BIND]}" + else + echo "ℹ️ Keybind existiert bereits: ${KEYBINDS[$BIND]}" + fi + done + + echo "🔄 Füge Autostart-Apps hinzu..." + # Pfad zur Konfigurationsdatei + CONFIG_FILE="$HOME/.config/hypr/UserConfigs/Startup_Apps.conf" + + # Zeile, die hinzugefügt werden soll + LINE_TO_ADD="exec-once = tuxedo-control-center --tray" + + # Überprüfen, ob die Datei existiert + if [ -f "$CONFIG_FILE" ]; then + # Überprüfen, ob die Zeile bereits existiert + if ! grep -Fxq "$LINE_TO_ADD" "$CONFIG_FILE"; then + # Zeile hinzufügen + echo "$LINE_TO_ADD" >>"$CONFIG_FILE" + echo "Zeile wurde erfolgreich hinzugefügt." + else + echo "Die Zeile existiert bereits in der Datei." + fi else - echo "Die Zeile existiert bereits in der Datei." + echo "Die Datei $CONFIG_FILE existiert nicht." fi -else - echo "Die Datei $CONFIG_FILE existiert nicht." fi # Standardvorlagen ablegen echo "📂 Standardvorlagen werden im Vorlagen-Ordner erstellt..." -TEMPLATES_DIR=$(xdg-user-dir TEMPLATES 2>/dev/null || echo "$HOME/Vorlagen") +TEMPLATES_DIR=$(xdg-user-dir TEMPLATES 2 >/dev/null || echo "$HOME/Vorlagen") mkdir -p "$TEMPLATES_DIR" # Vorlagenliste @@ -124,66 +159,72 @@ TARGET_DIR="$HOME/.config/hypr/UserScripts" CONFIG_DIR="$HOME/.config/hypr/UserConfigs" USER_KEYBINDS_FILE="$CONFIG_DIR/UserKeybinds.conf" # Definition an der richtigen Stelle -# Bereinige fälschlicherweise kopierte Dateien -echo "📂 Überprüfe und bereinige Dateien im Verzeichnis $TARGET_DIR..." -if [[ -d "$TARGET_DIR" ]]; then +read -p "❓ Sollen Anpassungen an den Users-Dirs in den Hyprland-Skripten vorgenommen werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + + # Bereinige fälschlicherweise kopierte Dateien + echo "📂 Überprüfe und bereinige Dateien im Verzeichnis $TARGET_DIR..." + if [[ -d "$TARGET_DIR" ]]; then + for FILE in "$TARGET_DIR"/*; do + if [[ -f "$FILE" ]]; then + BASENAME=$(basename "$FILE") + SOURCE_FILE="$SOURCE_DIR/$BASENAME" + + # Prüfen, ob die Datei im Quellverzeichnis existiert und angepasst werden musste + if [[ -f "$SOURCE_FILE" ]] && ! grep -qE '\$HOME/Desktop|\$HOME/Downloads|\$HOME/Documents|\$HOME/Pictures|\$HOME/Music|\$HOME/Videos' "$SOURCE_FILE"; then + echo "🗑️ Entferne fälschlicherweise kopierte Datei: $BASENAME" + rm "$FILE" + + # Rückgängig machen der falschen Verweise in UserKeybinds.conf + if [[ -f "$USER_KEYBINDS_FILE" ]]; then + echo "🔄 Setze falschen Verweis für $BASENAME in $USER_KEYBINDS_FILE zurück..." + sed -i "s|\$UserScripts/$BASENAME|\$scriptsDir/$BASENAME|g" "$USER_KEYBINDS_FILE" + echo "✅ Verweis für $BASENAME zurückgesetzt." + fi + else + echo "✅ Datei $BASENAME ist korrekt und bleibt erhalten." + fi + fi + done + else + echo "⚠️ Zielverzeichnis $TARGET_DIR existiert nicht. Keine Bereinigung erforderlich." + fi + + # Kopiere nur relevante Dateien und behalte die Verzeichnisstruktur bei + echo "📂 Verarbeite Dateien im Verzeichnis $SOURCE_DIR..." + mkdir -p "$TARGET_DIR" + COPIED_FILES=() # Array, um die tatsächlich kopierten Dateien zu speichern + + if [[ -d "$SOURCE_DIR" ]]; then + find "$SOURCE_DIR" -type f | while read -r FILE; do + RELATIVE_PATH="${FILE#$SOURCE_DIR/}" # Relativer Pfad zur Datei + TARGET_PATH="$TARGET_DIR/$RELATIVE_PATH" + + # Prüfen, ob die Datei angepasst werden muss + if grep -qE '\$HOME/Desktop|\$HOME/Downloads|\$HOME/Documents|\$HOME/Pictures|\$HOME/Music|\$HOME/Videos|/home/[a-zA-Z0-9._-]*/Desktop|/home/[a-zA-Z0-9._-]*/Downloads|/home/[a-zA-Z0-9._-]*/Documents|/home/[a-zA-Z0-9._-]*/Pictures|/home/[a-zA-Z0-9._-]*/Music|/home/[a-zA-Z0-9._-]*/Videos|\$\(xdg-user-dir\)/Desktop|\$\(xdg-user-dir\)/Downloads|\$\(xdg-user-dir\)/Documents|\$\(xdg-user-dir\)/Pictures|\$\(xdg-user-dir\)/Music|\$\(xdg-user-dir\)/Videos' "$FILE"; then + echo "🔄 Kopiere Datei zur Anpassung: $RELATIVE_PATH" + mkdir -p "$(dirname "$TARGET_PATH")" # Zielverzeichnis erstellen + cp "$FILE" "$TARGET_PATH" + COPIED_FILES+=("$RELATIVE_PATH") # Relativen Pfad speichern + else + echo "ℹ️ Datei $RELATIVE_PATH benötigt keine Anpassung. Überspringe Kopieren." + fi + done + else + echo "⚠️ Quellverzeichnis $SOURCE_DIR existiert nicht. Überspringe Verarbeitung." + fi + + # Ersetzungen in allen Dateien im Verzeichnis UserScripts vornehmen + echo "🔄 Ersetze absolute Pfade, XDG-Verzeichnisse und Platzhalter in allen Dateien im Verzeichnis $TARGET_DIR..." for FILE in "$TARGET_DIR"/*; do if [[ -f "$FILE" ]]; then - BASENAME=$(basename "$FILE") - SOURCE_FILE="$SOURCE_DIR/$BASENAME" + echo "Verarbeite Datei: $FILE" - # Prüfen, ob die Datei im Quellverzeichnis existiert und angepasst werden musste - if [[ -f "$SOURCE_FILE" ]] && ! grep -qE '\$HOME/Desktop|\$HOME/Downloads|\$HOME/Documents|\$HOME/Pictures|\$HOME/Music|\$HOME/Videos' "$SOURCE_FILE"; then - echo "🗑️ Entferne fälschlicherweise kopierte Datei: $BASENAME" - rm "$FILE" - - # Rückgängig machen der falschen Verweise in UserKeybinds.conf - if [[ -f "$USER_KEYBINDS_FILE" ]]; then - echo "🔄 Setze falschen Verweis für $BASENAME in $USER_KEYBINDS_FILE zurück..." - sed -i "s|\$UserScripts/$BASENAME|\$scriptsDir/$BASENAME|g" "$USER_KEYBINDS_FILE" - echo "✅ Verweis für $BASENAME zurückgesetzt." - fi - else - echo "✅ Datei $BASENAME ist korrekt und bleibt erhalten." - fi - fi - done -else - echo "⚠️ Zielverzeichnis $TARGET_DIR existiert nicht. Keine Bereinigung erforderlich." -fi - -# Kopiere nur relevante Dateien und behalte die Verzeichnisstruktur bei -echo "📂 Verarbeite Dateien im Verzeichnis $SOURCE_DIR..." -mkdir -p "$TARGET_DIR" -COPIED_FILES=() # Array, um die tatsächlich kopierten Dateien zu speichern - -if [[ -d "$SOURCE_DIR" ]]; then - find "$SOURCE_DIR" -type f | while read -r FILE; do - RELATIVE_PATH="${FILE#$SOURCE_DIR/}" # Relativer Pfad zur Datei - TARGET_PATH="$TARGET_DIR/$RELATIVE_PATH" - - # Prüfen, ob die Datei angepasst werden muss - if grep -qE '\$HOME/Desktop|\$HOME/Downloads|\$HOME/Documents|\$HOME/Pictures|\$HOME/Music|\$HOME/Videos|/home/[a-zA-Z0-9._-]*/Desktop|/home/[a-zA-Z0-9._-]*/Downloads|/home/[a-zA-Z0-9._-]*/Documents|/home/[a-zA-Z0-9._-]*/Pictures|/home/[a-zA-Z0-9._-]*/Music|/home/[a-zA-Z0-9._-]*/Videos|\$\(xdg-user-dir\)/Desktop|\$\(xdg-user-dir\)/Downloads|\$\(xdg-user-dir\)/Documents|\$\(xdg-user-dir\)/Pictures|\$\(xdg-user-dir\)/Music|\$\(xdg-user-dir\)/Videos' "$FILE"; then - echo "🔄 Kopiere Datei zur Anpassung: $RELATIVE_PATH" - mkdir -p "$(dirname "$TARGET_PATH")" # Zielverzeichnis erstellen - cp "$FILE" "$TARGET_PATH" - COPIED_FILES+=("$RELATIVE_PATH") # Relativen Pfad speichern - else - echo "ℹ️ Datei $RELATIVE_PATH benötigt keine Anpassung. Überspringe Kopieren." - fi - done -else - echo "⚠️ Quellverzeichnis $SOURCE_DIR existiert nicht. Überspringe Verarbeitung." -fi - -# Ersetzungen in allen Dateien im Verzeichnis UserScripts vornehmen -echo "🔄 Ersetze absolute Pfade, XDG-Verzeichnisse und Platzhalter in allen Dateien im Verzeichnis $TARGET_DIR..." -for FILE in "$TARGET_DIR"/*; do - if [[ -f "$FILE" ]]; then - echo "Verarbeite Datei: $FILE" - - # Ersetzungen vornehmen - sed -i \ + # Ersetzungen vornehmen + sed -i \ -e 's|\$HOME/Desktop|$(xdg-user-dir DESKTOP)|g' \ -e 's|\$HOME/Downloads|$(xdg-user-dir DOWNLOAD)|g' \ -e 's|\$HOME/Documents|$(xdg-user-dir DOCUMENTS)|g' \ @@ -204,29 +245,30 @@ for FILE in "$TARGET_DIR"/*; do -e 's|$(xdg-user-dir)/Videos|$(xdg-user-dir VIDEOS)|g' \ "$FILE" - echo "✅ Ersetzungen in $FILE abgeschlossen." - fi -done - -# Verweise in UserKeybinds.conf anpassen -if [[ -f "$USER_KEYBINDS_FILE" ]]; then - echo "🔄 Passe Verweise in $USER_KEYBINDS_FILE an..." - for SCRIPT in "${COPIED_FILES[@]}"; do - # Ersetze $scriptsDir/ durch $UserScripts/ - sed -i "s|\$scriptsDir/$SCRIPT|\$UserScripts/$SCRIPT|g" "$USER_KEYBINDS_FILE" - echo "✅ Verweis für $SCRIPT angepasst." + echo "✅ Ersetzungen in $FILE abgeschlossen." + fi done -else - echo "⚠️ Datei $USER_KEYBINDS_FILE existiert nicht. Überspringe Anpassung der Verweise." -fi -# Überprüfen, ob der Ordner existiert -if [ -d "$(xdg-user-dir)/Pictures" ]; then - echo "📂 Verschiebe $(xdg-user-dir)/Pictures nach $(xdg-user-dir PICTURES)..." - rsync -av --ignore-existing "$(xdg-user-dir)/Pictures/" "$(xdg-user-dir PICTURES)/" - rm -r "$(xdg-user-dir)/Pictures/" -else - echo "📂 Der Ordner $(xdg-user-dir)/Pictures existiert nicht. Kein Verschieben notwendig." + # Verweise in UserKeybinds.conf anpassen + if [[ -f "$USER_KEYBINDS_FILE" ]]; then + echo "🔄 Passe Verweise in $USER_KEYBINDS_FILE an..." + for SCRIPT in "${COPIED_FILES[@]}"; do + # Ersetze $scriptsDir/ durch $UserScripts/ + sed -i "s|\$scriptsDir/$SCRIPT|\$UserScripts/$SCRIPT|g" "$USER_KEYBINDS_FILE" + echo "✅ Verweis für $SCRIPT angepasst." + done + else + echo "⚠️ Datei $USER_KEYBINDS_FILE existiert nicht. Überspringe Anpassung der Verweise." + fi + + # Überprüfen, ob der Ordner existiert + if [ -d "$(xdg-user-dir)/Pictures" ]; then + echo "📂 Verschiebe $(xdg-user-dir)/Pictures nach $(xdg-user-dir PICTURES)..." + rsync -av --ignore-existing "$(xdg-user-dir)/Pictures/" "$(xdg-user-dir PICTURES)/" + rm -r "$(xdg-user-dir)/Pictures/" + else + echo "📂 Der Ordner $(xdg-user-dir)/Pictures existiert nicht. Kein Verschieben notwendig." + fi fi echo "✅ Skript erfolgreich ausgeführt!" diff --git a/9_GamingSetup.sh b/9_GamingSetup.sh index 70c038c..b04564d 100755 --- a/9_GamingSetup.sh +++ b/9_GamingSetup.sh @@ -2,7 +2,7 @@ # Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird if [[ $EUID -ne 0 ]]; then - echo "Dieses Skript muss als root ausgeführt werden." + echo "❌ Dieses Skript muss als root ausgeführt werden." exit 1 fi @@ -10,10 +10,23 @@ fi apt update && apt upgrade -y # Steam-Installation -dpkg --add-architecture i386 -apt update -apt install -y wget curl +read -p "❓ Soll Steam installiert werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer -apt install -y steam lutris +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + dpkg --add-architecture i386 + apt update + apt install -y steam +fi -echo "✅ Installation von Steam und Lutris abgeschlossen!" +# Lutris-Installation +read -p "❓ Soll Lutris installiert werden? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + apt install -y lutris +fi + +echo "✅ Skript abgeschlossen!" -- 2.49.1 From 60ba4fb7bedfb34d62c8685d251c189a37d4e157 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Tue, 25 Mar 2025 11:25:21 +0100 Subject: [PATCH 33/41] =?UTF-8?q?Feat:=20F=C3=BCgt=20Fragezeichensymbol=20?= =?UTF-8?q?ein.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 10_Programs.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/10_Programs.sh b/10_Programs.sh index 402b574..9212d0f 100755 --- a/10_Programs.sh +++ b/10_Programs.sh @@ -241,7 +241,7 @@ flatpak install flathub com.belmoussaoui.Obfuscate -y flatpak install com.github.tchx84.Flatseal -y # VeraCrypt installieren -read -p "Soll VeraCrypt installiert werden? (j/n) [n]: " answer +read -p "❓ Soll VeraCrypt installiert werden? (j/n) [n]: " answer answer=${answer,,} # In Kleinbuchstaben umwandeln answer=${answer:-n} # Standardwert 'n', falls leer @@ -254,7 +254,7 @@ if [[ "$answer" == "j" ]] || [[ "$anwser" == "y" ]]; then fi # Webmin installieren -read -p "Soll webmin installiert werden? (j/n) [n]: " answer +read -p "❓ Soll webmin installiert werden? (j/n) [n]: " answer answer=${answer,,} # In Kleinbuchstaben umwandeln answer=${answer:-n} # Standardwert 'n', falls leer @@ -265,7 +265,7 @@ if [[ "$answer" == "j" ]] || [[ "$anwser" == "y" ]]; then fi # Waydroid installieren -read -p "Soll Waydroid installiert werden? (j/n) [n]: " answer +read -p "❓ Soll Waydroid installiert werden? (j/n) [n]: " answer answer=${answer,,} # In Kleinbuchstaben umwandeln answer=${answer:-n} # Standardwert 'n', falls leer -- 2.49.1 From 49630272c5036d60b77ef4029eaac4c0557319a9 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Tue, 25 Mar 2025 11:26:24 +0100 Subject: [PATCH 34/41] =?UTF-8?q?Ref:=20=C3=84ndert=20Dateibenennung.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 2_AdJoin.sh => 1_AdJoin.sh | 0 3_HyprlandInstall.sh => 2_HyprlandInstall.sh | 0 4_ZshRegister.sh => 3_ZshRegister.sh | 0 5_DomainLogin.sh => 4_DomainLogin.sh | 0 6_Polish.sh => 5_Polish.sh | 0 9_GamingSetup.sh => 6_GamingSetup.sh | 0 10_Programs.sh => 7_Programs.sh | 0 7 files changed, 0 insertions(+), 0 deletions(-) rename 2_AdJoin.sh => 1_AdJoin.sh (100%) rename 3_HyprlandInstall.sh => 2_HyprlandInstall.sh (100%) rename 4_ZshRegister.sh => 3_ZshRegister.sh (100%) rename 5_DomainLogin.sh => 4_DomainLogin.sh (100%) rename 6_Polish.sh => 5_Polish.sh (100%) rename 9_GamingSetup.sh => 6_GamingSetup.sh (100%) rename 10_Programs.sh => 7_Programs.sh (100%) diff --git a/2_AdJoin.sh b/1_AdJoin.sh similarity index 100% rename from 2_AdJoin.sh rename to 1_AdJoin.sh diff --git a/3_HyprlandInstall.sh b/2_HyprlandInstall.sh similarity index 100% rename from 3_HyprlandInstall.sh rename to 2_HyprlandInstall.sh diff --git a/4_ZshRegister.sh b/3_ZshRegister.sh similarity index 100% rename from 4_ZshRegister.sh rename to 3_ZshRegister.sh diff --git a/5_DomainLogin.sh b/4_DomainLogin.sh similarity index 100% rename from 5_DomainLogin.sh rename to 4_DomainLogin.sh diff --git a/6_Polish.sh b/5_Polish.sh similarity index 100% rename from 6_Polish.sh rename to 5_Polish.sh diff --git a/9_GamingSetup.sh b/6_GamingSetup.sh similarity index 100% rename from 9_GamingSetup.sh rename to 6_GamingSetup.sh diff --git a/10_Programs.sh b/7_Programs.sh similarity index 100% rename from 10_Programs.sh rename to 7_Programs.sh -- 2.49.1 From 938e1bc70dcf7262c497142467a215188a2236cd Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Thu, 27 Mar 2025 09:49:51 +0100 Subject: [PATCH 35/41] Feat: Zeigt Grub nur im Fehlerfall an. --- 0_Setup.sh | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/0_Setup.sh b/0_Setup.sh index d4be5c6..d812b9d 100755 --- a/0_Setup.sh +++ b/0_Setup.sh @@ -9,6 +9,38 @@ fi apt update && apt upgrade -y apt install -y git sudo 7zip unrar unzip network-manager software-properties-common tree bluetooth wget curl +# GRUB-Config +read -p "❓ Soll GRUB so konfiguriert werden, dass es nur im Fehlerfall angezeigt wird? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + echo "ℹ️ GRUB wird so konfiguriert, dass es nur im Fehlerfall angezeigt wird..." + + # Sicherstellen, dass die Datei existiert + GRUB_CFG="/etc/default/grub" + + if [[ ! -f "$GRUB_CFG" ]]; then + echo "❌ Fehler: $GRUB_CFG nicht gefunden!" + else + # Backup der aktuellen GRUB-Konfiguration + cp "$GRUB_CFG" "$GRUB_CFG.bak" + + # Konfigurationsänderungen vornehmen + sed -i 's/^GRUB_TIMEOUT=.*/GRUB_TIMEOUT=0/' "$GRUB_CFG" + sed -i 's/^GRUB_TIMEOUT_STYLE=.*/GRUB_TIMEOUT_STYLE=hidden/' "$GRUB_CFG" + + # Falls die Einträge nicht existieren, hinzufügen + grep -q '^GRUB_TIMEOUT=' "$GRUB_CFG" || echo 'GRUB_TIMEOUT=0' >> "$GRUB_CFG" + grep -q '^GRUB_TIMEOUT_STYLE=' "$GRUB_CFG" || echo 'GRUB_TIMEOUT_STYLE=hidden' >> "$GRUB_CFG" + + # GRUB-Konfiguration aktualisieren + update-grub + + echo "✅ GRUB wurde erfolgreich angepasst. Änderungen werden beim nächsten Boot wirksam." + fi +fi + # sbin in Path read -p "❓ Soll sbin für sudo-Nutzer in den PATH aufgenommen werden? (j/n) [n]: " answer answer=${answer,,} # In Kleinbuchstaben umwandeln -- 2.49.1 From 07d9282587eac9b23d74469a5a047706022366c2 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Thu, 27 Mar 2025 10:05:07 +0100 Subject: [PATCH 36/41] =?UTF-8?q?Feat:=20Konfiguriert=20apt=20f=C3=BCr=20n?= =?UTF-8?q?on-free=20Software.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 0_Setup.sh | 51 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) diff --git a/0_Setup.sh b/0_Setup.sh index d812b9d..ef5af20 100755 --- a/0_Setup.sh +++ b/0_Setup.sh @@ -7,6 +7,57 @@ if [ "$(id -u)" -ne 0 ]; then fi apt update && apt upgrade -y + +# sources-list Config +read -p "❓ Soll die apt sources-list so konfiguriert werden, dass sie Contributions und non-free Software zum installieren ermöglicht? (j/n) [n]: " answer +answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer:-n} # Standardwert 'n', falls leer + +if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then + # Datei-Pfad zur sources.list + SOURCE_LIST="/etc/apt/sources.list" + + # Backup erstellen + cp "$SOURCE_LIST" "$SOURCE_LIST.bak" + + echo "ℹ️ Aktualisiere $SOURCE_LIST..." + + # Neue Datei erzeugen + TEMP_FILE=$(mktemp) + + while IFS= read -r line; do + # Falls die Zeile auskommentiert oder leer ist, unverändert übernehmen + if [[ "$line" =~ ^# || -z "$line" ]]; then + echo "$line" >> "$TEMP_FILE" + continue + fi + + # Den eigentlichen APT-Eintrag und die aktuellen Komponenten extrahieren + APT_ENTRY=$(echo "$line" | awk '{for (i=1; i<=NF; i++) if ($i ~ /^[a-zA-Z0-9.-]+:\/\//) {print substr($0, 1, index($0,$i) + length($i) - 1); exit}}') + COMPONENTS=$(echo "$line" | awk '{$1=$2=$3=""; print $0}' | xargs) + + # Fehlende Komponenten hinzufügen + for component in main non-free non-free-firmware contrib; do + if ! grep -qE "(^| )$component( |$)" <<< "$COMPONENTS"; then + COMPONENTS="$COMPONENTS $component" + fi + done + + # Neue Zeile zusammenbauen + echo "$APT_ENTRY $COMPONENTS" >> "$TEMP_FILE" + + done < "$SOURCE_LIST" + + # Originaldatei ersetzen + mv "$TEMP_FILE" "$SOURCE_LIST" + + # apt aktualisieren + echo "🔄 Aktualisiere APT..." + apt update + + echo "✅ Fertig! $SOURCE_LIST wurde aktualisiert." +fi + apt install -y git sudo 7zip unrar unzip network-manager software-properties-common tree bluetooth wget curl # GRUB-Config -- 2.49.1 From ad8298995f3cb9009f3798e4c6f9b240415393a9 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Thu, 27 Mar 2025 10:13:14 +0100 Subject: [PATCH 37/41] Fix: Passt ersetzen der sources.list an. --- 0_Setup.sh | 46 ++++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 20 deletions(-) diff --git a/0_Setup.sh b/0_Setup.sh index ef5af20..a2c5dd9 100755 --- a/0_Setup.sh +++ b/0_Setup.sh @@ -10,7 +10,7 @@ apt update && apt upgrade -y # sources-list Config read -p "❓ Soll die apt sources-list so konfiguriert werden, dass sie Contributions und non-free Software zum installieren ermöglicht? (j/n) [n]: " answer -answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer,,} # In Kleinbuchstaben umwandeln answer=${answer:-n} # Standardwert 'n', falls leer if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then @@ -22,31 +22,37 @@ if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then echo "ℹ️ Aktualisiere $SOURCE_LIST..." - # Neue Datei erzeugen + # Temporäre Datei erstellen TEMP_FILE=$(mktemp) + # Fehlende Komponenten, die hinzugefügt werden sollen + REQUIRED_COMPONENTS=("main" "non-free" "non-free-firmware" "contrib") + while IFS= read -r line; do # Falls die Zeile auskommentiert oder leer ist, unverändert übernehmen if [[ "$line" =~ ^# || -z "$line" ]]; then - echo "$line" >> "$TEMP_FILE" + echo "$line" >>"$TEMP_FILE" continue fi - # Den eigentlichen APT-Eintrag und die aktuellen Komponenten extrahieren + # Den APT-Eintrag und die Komponenten extrahieren APT_ENTRY=$(echo "$line" | awk '{for (i=1; i<=NF; i++) if ($i ~ /^[a-zA-Z0-9.-]+:\/\//) {print substr($0, 1, index($0,$i) + length($i) - 1); exit}}') - COMPONENTS=$(echo "$line" | awk '{$1=$2=$3=""; print $0}' | xargs) + CURRENT_COMPONENTS=$(echo "$line" | awk '{$1=$2=$3=""; print $0}' | xargs) + + # Set für aktuelle Komponenten erstellen + COMPONENTS_SET=($CURRENT_COMPONENTS) # Fehlende Komponenten hinzufügen - for component in main non-free non-free-firmware contrib; do - if ! grep -qE "(^| )$component( |$)" <<< "$COMPONENTS"; then - COMPONENTS="$COMPONENTS $component" + for component in "${REQUIRED_COMPONENTS[@]}"; do + if ! [[ " ${COMPONENTS_SET[*]} " =~ " $component " ]]; then + COMPONENTS_SET+=("$component") fi done - # Neue Zeile zusammenbauen - echo "$APT_ENTRY $COMPONENTS" >> "$TEMP_FILE" + # Neue Zeile mit ursprünglichem APT-Teil + aktualisierten Komponenten schreiben + echo "$APT_ENTRY ${COMPONENTS_SET[*]}" >>"$TEMP_FILE" - done < "$SOURCE_LIST" + done <"$SOURCE_LIST" # Originaldatei ersetzen mv "$TEMP_FILE" "$SOURCE_LIST" @@ -62,7 +68,7 @@ apt install -y git sudo 7zip unrar unzip network-manager software-properties-com # GRUB-Config read -p "❓ Soll GRUB so konfiguriert werden, dass es nur im Fehlerfall angezeigt wird? (j/n) [n]: " answer -answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer,,} # In Kleinbuchstaben umwandeln answer=${answer:-n} # Standardwert 'n', falls leer if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then @@ -82,8 +88,8 @@ if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then sed -i 's/^GRUB_TIMEOUT_STYLE=.*/GRUB_TIMEOUT_STYLE=hidden/' "$GRUB_CFG" # Falls die Einträge nicht existieren, hinzufügen - grep -q '^GRUB_TIMEOUT=' "$GRUB_CFG" || echo 'GRUB_TIMEOUT=0' >> "$GRUB_CFG" - grep -q '^GRUB_TIMEOUT_STYLE=' "$GRUB_CFG" || echo 'GRUB_TIMEOUT_STYLE=hidden' >> "$GRUB_CFG" + grep -q '^GRUB_TIMEOUT=' "$GRUB_CFG" || echo 'GRUB_TIMEOUT=0' >>"$GRUB_CFG" + grep -q '^GRUB_TIMEOUT_STYLE=' "$GRUB_CFG" || echo 'GRUB_TIMEOUT_STYLE=hidden' >>"$GRUB_CFG" # GRUB-Konfiguration aktualisieren update-grub @@ -94,11 +100,11 @@ fi # sbin in Path read -p "❓ Soll sbin für sudo-Nutzer in den PATH aufgenommen werden? (j/n) [n]: " answer -answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer,,} # In Kleinbuchstaben umwandeln answer=${answer:-n} # Standardwert 'n', falls leer if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then - cat << 'EOF' > /etc/profile.d/sbin_in_path.sh + cat << 'EOF' >/etc/profile.d/sbin_in_path.sh if groups | grep -q "\bsudo\b"; then case ":$PATH:" in *":/sbin:"*) ;; @@ -116,11 +122,11 @@ fi # sudo-Hinweis read -p "❓ Soll ein sudo-Hinweis hinzugefügt werden? (j/n) [n]: " answer -answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer,,} # In Kleinbuchstaben umwandeln answer=${answer:-n} # Standardwert 'n', falls leer if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then - cat << 'EOF' > /etc/profile.d/sudo_hint.sh + cat << 'EOF' >/etc/profile.d/sudo_hint.sh if [ ! -e "$HOME/.sudo_as_admin_successful" ] && [ ! -e "$HOME/.hushlogin" ] ; then case " $(groups) " in *\ admin\ *|*\ sudo\ *) if [ -x /usr/bin/sudo ]; then @@ -136,11 +142,11 @@ fi # sudo-Hinweis read -p "❓ Sollen die XDG-Data-Dirs gesetzt werden? (j/n) [n]: " answer -answer=${answer,,} # In Kleinbuchstaben umwandeln +answer=${answer,,} # In Kleinbuchstaben umwandeln answer=${answer:-n} # Standardwert 'n', falls leer if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then - cat << 'EOF' > /etc/profile.d/xdg_dirs_desktop_session.sh + cat << 'EOF' >/etc/profile.d/xdg_dirs_desktop_session.sh # /etc/profile.d/desktop_session_xdg_dirs.sh - Prepend a $DESKTOP_SESSION-named directory to $XDG_CONFIG_DIRS and $XDG_DATA_DIRS DEFAULT_XDG_CONFIG_DIRS="/etc/xdg" -- 2.49.1 From a95ce7ab2e76ad41650f6a4f585d410b2a2c18dd Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Thu, 27 Mar 2025 10:19:52 +0100 Subject: [PATCH 38/41] Fix: Fehler beim anpassen der sources.list --- 0_Setup.sh | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/0_Setup.sh b/0_Setup.sh index a2c5dd9..8e90fce 100755 --- a/0_Setup.sh +++ b/0_Setup.sh @@ -35,9 +35,13 @@ if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then continue fi - # Den APT-Eintrag und die Komponenten extrahieren - APT_ENTRY=$(echo "$line" | awk '{for (i=1; i<=NF; i++) if ($i ~ /^[a-zA-Z0-9.-]+:\/\//) {print substr($0, 1, index($0,$i) + length($i) - 1); exit}}') - CURRENT_COMPONENTS=$(echo "$line" | awk '{$1=$2=$3=""; print $0}' | xargs) + # Die ersten drei Felder als APT-Befehl, URL und Distribution speichern + APT_CMD=$(echo "$line" | awk '{print $1}') + APT_URL=$(echo "$line" | awk '{print $2}') + APT_DIST=$(echo "$line" | awk '{print $3}') + + # Alle vorhandenen Komponenten sammeln (ab Feld 4) + CURRENT_COMPONENTS=$(echo "$line" | cut -d' ' -f4-) # Set für aktuelle Komponenten erstellen COMPONENTS_SET=($CURRENT_COMPONENTS) @@ -49,8 +53,8 @@ if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then fi done - # Neue Zeile mit ursprünglichem APT-Teil + aktualisierten Komponenten schreiben - echo "$APT_ENTRY ${COMPONENTS_SET[*]}" >>"$TEMP_FILE" + # Neue Zeile mit ursprünglichem APT-Befehl, URL, Distribution und aktualisierten Komponenten schreiben + echo "$APT_CMD $APT_URL $APT_DIST ${COMPONENTS_SET[*]}" >>"$TEMP_FILE" done <"$SOURCE_LIST" -- 2.49.1 From 407201d0e227d39786c34700215e8e7086ca89cb Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Thu, 27 Mar 2025 10:29:58 +0100 Subject: [PATCH 39/41] =?UTF-8?q?Fix:=20Passt=20ja/nein-Pr=C3=BCfung=20an.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 1_TrixieUpgrade.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/1_TrixieUpgrade.sh b/1_TrixieUpgrade.sh index 3421b80..faa00fa 100755 --- a/1_TrixieUpgrade.sh +++ b/1_TrixieUpgrade.sh @@ -7,11 +7,11 @@ if [ "$(id -u)" -ne 0 ]; then fi # Sicherheitsabfrage -read -p "⚠️ Achtung! Du führst ein Release-Upgrade auf Debian Trixie durch. Fortfahren? (ja/nein): " answer +read -p "⚠️ Achtung! Du führst ein Release-Upgrade auf Debian Trixie durch. Fortfahren? (j/n) [n]: " answer answer=${answer,,} # In Kleinbuchstaben umwandeln answer=${answer:-n} # Standardwert 'n', falls leer -if [[ "$answer" != "j" ]] || [[ "$answer" != "y" ]]; then +if [[ "$answer" != "j" ]] && [[ "$answer" != "y" ]]; then echo "❌ Upgrade abgebrochen." exit 0 fi -- 2.49.1 From 112effff69a500714545e4772f3159b63d4d94e3 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Thu, 27 Mar 2025 12:12:24 +0100 Subject: [PATCH 40/41] Fix: Aktiviert ufw. --- 5_Polish.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/5_Polish.sh b/5_Polish.sh index 3c36091..bafeef8 100755 --- a/5_Polish.sh +++ b/5_Polish.sh @@ -24,7 +24,7 @@ fi echo "ℹ️ Firewall (ufw) wird installiert..." sudo apt install -y ufw -sudo ufw +sudo ufw enable echo "ℹ️ Virenschutz (clamav) wird installiert..." sudo apt install -y enable clamav clamav-freshclam clamav-docs clamav-daemon -- 2.49.1 From a8f6424d7c17b974a87c3dcc38921e38bc443560 Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Thu, 27 Mar 2025 12:16:33 +0100 Subject: [PATCH 41/41] Fix: Flasche Formatierung. --- 5_Polish.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/5_Polish.sh b/5_Polish.sh index bafeef8..fb283e5 100755 --- a/5_Polish.sh +++ b/5_Polish.sh @@ -99,7 +99,7 @@ if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then for BIND in "${!KEYBINDS[@]}"; do FULL_BIND="$BIND # ${KEYBINDS[$BIND]}" - if ! grep -Fxq "$FULL_BIND" "$HYPR_CONFIG_DIR/UserKeybinds.conf" 2 >/dev/null; then + if ! grep -Fxq "$FULL_BIND" "$HYPR_CONFIG_DIR/UserKeybinds.conf" 2>/dev/null; then echo "$FULL_BIND" >>"$HYPR_CONFIG_DIR/UserKeybinds.conf" echo "✅ Keybind hinzugefügt: ${KEYBINDS[$BIND]}" else @@ -131,7 +131,7 @@ fi # Standardvorlagen ablegen echo "📂 Standardvorlagen werden im Vorlagen-Ordner erstellt..." -TEMPLATES_DIR=$(xdg-user-dir TEMPLATES 2 >/dev/null || echo "$HOME/Vorlagen") +TEMPLATES_DIR=$(xdg-user-dir TEMPLATES 2>/dev/null || echo "$HOME/Vorlagen") mkdir -p "$TEMPLATES_DIR" # Vorlagenliste -- 2.49.1