#!/bin/bash
# Wendet gespeicherte Mauseinstellungen beim Start an
# Speichere als: files/apply-mouse-settings.sh

CONFIG_FILE="$HOME/.config/mouse-settings/settings.ini"

# Prüfe ob Konfigurationsdatei existiert
if [ ! -f "$CONFIG_FILE" ]; then
    exit 0
fi

# Warte kurz, bis X11 bereit ist
sleep 2

# Lese Geschwindigkeit aus Config
SPEED=$(awk -F' = ' '/^speed/ {print $2}' "$CONFIG_FILE")

if [ -z "$SPEED" ]; then
    exit 0
fi

# Konvertiere 0-100 zu verschiedenen Formaten
LIBINPUT_SPEED=$(echo "scale=2; ($SPEED / 50.0) - 1.0" | bc)  # -1.0 bis 1.0
EVDEV_ACCEL=$(echo "scale=2; $SPEED / 10.0" | bc)  # 0 bis 10
EVDEV_DECEL=$(echo "scale=2; 10.0 / $EVDEV_ACCEL" | bc 2>/dev/null || echo "1.0")  # Umkehrwert
MATRIX_SCALE=$(echo "scale=2; $SPEED / 50.0" | bc)  # 0 bis 2.0

# Finde ALLE Maus-IDs (alle Pointer mit 'mouse' im Namen)
MOUSE_IDS=$(xinput list | grep -i pointer | grep -v "Virtual core" | grep -i mouse | grep -o 'id=[0-9]*' | cut -d= -f2)

if [ -n "$MOUSE_IDS" ]; then
    SUCCESS_COUNT=0

    # Wende Einstellungen auf ALLE Mäuse an
    for MOUSE_ID in $MOUSE_IDS; do
        # Methode 1: Versuche libinput (modern)
        if xinput set-prop "$MOUSE_ID" "libinput Accel Speed" "$LIBINPUT_SPEED" 2>/dev/null; then
            echo "Maus $MOUSE_ID: Geschwindigkeit gesetzt (libinput): $SPEED%"
            SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
        # Methode 2: Versuche evdev (älter)
        elif xinput set-prop "$MOUSE_ID" "Device Accel Constant Deceleration" "$EVDEV_DECEL" 2>/dev/null; then
            echo "Maus $MOUSE_ID: Geschwindigkeit gesetzt (evdev): $SPEED%"
            SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
        # Methode 3: Versuche Coordinate Transformation Matrix (Fallback für Logitech etc.)
        # WICHTIG: Matrix-Werte müssen als einzelne Argumente übergeben werden
        elif xinput set-prop "$MOUSE_ID" "Coordinate Transformation Matrix" \
             $MATRIX_SCALE 0 0 0 $MATRIX_SCALE 0 0 0 1 2>/dev/null; then
            echo "Maus $MOUSE_ID: Geschwindigkeit gesetzt (matrix): $SPEED%"
            SUCCESS_COUNT=$((SUCCESS_COUNT + 1))
        else
            echo "Warnung: Konnte Geschwindigkeit für Maus $MOUSE_ID nicht setzen"
        fi
    done

    if [ $SUCCESS_COUNT -eq 0 ]; then
        echo "Warnung: Konnte Mausgeschwindigkeit für keine Maus setzen"
    fi
else
    echo "Keine Maus gefunden"
fi
