#!/bin/bash # Abbrechen bei Fehlern set -e echo "====================================================" echo "🚀 Starte Debian 13 Automated Wayland & Jarvis Setup" echo "====================================================" # NEU UND KUGELSICHER: REAL_USER="${SUDO_USER:-$(logname 2>/dev/null || whoami)}" REAL_HOME=$(getent passwd "$REAL_USER" | cut -d: -f6) # Sicherheitsprüfung: Falls immer noch leer oder root (falls als echter root eingeloggt) if [ -z "$REAL_USER" ] || [ "$REAL_USER" = "root" ]; then # Fallback auf den ersten echten User im System (ID 1000) REAL_USER=$(id -nu 1000 2>/dev/null || echo "meik") REAL_HOME=$(getent passwd "$REAL_USER" | cut -d: -f6) fi # 1. System aktualisieren & Basispakete installieren echo "📦 Aktualisiere Paketquellen und installiere Systemkomponenten..." sudo apt update sudo apt install -y labwc firefox-esr curl wget git sudo python3 python3-pip python3-venv original-awk tilix geany waybar # 1.1 Gruppenrechte für Grafik und Eingabe vergeben echo "👥 Füge Benutzer '$REAL_USER' zu den Grafik- und Input-Gruppen hinzu..." sudo usermod -aG video,render,input "$REAL_USER" # 2. Architektur erkennen und wdotool installieren ARCH=$(uname -m) echo "🔍 Erkannte Systemarchitektur: $ARCH" if [ "$ARCH" = "x86_64" ]; then echo "📥 Installiere vorkompiliertes .deb für amd64..." wget https://github.com/cushycush/wdotool/releases/download/v0.5.3/wdotool_0.5.3-1_amd64.deb -O /tmp/wdotool.deb sudo apt install -y /tmp/wdotool.deb rm /tmp/wdotool.deb elif [ "$ARCH" = "aarch64" ] || [ "$ARCH" = "arm64" ]; then echo "📥 Installiere via offizieller Shell-Installer (Kompilierung/Binary für arm64)..." curl --proto '=https' --tlsv1.2 -LsSf https://github.com/cushycush/wdotool/releases/download/v0.5.3/wdotool-installer.sh | sh else echo "❌ Unbekannte Architektur: $ARCH. Installation abgebrochen." exit 1 fi # 3. Den realen Installationspfad von wdotool ermitteln echo "🛠️ Konfiguriere globalen wdotool-Wrapper..." sleep 1 if [ -f "/usr/bin/wdotool" ]; then REAL_WDOTOOL="/usr/bin/wdotool" elif [ -f "$HOME/.cargo/bin/wdotool" ]; then REAL_WDOTOOL="$HOME/.cargo/bin/wdotool" elif [ -f "$HOME/.local/bin/wdotool" ]; then REAL_WDOTOOL="$HOME/.local/bin/wdotool" else REAL_WDOTOOL=$(which wdotool || true) fi if [ -z "$REAL_WDOTOOL" ]; then echo "❌ Fehler: wdotool wurde im System nicht gefunden!" exit 1 fi # Verschiebe die echte Binary an einen sicheren Ort, um Platz für den Wrapper zu machen sudo mv "$REAL_WDOTOOL" /usr/local/bin/wdotool.real # 4. Den intelligenten Umgebungsvariablen-Wrapper erstellen sudo cat << 'EOF' | sudo tee /usr/local/bin/wdotool > /dev/null #!/bin/bash # Automatische Wayland-Umgebung dynamisch für den ausführenden User laden export XDG_RUNTIME_DIR=/run/user/$(id -u) export WAYLAND_DISPLAY=wayland-0 # Transparent an die echte Binary übergeben exec /usr/local/bin/wdotool.real "$@" EOF # Wrapper ausführbar machen sudo chmod +x /usr/local/bin/wdotool # 5. Desktop-Konfiguration (.config) im Home-Verzeichnis einrichten echo "📂 Konfiguriere labwc Autostart..." mkdir -p ~/.config/labwc # Autostart-Datei schreiben (mit funktionierenden Grafik-Parametern für Firefox) cat << 'EOF' > ~/.config/labwc/autostart # Terminal starten tilix & # Firefox absturzsicher im Software-Render-Modus starten MOZ_WEBRENDER=software MOZ_ENABLE_WAYLAND=1 firefox-esr & EOF # Autostart ausführbar machen chmod +x ~/.config/labwc/autostart # Deutsches Tastaturlayout für Wayland festlegen echo "📂 Konfiguriere Tastaturlayout..." cat << 'EOF' > "$REAL_HOME/.config/labwc/environment" # Deutsches Tastaturlayout erzwingen XKB_DEFAULT_LAYOUT=de EOF # 7. Auto-Start und Software-Rendering in .profile eintragen (Idempotent prüfen) echo "⚙️ Richte ausfallsicheren Auto-Start für labwc in .profile ein..." if ! grep -q "labwc" "$REAL_HOME/.profile"; then cat << 'EOF' >> "$REAL_HOME/.profile" # labwc mit Software-Rendering starten, wenn die Anmeldung auf TTY1 erfolgt if [ "$(tty)" = "/dev/tty1" ]; then export WLR_RENDERER=pixman export WLR_NO_HARDWARE_CURSORS=1 export LIBGL_ALWAYS_SOFTWARE=1 dbus-run-session labwc > ~/labwc.log 2>&1 fi EOF fi # 7. Waybar Taskleiste mit Schnellstartern einrichten echo "📊 Konfiguriere Waybar Taskleiste mit Schnellstartern..." mkdir -p "$REAL_HOME/.config/waybar" # Waybar Config schreiben (Mit dedizierten Startern für Terminal und Firefox) cat << 'EOF' > "$REAL_HOME/.config/waybar/config" { "layer": "top", "position": "bottom", "height": 34, "modules-left": ["custom/terminal", "custom/browser", "wlr/taskbar"], "modules-right": ["clock"], "custom/terminal": { "format": "📁 Term", "on-click": "tilix", "tooltip": false }, "custom/browser": { "format": "🌐 Web", "on-click": "MOZ_WEBRENDER=software MOZ_ENABLE_WAYLAND=1 firefox-esr", "tooltip": false }, "wlr/taskbar": { "format": "{icon}", "icon-size": 16, "on-click": "activate", "on-click-right": "minimize" }, "clock": { "format": "%H:%M:%S", "interval": 1 } } EOF # Waybar Style schreiben cat << 'EOF' > "$REAL_HOME/.config/waybar/style.css" * { font-family: sans-serif; font-size: 12px; } window#waybar { background-color: #1e293b; color: white; border-top: 1px solid #334155; } #custom-terminal, #custom-browser { padding: 0 8px; background: #334155; margin: 3px 2px; border-radius: 3px; } #custom-terminal:hover, #custom-browser:hover { background: #475569; } #taskbar button { padding: 0 10px; color: #94a3b8; } #taskbar button.active { background-color: #0f172a; color: #38bdf8; } #clock { padding: 0 15px; background-color: #0f172a; } EOF # Autostart erweitern, falls waybar noch nicht drin steht if ! grep -q "waybar" "$REAL_HOME/.config/labwc/autostart"; then sed -i '1i\waybar &' "$REAL_HOME/.config/labwc/autostart" fi # Rechte für das Home-Verzeichnis korrigieren, falls sudo etwas verändert hat chown -R "$REAL_USER:$REAL_USER" "$REAL_HOME/.config" chown "$REAL_USER:$REAL_USER" "$REAL_HOME/.profile" echo "====================================================" echo "✅ Setup erfolgreich abgeschlossen!" echo "👉 Bitte starte das System neu." echo "===================================================="