Chcę wykonać skrypt na słuchawkach rozłączonych, ale nie podoba mi się pomysł ciągłego odpytywania o status, gdy kod jest już wykonywany po jego zmianie.
Chcę wykonać skrypt na słuchawkach rozłączonych, ale nie podoba mi się pomysł ciągłego odpytywania o status, gdy kod jest już wykonywany po jego zmianie.
Odpowiedzi:
W większości systemów, jeśli nie wszystkie, ACPI może obsłużyć to zdarzenie. Aby to sprawdzić:
acpi_listenOdłącz i ponownie podłącz słuchawki, przykładowe wyjście: (mikrofon / uszy współdzielą to samo gniazdo w moim laptopie)
jack/headphone HEADPHONE unplug
jack/microphone MICROPHONE unplug
jack/headphone HEADPHONE plug
jack/microphone MICROPHONE plug
umieścić your-script.shw/etc/acpi/
Dodaj plik wyzwalacza zdarzenia dla skryptu w /etc/acpi/events/
event=jack/headphone HEADPHONE unplug
action=/etc/acpi/your-script.sh
Sprawdź inne pliki, z których możesz się uczyć.
Może być konieczne ponowne uruchomienie acpidusługi, aby ponownie załadować zmienione reguły w/etc/acpi/events/
sudo service acpid restart
Odniesienie: man acpid
DBUS_SESSION_BUS_ADDRESSzmienną środowiskową do pliku w swoim katalogu głównym za pomocą skryptu uruchomionego ~/.config/autostart/dbus.desktop. Następnie można uruchomić su YOURUSER -c "DBUS_SESSION_BUS_ADDRESS=$(cat ~/.dbus_address) amixer ......."z/etc/acpi/your-script.sh
Obecna wersja skryptu zawiera teraz sleep 0.25polecenie.
sleepjest oparty na zegarze, więc nie używa żadnych cykli przetwarzania podczas snu…
Używa bardzo małej ilości procesora do skonfigurowania timera, ale sleep 1(spać 1 sekundę), sleep 60(spać przez minutę) i sleep 86400(spać przez jeden dzień) wszystkie używają tej samej liczby cykli procesora.
Korzystanie z ACPI jest jednak idealnym rozwiązaniem, ponieważ ACPI jest sterowane zdarzeniami zamiast odpytywania.