Kode apa yang dieksekusi ketika headphone terputus?

9

Saya ingin mengeksekusi skrip pada headphone putuskan tetapi saya tidak menyukai gagasan polling konstan status ketika sudah ada beberapa kode yang dieksekusi ketika itu diubah.

int_ua
sumber

Jawaban:

9

Dalam kebanyakan sistem jika tidak semua, ACPI dapat menangani acara ini. Untuk mengujinya:

  1. Lari acpi_listen
  2. Cabut & pasang kembali headphone, contoh output: (mic / telinga berbagi di jack yang sama di laptop saya)

    jack/headphone HEADPHONE unplug
    jack/microphone MICROPHONE unplug
    jack/headphone HEADPHONE plug
    jack/microphone MICROPHONE plug
    
  3. Dimasukkan ke your-script.shdalam/etc/acpi/

  4. Tambahkan file pemicu acara untuk skrip Anda di /etc/acpi/events/

    event=jack/headphone HEADPHONE unplug
    action=/etc/acpi/your-script.sh
    

    Periksa file lain di sana untuk belajar.

  5. Anda mungkin perlu memulai kembali acpidlayanan untuk memuat kembali aturan yang diubah/etc/acpi/events/

    sudo service acpid restart
    

Referensi: man acpid

user.dz
sumber
Sekarang saya hanya perlu mencari tahu cara membuat dbus berfungsi dari skrip ACPI, tapi itu pertanyaan yang berbeda.
int_ua
2
@int_ua Anda perlu menulis DBUS_SESSION_BUS_ADDRESSvariabel environment ke dalam file di homedir Anda dengan skrip yang dimulai ~/.config/autostart/dbus.desktop. Maka Anda dapat lari su YOURUSER -c "DBUS_SESSION_BUS_ADDRESS=$(cat ~/.dbus_address) amixer ......."dari/etc/acpi/your-script.sh
Germar
Hai, saya menulis skrip untuk menampilkan notifikasi. Ikuti persis apa yang Anda katakan. Script saya mengeksekusi notify-send "Headphone terhubung" pada acara plug. Tapi sepertinya itu tidak berhasil. askubuntu.com/questions/877804/…
thewebjackal
1

Versi skrip Anda sekarang berisi sleep 0.25perintah.

sleeptimer berbasis sehingga tidak menggunakan setiap siklus pengolahan saat tidur ...

Memang menggunakan sedikit CPU untuk mengatur timer, tetapi sleep 1(tidur 1 detik), sleep 60(tidur sebentar) dan sleep 86400(tidur selama sehari) semua menggunakan siklus CPU nomor yang sama.

Namun menggunakan ACPI adalah solusi yang tepat karena ACPI didorong oleh peristiwa dan bukan berdasarkan polling.

Fabby
sumber