#!/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