Bagaimana mungkin untuk menghentikan sementara pemutaran VLC ketika headphone saya dicolokkan? Saya dapat membisukan speaker melalui ALSA, tetapi saya ingin menggunakan pemicu colokan untuk menghentikan pemutaran, seperti biasa di smartphone.
vlc
headphones
video-player
playback
HerHde
sumber
sumber
Jawaban:
Ok, jadi berdasarkan apa yang saya pelajari dari sini , saya mencoba pendekatan baru, menggunakan ACPI.
Buat skrip, untuk menjeda dan menghapus VLC:
dan letakkan yang berikut di file ini:
Sekarang mari kita buat pemicu acara (ganti
vim
dengan editor teks favorit Anda):dan tambahkan yang berikut ini:
Terakhir, restart daemon ACPI:
Saya pikir seharusnya persis apa yang Anda butuhkan, tanpa melibatkan pemungutan suara. Satu-satunya kelemahan yang dapat saya temukan dengan implementasi ini adalah jika Anda memiliki banyak pengguna yang menjalankan VLC pada saat yang sama. Saya kira dalam kasus itu, apa yang bisa terjadi adalah bahwa pendekatan ini akan secara acak berhenti dan melanjutkan salah satunya (atau mungkin tidak berhasil).
Big Kudos to @int_ua dan @Sneetsher untuk memberi saya pengetahuan penting tentang penanganan acara ACPI. Juga jempol ke @ user3073656 untuk membantu menyederhanakan prosedur.
sumber
grep -z USER /proc/$_pid/environ
sehingga akan bekerja untuk semua pengguna di mesin (dengan sesi berjalan tunggal / vlc). Saya mencari opsi seperti itu.Oke, jadi Anda perlu melakukan beberapa hal untuk ini:
Untuk (1) dan (3): Anda dapat menggunakan apa yang ditunjukkan di sini . Jawaban ini berisi prosedur kecil untuk menemukan perbedaan antara colokan yang dicolokkan dan yang dicabut, dan skrip yang dapat Anda modifikasi agar sesuai dengan kasus Anda.
Untuk (2) dan (4): Anda harus menggunakan antarmuka Dbus VLC. Kode yang relevan harus ini:
dbus-send --print-reply --session --dest=org.mpris.vlc /Player org.freedesktop.MediaPlayer.Pause
dbus-send --print-reply --session --dest=org.mpris.vlc /Player org.freedesktop.MediaPlayer.Play
Untuk jeda dan mainkan masing-masing.
Sekarang, tentang skripnya. Dalam kasus Anda, seharusnya terlihat seperti ini:
Tambahkan skrip yang dimodifikasi ini ke aplikasi startup Anda, dan Anda siap. Saya pikir itu harus melakukan apa yang Anda inginkan.
PS - Perhatikan bahwa ada cara yang lebih efisien untuk melakukan ini, seperti menggunakan
inotify
untuk mendeteksi perubahan acara (dan mungkin bahkan pendekatan lain), tetapi yang ini harus Anda mulai (dan yang lain di atas tingkat keterampilan dan pengalaman saya). Saya kira Anda bisa mulai dengan pendekatan "retas" ini, dan membangun dari sini.sumber
sleep 0.25
di akhir, yang merupakan seperempat dari penundaan kedua. Itu memudahkan CPU dan masih bekerja cukup cepat. Saya kadang-kadang menggunakan ini dalam skrip saya sendiri