Quiero que mi panel táctil se deshabilite automáticamente cuando se conecte un mouse externo y se habilite cuando no haya ninguno. He intentado usarlo, touchpad-indicatorpero eso falla en los casos en que la computadora se ha dormido con un mouse conectado y despertado con el mouse desconectado.
Intenté convertir el siguiente script en un demonio para resolver este problema, pero no puedo hacer que funcione:
#!/bin/bash
declare -i TID
declare -i MID
TID=`xinput list | grep -Eo 'Touchpad\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'`
MID=`xinput list | grep -Eo 'Mouse\s*id\=[0-9]{1,2}' | grep -Eo '[0-9]{1,2}'`
if [ $MID -gt 0 ]
then
xinput disable $TID
else
xinput enable $TID
fi
Lo intenté start-stop-daemon -S -x ./myscript.sh -b
y setsid ./myscript.sh >/dev/null 2>&1 < /dev/null &
e nohup ./myscript 0<&- &>/dev/null &
incluso./myscript.sh &
Todos estos devuelven un número de 4 dígitos, que, supongo, debería ser PID del proceso iniciado, pero cuando ejecuto lxtask no hay procesos con este PID , incluso si marco "ver todos los procesos". Y, por supuesto, ¡no funciona!

xinputnecesita un servidor X en ejecución, y la mayoría de los métodos para ejecutar cosas como demonios no tienen conocimiento ni capacidad para conectarse a X. En tercer lugar, y la razón principal por la que siempre debe explicar lo que está tratando de hacer es que muy a menudo la solución que alguien está intentando aplicar no es realmente la forma de hacerlo y terminas haciendo la pregunta incorrecta, comúnmente conocida como el problema XY .Respuestas:
El script básico que necesita es simplemente:
La secuencia de comandos anterior alternará el panel táctil dependiendo de si un mouse está conectado. Cuando se inicie, se ejecutará para siempre y buscará un mouse cada segundo, deshabilitando o habilitando el panel táctil en consecuencia.
Ahora, guarde el script como
~/touchpad.sh, hágalo ejecutable (chmod +x ~/touchpad.sh) y agréguelo a sus programas de inicio de sesión de GUI. No ha especificado qué entorno de escritorio está utilizando, pero desde que lo mencionólxtask, supondré que lo está utilizandoLXDE. En cualquier caso, aquí hay instrucciones para ambosLXDEyUnity:Agregue el script a los archivos de inicio automático de LXDE
Asegúrese de reemplazar "PERFIL" con el nombre real de su perfil LXDE , puede averiguar cuál es ejecutando
ls ~/.config/lxsession/.Agregue el script a los archivos de inicio automático de Unity
Abrir
Startup Applications(busque en el panel de control "Inicio")Haga clic en "Agregar" y luego pegue la ruta a su script en el campo de comando:
fuente
Bien, hice una regla de udev para ello, y es, como dijo @terdon, una forma mucho más limpia
Entonces, gracias a esta guía , creé un archivo "touchpad_toggle.rules" en /etc/udev/rules.d/ (requiere acceso de root) y lo llené con dos líneas:
¡No olvides reemplazar "nombre de usuario" con tu nombre de usuario!
El contenido de estos scripts de shell dentro y fuera de la consola es solo una versión castrada del script en mi pregunta. Ejemplo - off.sh:
Tendrás que usar xinput enable $ TID en on.sh
Y no olvide agregar el script en mi pregunta (o la que sugirió @terdon, pero sin bucle) al inicio automático de la sesión como le dijo en su respuesta.
Eso es todo, pero tengo que agregar una cosa:
Si tiene un panel táctil Synaptics (tengo Elantech, por lo que no es adecuado para mí), puede reemplazar sus scripts (rutas en las que escribe después de RUN + =) con un comando simple
/usr/bin/synclient TouchpadOff=0y 1 respectivamentefuente
udevregla de cualquier manera, puede ser mejor guardar el archivo en otro lugar que no sea el directorio de inicio. Por ejemplo:/usr/local/bino/opt/touchpad-toggle/bin/.