Chcę, aby mój touchpad był automatycznie wyłączany, gdy podłączona jest zewnętrzna mysz, i włączany, gdy nie ma żadnej. Próbowałem używać, touchpad-indicator
ale to się nie udaje w przypadkach, gdy komputer został uśpiony z myszą podłączoną i obudzoną z myszą odłączoną.
Próbowałem przekształcić następujący skrypt w demona, aby rozwiązać ten problem, ale nie mogę go uruchomić:
#!/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
próbowałem start-stop-daemon -S -x ./myscript.sh -b
i setsid ./myscript.sh >/dev/null 2>&1 < /dev/null &
a nohup ./myscript 0<&- &>/dev/null &
nawet./myscript.sh &
Wszystkie zwracają jakąś 4-cyfrową liczbę, która, jak sądzę, powinna być PID uruchomionego procesu, ale kiedy uruchamiam lxtask, nie ma żadnych procesów z tym PID , nawet jeśli zaznaczę „wyświetl wszystkie procesy”. I oczywiście to nie działa!
xinput
potrzebuje działającego serwera X i większość metod uruchamiania rzeczy, ponieważ demony nie mają wiedzy ani możliwości łączenia się z X. Po trzecie, a głównym powodem, dla którego zawsze powinieneś wyjaśniać, co próbujesz zrobić, jest to bardzo często rozwiązanie to, że ktoś próbuje się zgłosić, nie jest tak naprawdę sposobem na załatwienie sprawy, a ty ostatecznie zadajesz złe pytanie, powszechnie znane jako problem XY .Odpowiedzi:
Podstawowy skrypt, którego potrzebujesz to po prostu:
Powyższy skrypt przełącza gładzik w zależności od tego, czy mysz jest podłączona. Po uruchomieniu będzie działał na zawsze i będzie sprawdzał mysz co sekundę, odpowiednio wyłączając lub włączając touchpad.
Teraz zapisz skrypt jako
~/touchpad.sh
, ustaw go jako wykonywalny (chmod +x ~/touchpad.sh
) i dodaj go do programów startowych sesji GUI. Nie określiłeś używanego środowiska pulpitu, ale ponieważ wspomniałeślxtask
, założę się, że używaszLXDE
. W każdym razie oto instrukcje dla obuLXDE
iUnity
:Dodaj skrypt do plików autostartu LXDE
Upewnij się, że zastąpiłeś „PROFIL” rzeczywistą nazwą swojego profilu LXDE , możesz dowiedzieć się, co to jest, uruchamiając
ls ~/.config/lxsession/
.Dodaj skrypt do plików autostartu Unity
Otwórz
Startup Applications
(wyszukaj w panelu „Uruchomienie”)Kliknij „Dodaj”, a następnie wklej ścieżkę do skryptu w polu poleceń:
źródło
Okej, postanowiłem to udev i jest to, jak powiedział @terdon, znacznie czystszy sposób
Dzięki temu przewodnikowi utworzyłem plik „touchpad_toggle.rules” w /etc/udev/rules.d/ (wymaga dostępu do katalogu głównego) i wypełniłem go dwoma wierszami:
Nie zapomnij zastąpić nazwy użytkownika nazwą użytkownika!
Treść tych włączanych i wyłączanych skryptów powłoki jest po prostu wykastrowaną wersją skryptu w moim pytaniu. Przykład - off.sh:
Musisz użyć xinput enable $ TID w pliku on.sh
I nie zapomnij dodać skryptu do mojego pytania (lub sugerowanego przez @terdona, ale bez pętli) do automatycznego uruchamiania sesji, tak jak powiedział ci w swojej odpowiedzi.
To jest to, ale muszę dodać jedną rzecz:
Jeśli masz touchpad Synaptics (mam Elantech, więc nie jest to dla mnie odpowiednie), możesz zastąpić swoje skrypty (ścieżki, do których piszesz po RUN + =) za pomocą prostej komendy
/usr/bin/synclient TouchpadOff=0
i odpowiednio 1źródło
udev
regułę w jakikolwiek sposób, może być lepiej zapisać plik w innym miejscu niż katalog domowy. Na przykład:/usr/local/bin
lub/opt/touchpad-toggle/bin/
.