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-indicator
pero 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!
xinput
necesita 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 ambosLXDE
yUnity
: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=0
y 1 respectivamentefuente
udev
regla de cualquier manera, puede ser mejor guardar el archivo en otro lugar que no sea el directorio de inicio. Por ejemplo:/usr/local/bin
o/opt/touchpad-toggle/bin/
.