Compare commits

..

45 Commits

Author SHA1 Message Date
a8f6424d7c Fix: Flasche Formatierung. 2025-03-27 12:16:33 +01:00
112effff69 Fix: Aktiviert ufw. 2025-03-27 12:12:24 +01:00
49630272c5 Ref: Ändert Dateibenennung. 2025-03-25 11:26:24 +01:00
50468884d2 Feat: Logging mit Abfrage. 2025-03-25 11:24:06 +01:00
5d723f8c26 Feat: Fügt network-manager-gnome hinzu. 2025-03-23 16:30:21 +01:00
3fa1f007c2 Feat: Fügt Obfuscate hinzu 2025-03-13 16:10:03 +01:00
794a23cf01 Feat: installiert Bleachbit 2025-03-13 09:32:59 +01:00
cef9438f0f Feat: installiert Bleachbit 2025-03-13 09:26:32 +01:00
f02dac4e6c Feat: Installiert Portmaster 2025-03-13 09:20:29 +01:00
a1635cc40e feat: Fügt Virenschutz hinzu. 2025-03-13 08:56:51 +01:00
f719783cba feat: Fügt Virenschutz hinzu. 2025-03-13 08:49:02 +01:00
dfaac4730e Feat: Setzt an andere Stellen. 2025-03-10 18:38:25 +01:00
68c2534576 Feat: Fügt tuxedo-control-center zum Autostart hinzu. 2025-03-10 18:35:52 +01:00
673849b3c2 Feat: Entfernt weitere Pakete von der Deinstallation. 2025-03-10 17:45:41 +01:00
515e978581 Feat: Passt Pakete an, die entfernt werden. 2025-03-10 17:18:06 +01:00
320060fa65 Feat: Entferne Grub-Config Anpassung. 2025-03-10 17:07:56 +01:00
7193e5cff3 Feat: Fügt ppa für VeraCrypt autoamtisch hinzu 2025-03-10 17:07:14 +01:00
1da25afe66 Ref: Entfernt unnötige Dinge. 2025-03-10 16:34:55 +01:00
f7b1bd93a1 Feat: Manuelles setzen des Plymouth Themes. 2025-03-10 16:26:00 +01:00
fe4d7f79be Feat: Fügt ein -y hinzu. 2025-03-10 15:49:52 +01:00
b438ae765b Feat: Fügt das isntallieren von Plymouth noch an einer anderes Stelle hinzu. 2025-03-10 15:39:06 +01:00
e68a2a312d Fix: Umbrüche bei neofetch und nur einfügen, wenn nicht vorhanden 2025-03-10 15:30:33 +01:00
8bfe82c40a Fix: Verwendet den richtigen User. 2025-03-10 15:27:44 +01:00
f9f32faa1b Feat: Ersetzt fastfetch mit neofetch. 2025-03-10 15:24:11 +01:00
badffdf682 Fix: Entferne das entfernen von Paketen. 2025-03-10 14:27:30 +01:00
10c3de710f Fix: Konfiguriert Tastatur. 2025-03-10 13:55:39 +01:00
75e39c2a4d Feat: Passt Pakete an. 2025-03-10 12:47:36 +01:00
84f7909292 Fix: Entfernt ein Paket. 2025-03-10 11:36:48 +01:00
d307b0a2f2 Fix: Tastaturpakete on hold setzen. 2025-03-10 11:31:58 +01:00
beccffac1e Fix: Passt install an. 2025-03-10 10:13:53 +01:00
4ca16ec273 Fix: Passt Berechtigungen an. 2025-03-10 10:02:32 +01:00
798629e756 Feat: Fügt Pakete zur Installation hinzu. 2025-03-10 09:41:33 +01:00
e9ac090a97 Ref: Entfernen von grafischer Benutzeroberfläche passiert an anderer Stelle. 2025-03-10 09:41:20 +01:00
84273f27df Feat: Entfernt grafische Oberfläche und etabliert eine Internetverbindung- 2025-03-10 09:40:03 +01:00
d991228c6b Feat: Passt die Debian 12 bookworm Install-Skripte für Tuxedo OS an. 2025-03-09 23:31:50 +01:00
eefe740b81 Merge pull request 'debian_12_bookworm' (#3) from debian_12_bookworm into tuxedo_os
Reviewed-on: #3
2025-03-09 22:27:49 +01:00
34d7363c34 Feat: Installiert nützliche Programme im Setup. 2025-03-09 22:27:25 +01:00
8b846f3724 Feat: Fügt FileRoller zur Installation hinzu. 2025-03-09 22:27:05 +01:00
b7228cdb25 Merge pull request 'Ref: Passt VeraCrypt-installation an.' (#2) from debian_12_bookworm into tuxedo_os
Reviewed-on: #2
2025-03-09 22:13:18 +01:00
6dd19d00b1 Ref: Passt VeraCrypt-installation an. 2025-03-09 22:12:26 +01:00
172823a1db Merge pull request 'debian_12_bookworm' (#1) from debian_12_bookworm into tuxedo_os
Reviewed-on: #1
2025-03-09 22:05:14 +01:00
e73e0dd077 Fix: Entfernt Leerzeichen 2025-03-09 22:04:32 +01:00
50fc5b404b Passt .gitignore an 2025-03-09 22:04:21 +01:00
f89f62e5e8 Feat: VeraCrypt-Installation 2025-03-09 21:59:55 +01:00
876866f740 Feat: Fügt Skripte zum aufsetzen von Debian 12 (Bookworm) hinzu. 2025-03-09 20:52:44 +01:00
10 changed files with 898 additions and 0 deletions

2
.gitignore vendored
View File

@ -77,3 +77,5 @@ fabric.properties
# Android studio 3.1+ serialized cache file # Android studio 3.1+ serialized cache file
.idea/caches/build_file_checksums.ser .idea/caches/build_file_checksums.ser
.fleet
.idea

102
0_Setup.sh Executable file
View File

@ -0,0 +1,102 @@
#!/bin/bash
# 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 7zip unrar unzip network-manager software-properties-common tree bluetooth wget curl
# 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
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
echo " sbin wurde zum PATH für sudo-Nutzer hinzugefügt."
fi
# 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 <command>".'
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/"
if [ -n "$DESKTOP_SESSION" ]; then
# readd default if was empty
if [ -z "$XDG_CONFIG_DIRS" ]; then
XDG_CONFIG_DIRS="$DEFAULT_XDG_CONFIG_DIRS"
fi
if [ -n "${XDG_CONFIG_DIRS##*$DEFAULT_XDG_CONFIG_DIRS/xdg-$DESKTOP_SESSION*}" ]; then
XDG_CONFIG_DIRS="$DEFAULT_XDG_CONFIG_DIRS"/xdg-"$DESKTOP_SESSION":"$XDG_CONFIG_DIRS"
fi
export XDG_CONFIG_DIRS
# gnome is already added if gnome-session installed
if [ "$DESKTOP_SESSION" != "gnome" ]; then
if [ -z "$XDG_DATA_DIRS" ]; then
XDG_DATA_DIRS="$DEFAULT_XDG_DATA_DIRS"
fi
if [ -n "${XDG_DATA_DIRS##*/usr/share/$DESKTOP_SESSION*}" ]; then
XDG_DATA_DIRS=/usr/share/"$DESKTOP_SESSION":"$XDG_DATA_DIRS"
fi
export XDG_DATA_DIRS
fi
fi
EOF
echo " XDG-Data-Dirs wurden gesetzt!"
fi
chmod +x /etc/profile.d/*
# 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!"

31
1_AdJoin.sh Executable file
View File

@ -0,0 +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
# Verzeichnis setzen
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."
else
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; }
# AD-Skript ausführen
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

14
2_HyprlandInstall.sh Executable file
View File

@ -0,0 +1,14 @@
#!/bin/bash
# Sicherstellen, dass das Skript **nicht** als root ausgeführt wird
if [[ $EUID -eq 0 ]]; then
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)

94
3_ZshRegister.sh Executable file
View File

@ -0,0 +1,94 @@
#!/bin/bash
# Sicherstellen, dass das Skript mit Root-Rechten ausgeführt wird
if [[ $EUID -ne 0 ]]; then
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."
exit 1
fi
USER_NAME="$SUDO_USER"
USER_HOME=$(eval echo ~$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
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
# Eintrag aus getent passwd holen
USER_ENTRY=$(getent passwd "$USER_NAME")
# 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
echo "✅ Shell wurde erfolgreich auf ZSH gesetzt! Zum Anwenden, neue Terminal-Sitzung öffnen."

53
4_DomainLogin.sh Executable file
View File

@ -0,0 +1,53 @@
#!/bin/bash
# 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
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
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 <<EOF >"$SDDM_CUSTOM_CONF"
[Users]
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"
fi
# SSSD und SDDM neu starten
systemctl restart sssd
systemctl restart sddm
fi
echo "✅ Konfiguration von SDDM und sssd abgeschlossen!"

274
5_Polish.sh Executable file
View File

@ -0,0 +1,274 @@
#!/bin/bash
set -e # Skript bricht bei Fehlern ab
# 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 upgrade -y && sudo apt autoremove -y
# 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
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
echo "🔄 Entferne Pakete..."
sudo apt remove -y kmahjongg kmines kpat ksudoku nextcloud-desktop skanlite thunderbird virtualbox
fi
echo " Firewall (ufw) wird installiert..."
sudo apt install -y ufw
sudo ufw enable
echo " Virenschutz (clamav) wird installiert..."
sudo apt install -y enable clamav clamav-freshclam clamav-docs 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 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 "❌ 'xdg-settings' ist nicht verfügbar. Bitte manuell den Standardbrowser setzen."
fi
fi
# 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
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
# Hyprland User Bindings
HYPR_CONFIG_DIR="$HOME/.config/hypr/UserConfigs"
mkdir -p "$HYPR_CONFIG_DIR"
# Keybinds hinzufügen (falls nicht vorhanden)
declare -A KEYBINDS=(
["bindr = \$mainMod, \$mainMod_L, exec, pkill rofi || rofi -show drun -modi drun,filebrowser,run,window"]="rofi menu"
["bindr = \$mainMod, L, exec, \$scriptsDir/LockScreen.sh"]="screen lock"
["bindr = \$mainMod, V, exec, \$scriptsDir/ClipManager.sh"]="Clipboard Manager"
)
for BIND in "${!KEYBINDS[@]}"; do
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 Datei $CONFIG_FILE existiert nicht."
fi
fi
# Standardvorlagen ablegen
echo "📂 Standardvorlagen werden im Vorlagen-Ordner erstellt..."
TEMPLATES_DIR=$(xdg-user-dir TEMPLATES 2>/dev/null || echo "$HOME/Vorlagen")
mkdir -p "$TEMPLATES_DIR"
# Vorlagenliste
declare -A TEMPLATES=(
["Textdokument.txt"]="Dies ist eine Standard-Textdatei."
["Markdown-Dokument.md"]="# Markdown-Vorlage\n\nHier beginnt dein Markdown-Dokument."
["Bash-Skript.sh"]="#!/bin/bash\n\necho 'Hello, world!'"
["Python-Skript.py"]='#!/usr/bin/env python3\n\nprint("Hello, world!")'
)
for FILE in "${!TEMPLATES[@]}"; do
TEMPLATE_PATH="$TEMPLATES_DIR/$FILE"
if [[ ! -f "$TEMPLATE_PATH" ]]; then
echo -e "${TEMPLATES[$FILE]}" >"$TEMPLATE_PATH"
chmod +x "$TEMPLATE_PATH" # Falls Skript
echo "✅ Vorlage erstellt: $FILE"
else
echo " Vorlage existiert bereits: $FILE"
fi
done
# Zielverzeichnis und UserKeybinds-Datei definieren
SOURCE_DIR="$HOME/.config/hypr/scripts"
TARGET_DIR="$HOME/.config/hypr/UserScripts"
CONFIG_DIR="$HOME/.config/hypr/UserConfigs"
USER_KEYBINDS_FILE="$CONFIG_DIR/UserKeybinds.conf" # Definition an der richtigen Stelle
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
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."
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/<Dateiname> durch $UserScripts/<Dateiname>
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!"

32
6_GamingSetup.sh Executable file
View File

@ -0,0 +1,32 @@
#!/bin/bash
# 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
# System aktualisieren
apt update && apt upgrade -y
# Steam-Installation
read -p "❓ Soll Steam installiert werden? (j/n) [n]: " answer
answer=${answer,,} # In Kleinbuchstaben umwandeln
answer=${answer:-n} # Standardwert 'n', falls leer
if [[ "$answer" == "j" ]] || [[ "$answer" == "y" ]]; then
dpkg --add-architecture i386
apt update
apt install -y steam
fi
# 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!"

293
7_Programs.sh Executable file
View File

@ -0,0 +1,293 @@
#!/bin/bash
set -e # Skript bricht bei Fehlern ab
# Sicherstellen, dass das Skript **nicht** als root ausgeführt wird
if [[ $EUID -eq 0 ]]; then
echo "❌ Bitte **nicht** als root oder mit sudo ausführen! Das Skript fordert sudo nur dort an, wo es benötigt wird."
exit 1
fi
# Überprüfen, ob Flatpak installiert ist
if ! command -v flatpak &>/dev/null; then
echo "❌ Fehler: Flatpak ist nicht installiert. Bitte installiere es und versuche es erneut."
exit 1
fi
# Flatpak Apps installieren (nur falls noch nicht als DEB installiert)
declare -A FLATPAK_APPS=(
["org.libreoffice.LibreOffice"]="LibreOffice"
["dev.vencord.Vesktop"]="Vesktop"
["eu.betterbird.Betterbird"]="Betterbird"
)
for APP in "${!FLATPAK_APPS[@]}"; do
if dpkg -l | grep -iq "${FLATPAK_APPS[$APP]}"; then
echo "${FLATPAK_APPS[$APP]} ist bereits als DEB-Paket installiert."
elif flatpak list | grep -q "$APP"; then
echo "${FLATPAK_APPS[$APP]} ist bereits als Flatpak installiert."
else
echo "🔄 Installiere ${FLATPAK_APPS[$APP]} als Flatpak..."
flatpak install -y flathub "$APP"
fi
done
# Dynamischen Vorlagen-Ordner ermitteln
TEMPLATE_DIR=$(xdg-user-dir TEMPLATES 2 >/dev/null || echo "$HOME/Vorlagen")
mkdir -p "$TEMPLATE_DIR"
# Prüfen, ob LibreOffice als Flatpak installiert ist
if flatpak list | grep -q "org.libreoffice.LibreOffice"; then
LO_CMD="flatpak run org.libreoffice.LibreOffice"
elif command -v libreoffice &>/dev/null; then
LO_CMD="libreoffice"
else
echo "❌ Fehler: LibreOffice ist weder als Flatpak noch als DEB-Paket installiert."
exit 1
fi
# LibreOffice-Vorlagen erstellen, falls nicht vorhanden
if [[ ! -f "$TEMPLATE_DIR/LibreOffice-Writer.ott" ]]; then
echo "🔄 Erstelle LibreOffice Writer-Vorlage..."
$LO_CMD --headless --convert-to ott --outdir "$TEMPLATE_DIR" /dev/null
else
echo "✅ LibreOffice Writer-Vorlage ist bereits vorhanden."
fi
if [[ ! -f "$TEMPLATE_DIR/LibreOffice-Calc.ots" ]]; then
echo "🔄 Erstelle LibreOffice Calc-Vorlage..."
$LO_CMD --headless --convert-to ots --outdir "$TEMPLATE_DIR" /dev/null
else
echo "✅ LibreOffice Calc-Vorlage ist bereits vorhanden."
fi
# Spotify-Installation
echo "🎵 Überprüfe Spotify-Installation..."
SPOTIFY_KEY="/etc/apt/trusted.gpg.d/spotify.gpg"
SPOTIFY_REPO="/etc/apt/sources.list.d/spotify.list"
if dpkg -l | grep -q "spotify-client"; then
echo "✅ Spotify ist bereits installiert."
else
echo "🔄 Installiere Spotify..."
if [[ ! -f "$SPOTIFY_KEY" ]]; then
curl -sS https://download.spotify.com/debian/pubkey_C85668DF69375001.gpg | sudo gpg --dearmor -o "$SPOTIFY_KEY"
else
echo "✅ Spotify GPG-Key ist bereits vorhanden."
fi
if [[ ! -f "$SPOTIFY_REPO" ]]; then
echo "deb http://repository.spotify.com stable non-free" | sudo tee "$SPOTIFY_REPO"
else
echo "✅ Spotify-Repository ist bereits konfiguriert."
fi
sudo apt update && sudo apt install -y spotify-client
fi
# Spotify .desktop-Datei erstellen
SPOTIFY_DESKTOP_FILE="$HOME/.local/share/applications/spotify.desktop"
mkdir -p "$HOME/.local/share/applications"
if [[ ! -f "$SPOTIFY_DESKTOP_FILE" ]]; then
echo "🔄 Erstelle Spotify .desktop-Datei..."
cat <<EOF >"$SPOTIFY_DESKTOP_FILE"
[Desktop Entry]
Name=Spotify
Exec=/usr/bin/spotify
Icon=spotify-client
Terminal=false
Type=Application
Categories=Audio;Music;
EOF
echo "✅ Spotify .desktop-Datei wurde erstellt."
else
echo "✅ Spotify .desktop-Datei ist bereits vorhanden."
fi
# Benötigte Abhängigkeiten prüfen und installieren
dependencies=(man fzf ripgrep awk w3m coreutils parallel)
for dep in "${dependencies[@]}"; do
if ! command -v "$dep" &>/dev/null; then
echo "🔄 Installiere $dep..."
sudo apt install -y "$dep"
else
echo "$dep ist bereits installiert."
fi
done
# Tealdeer (tldr-Client) installieren
if ! command -v tldr &>/dev/null; then
echo "🔄 Installiere tealdeer..."
sudo apt install -y tealdeer
else
echo "✅ Tealdeer ist bereits installiert."
fi
# tealdeer Autoupdate konfigurieren
TEALDEER_CONFIG=~/.config/tealdeer/config.toml
mkdir -p ~/.config/tealdeer
if ! grep -q "\[updates\]" "$TEALDEER_CONFIG" 2 >/dev/null; then
echo -e "\n[updates]" >>"$TEALDEER_CONFIG"
fi
if grep -q "^auto_update" "$TEALDEER_CONFIG" 2 >/dev/null; then
sed -i 's/^auto_update.*/auto_update = true/' "$TEALDEER_CONFIG"
else
echo "auto_update = true" >>"$TEALDEER_CONFIG"
fi
# Wikiman installieren, falls nicht vorhanden
if ! command -v wikiman &>/dev/null; then
echo "🔄 Installiere Wikiman..."
# Prüfen, ob `make` installiert ist
if ! command -v make &>/dev/null; then
echo "🔄 Installiere make..."
sudo apt install -y make
fi
git clone 'https://github.com/filiparag/wikiman' ~/wikiman
cd ~/wikiman || exit
# Die neueste stabile Version auschecken
git checkout "$(git describe --tags | cut -d'-' -f1)"
# Kompilieren und installieren
make all
sudo make install
# Cleanup
cd ..
rm -rf ~/wikiman
echo "✅ Wikiman wurde erfolgreich installiert!"
else
echo "✅ Wikiman ist bereits installiert."
fi
# Arch-Wiki für Wikiman installieren, falls nicht vorhanden
if ! wikiman -list | grep -q "arch"; then
echo "🔄 Installiere Arch Wiki für Wikiman..."
curl -L 'https://raw.githubusercontent.com/filiparag/wikiman/master/Makefile' -o 'wikiman-makefile'
make -f ./wikiman-makefile source-arch
sudo make -f ./wikiman-makefile source-install
sudo make -f ./wikiman-makefile clean
rm -f wikiman-makefile
else
echo "✅ Arch Wiki ist bereits installiert."
fi
echo "🔄 Installiere Standard-Programme..."
# Bildbetrachter
flatpak install flathub org.gnome.Loupe -y
xdg-mime default org.gnome.Loupe.desktop image/jpeg
xdg-mime default org.gnome.Loupe.desktop image/png
# Disk-Utility, PDF-Viewer (Okular), Softwarecenter und Flatpak-Plugin, Systemmonitor
sudo apt -y install gnome-disk-utility okular gnome-software gnome-software-plugin-flatpak gnome-system-monitor
# Okular als Standard-PDF-Viewer setzen
xdg-mime default okularApplication_pdf.desktop application/pdf
# Betterbird als Standard-Mail-Programm setzen
xdg-mime default org.betterbird.Betterbird.desktop x-scheme-handler/mailto
# Simple Scan isntallieren
flatpak install flathub org.gnome.SimpleScan -y
# Festplattenbelegungsanalyse installieren
flatpak install flathub org.gnome.baobab -y
# Camera installieren
flatpak install flathub org.gnome.Snapshot -y
# Amberol (Musik-Player) installieren
flatpak install flathub io.bassi.Amberol -y
xdg-mime default io.bassi.Amberol.desktop audio/mpeg
xdg-mime default io.bassi.Amberol.desktop audio/x-wav
xdg-mime default io.bassi.Amberol.desktop audio/flac
xdg-mime default io.bassi.Amberol.desktop audio/ogg
# VLC-Media-Player installieren
flatpak install flathub org.videolan.VLC -y
# Protokolle installieren
flatpak install flathub org.gnome.Logs -y
# Schriftarten-Viewer
flatpak install flathub org.gnome.font-viewer -y
# Taschenrechner
flatpak install flathub org.gnome.Calculator -y
# Texteditor
flatpak install flathub org.gnome.TextEditor -y
xdg-mime default org.gnome.TextEditor.desktop text/plain
xdg-mime default org.gnome.TextEditor.desktop text/x-log
xdg-mime default org.gnome.TextEditor.desktop text/markdown
# Ente Authenticator
flatpak install flathub io.ente.auth -y
# Cartridges (Gaming)
flatpak install flathub page.kramo.Cartridges -y
# Decoder (QR-Code)
flatpak install flathub com.belmoussaoui.Decoder -y
# Fragments (Torrent)
flatpak install flathub de.haeckerfelix.Fragments -y
# Impressions (Bootsticks)
flatpak install flathub io.gitlab.adhami3310.Impression -y
# Ressources (Task-Manager)
flatpak install flathub net.nokyan.Resources -y
# Secrets
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
# 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!"

View File

@ -5,6 +5,9 @@
Dieses Repository enthält Skripte um ein Linux System mit Hyprland und diversen Programmen aufzusetzen. 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. Die entsprechenden Skripte befinden sich in den Branches zur jeweiligen Distribution.
**Mit diesen Skripten kann *Tuxedo OS*, das auf Ubuntu 24.04 (Noble Numbat) basiert, mit *Hyprland* und diversen
Programmen aufgesetzt werden.**
## Anforderungen ## Anforderungen
Um die Skripte in diesem Repository auszuführen, stelle sicher, dass die folgenden Voraussetzungen erfüllt sind: Um die Skripte in diesem Repository auszuführen, stelle sicher, dass die folgenden Voraussetzungen erfüllt sind: