128 lines
3.8 KiB
Bash
Executable File
128 lines
3.8 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Abbrechen bei Fehlern
|
|
set -e
|
|
|
|
echo "===================================================="
|
|
echo "🚀 Starte J.A.R.V.I.S. Desktop OS - X11 Openbox Setup"
|
|
echo "===================================================="
|
|
|
|
# Benutzererkennung
|
|
REAL_USER="${SUDO_USER:-$(logname 2>/dev/null || whoami)}"
|
|
REAL_HOME=$(getent passwd "$REAL_USER" | cut -d: -f6)
|
|
|
|
if [ -z "$REAL_USER" ] || [ "$REAL_USER" = "root" ]; then
|
|
REAL_USER=$(id -nu 1000 2>/dev/null || echo "meik")
|
|
REAL_HOME=$(getent passwd "$REAL_USER" | cut -d: -f6)
|
|
fi
|
|
|
|
JARVIS_DIR="$REAL_HOME/jarvis-ai"
|
|
|
|
# 1. System aktualisieren & X11 / Openbox Pakete installieren
|
|
echo "📦 Installiere X11-Server, Openbox und Automatisierungstools..."
|
|
sudo apt update
|
|
sudo apt install -y \
|
|
xserver-xorg \
|
|
xinit \
|
|
x11-xserver-utils \
|
|
openbox \
|
|
tint2 \
|
|
rofi \
|
|
xdotool \
|
|
wmctrl \
|
|
firefox-esr \
|
|
curl \
|
|
wget \
|
|
git \
|
|
sudo \
|
|
python3 \
|
|
python3-pip \
|
|
python3-venv \
|
|
tilix \
|
|
geany \
|
|
fonts-noto-color-emoji \
|
|
pipewire \
|
|
pipewire-audio-client-libraries \
|
|
pipewire-pulse \
|
|
wireplumber \
|
|
alsa-utils \
|
|
libasound2-dev \
|
|
libportaudio2 \
|
|
unzip
|
|
|
|
# 1.1 Gruppenrechte für Audio und Grafik setzen
|
|
echo "👥 Setze Gruppenrechte für '$REAL_USER'..."
|
|
sudo usermod -aG video,render,input,audio "$REAL_USER"
|
|
|
|
# 2. Openbox Konfigurationsverzeichnis erstellen
|
|
echo "⚙️ Konfiguriere Openbox für '$REAL_USER'..."
|
|
mkdir -p "$REAL_HOME/.config/openbox"
|
|
|
|
# 3. Autostart-Datei für Openbox erstellen
|
|
cat << EOF > "$REAL_HOME/.config/openbox/autostart"
|
|
# Tint2 Taskleiste im Hintergrund starten
|
|
tint2 &
|
|
|
|
# Falls ein Hintergrundbild gewünscht ist (optional, benötigt 'feh'):
|
|
# feh --bg-scale /pfad/zum/bild.jpg &
|
|
|
|
# J.A.R.V.I.S. Sprachsteuerung (Wakeword-Skript) starten
|
|
if [ -f "$JARVIS_DIR/wakeword.py" ]; then
|
|
echo "🎙️ Starte J.A.R.V.I.S. Sprachsteuerung..." >> "$JARVIS_DIR/data/desktop.log"
|
|
"$JARVIS_DIR/venv/bin/python3" "$JARVIS_DIR/wakeword.py" >> "$JARVIS_DIR/data/wakeword.log" 2>&1 &
|
|
fi
|
|
EOF
|
|
|
|
chmod +x "$REAL_HOME/.config/openbox/autostart"
|
|
|
|
# 4. .xinitrc erstellen (ermöglicht den Start via 'startx' aus der Konsole)
|
|
cat << EOF > "$REAL_HOME/.xinitrc"
|
|
#!/bin/sh
|
|
# X11 Umgebungsvariablen setzen falls nötig
|
|
export QT_QPA_PLATFORM=xcb
|
|
export GDK_BACKEND=x11
|
|
|
|
# Openbox Session starten
|
|
exec openbox-session
|
|
EOF
|
|
|
|
chmod +x "$REAL_HOME/.xinitrc"
|
|
|
|
# Eigentumsrechte korrigieren
|
|
chown -R "$REAL_USER:$REAL_USER" "$REAL_HOME/.config" "$REAL_HOME/.xinitrc"
|
|
|
|
# 5. Virtuelle Python-Umgebung einrichten (falls noch nicht geschehen)
|
|
|
|
echo "🐍 Richte virtuelles Python-Environment ein..."
|
|
mkdir -p "$JARVIS_DIR"
|
|
python3 -m venv "$JARVIS_DIR/venv"
|
|
"$JARVIS_DIR/venv/bin/pip" install --upgrade pip
|
|
"$JARVIS_DIR/venv/bin/pip" install -r requirements.txt
|
|
|
|
####################################
|
|
# Voice setup
|
|
####################################
|
|
|
|
# Modell herunterladen
|
|
wget https://alphacephei.com/vosk/models/vosk-model-small-de-0.15.zip
|
|
# Entpacken
|
|
unzip vosk-model-small-de-0.15.zip
|
|
# Ordner umbenennen, damit das Skript ihn leicht findet
|
|
mv vosk-model-small-de-0.15 model
|
|
rm vosk-model-small-de-0.15.zip
|
|
|
|
# Piper installieren
|
|
wget https://github.com/rhasspy/piper/releases/download/v1.2.0/piper_amd64.tar.gz
|
|
tar -xf piper_amd64.tar.gz
|
|
rm piper_amd64.tar.gz
|
|
|
|
# Das eigentliche Sprachmodell (.onnx)
|
|
wget https://huggingface.co/rhasspy/piper-voices/resolve/main/de/de_DE/thorsten/high/de_DE-thorsten-high.onnx
|
|
|
|
# Die dazugehörige Konfigurationsdatei (.json)
|
|
wget https://huggingface.co/rhasspy/piper-voices/resolve/main/de/de_DE/thorsten/high/de_DE-thorsten-high.onnx.json
|
|
|
|
echo "===================================================="
|
|
echo "✅ X11 Openbox-Umgebung erfolgreich eingerichtet!"
|
|
echo "👉 Starte die grafische Oberfläche einfach mit dem Befehl: startx"
|
|
echo "====================================================" |