Files
jarvis-ai/setup_wayland_jarvis.sh

122 lines
4.3 KiB
Bash

#!/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
# 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 laden
export XDG_RUNTIME_DIR=/run/user/1000
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
# 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
# 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 "👉 Starte das System neu oder führe 'labwc' aus."
echo "===================================================="