61 lines
2.3 KiB
Bash
61 lines
2.3 KiB
Bash
#!/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
|