ubuntu 18.04.2 en un Thinkpad T480
Quiero ejecutar un script udev cuando mi mouse esté conectado. Me alegra suponer que un usuario llamado tim tiene un Xsession ejecutándose (yo uso kde plasma).
El objetivo es configurar el desplazamiento del botón central para un mouse USB Logitech, incluida la conexión en caliente.
Mi regla está en:
/etc/udev/rules.d/41-usb-mouse-add.rules
ACTION=="add" \
, ATTRS{idProduct}=="c539" \
, ATTRS{idVendor}=="046d" \
, ENV{DISPLAY}=":0" \
, ENV{XAUTHORITY}="/tmp/xauth-1000-_0" \
, RUN+="/home/tim/scripts/tweak_libinput.sh"
La ubicación de XAUTHORITY se copia de lo que veo en un shell.
Tengo una llamada para iniciar sesión en el script y lo están llamando varias veces (¿por qué?). Entonces, la regla udev está funcionando, aunque esperaba que se llamara solo una vez.
Está teniendo algún efecto, porque rompe mi configuración de desplazamiento natural... ese mismo script activa el desplazamiento natural, pero después de la invocación de udev, la configuración de desplazamiento natural se restablece. Entonces es peor que fallar, en realidad está rompiendo mi configuración :)
Cuando el script se ejecuta manualmente, funciona bien. Sin importar cuantas veces lo invoque.
Editar
ls -l /tmp/xauth-1000-_0
-rw------- 1 tim tim 53 Jun 11 20:07 /tmp/xauth-1000-_0
¿Esta configuración de permisos será un problema?
Respuesta1
Es posible hacer esto con un archivo de configuración en/usr/share/X11/xorg.conf.d/41-libinput-local.conf
Estos contenidos funcionan para un dispositivo específico:
Section "InputClass"
Identifier "Logitech USB Receiver Mouse"
MatchIsPointer "on"
MatchDevicePath "/dev/input/event*"
Driver "libinput"
Option "ScrollButton" "2"
Option "ScrollMethod" "button"
Option "NaturalScrolling" "true"
EndSection
Funciona cuando el dispositivo se conecta en caliente después de que comienza la sesión y sobrevive durante la suspensión/reanudación, según informó Tim (OP).
Referencias:
- hombre(4) libinentrada
man xorg.conf
- Archlinux: Aceleración del ratón