I want to have my touchpad disabled automatically when an external mouse is connected and enabled when there is none. I have tried using touchpad-indicator
but that fails in cases when the computer has been put to sleep with a mouse connected and awoken with the mouse disconnected.
I have tried to make the following script into a daemon to solve this issue but I can't get it to work:
#!/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
I tried start-stop-daemon -S -x ./myscript.sh -b
and setsid ./myscript.sh >/dev/null 2>&1 < /dev/null &
and nohup ./myscript 0<&- &>/dev/null &
and even ./myscript.sh &
All of these return some 4-digit number, which, I guess, should be PID of the started process but when I launch lxtask there are no processes with this PID, even if I tick "view all processes". And, of course, it doesn't work!
Best Answer
The basic script you need is simply:
The script above will toggle the trackpad depending on whether a mouse is connected. When launched, it will run for ever and will check for a mouse every second, disabling or enabling the touchpad accordingly.
Now, save the script as
~/touchpad.sh
, make it executable (chmod +x ~/touchpad.sh
) and add it to your GUI session startup programs. You have not specified which desktop environment you are using but since you mentionedlxtask
, I will assume you are usingLXDE
. In any case, here are instructions for bothLXDE
andUnity
:Add the script to LXDE's autostart files
Make sure you replace "PROFILE" with the actual name of your LXDE profile, you can find out what it is by running
ls ~/.config/lxsession/
.Add the script to Unity's autostart files
Open
Startup Applications
(search in the dashboard for "Startup")Click on "Add" and then paste the path to your script in the command field: