Saya memiliki pengaturan layar ganda pada laptop saya (menggunakan 12,04 LTS) menggunakan layar yang terhubung HDMI. Semuanya berfungsi dengan baik, tetapi setiap kali saya menghubungkan / mencabut kabel saya harus pergi ke preferensi Suara dan mengubah perangkat output suara secara manual.
Apakah ada cara untuk mengubah perangkat output suara pada koneksi / pemutusan kabel, jadi ketika saya menghubungkan display saya output suara diatur ke HDMI dan ketika saya mencabutnya suara kembali ke speaker laptop?
Jawaban:
Demi kepentingan orang-orang yang menemukan pertanyaan ini - solusi Salem hampir bekerja untuk saya pada 13,04, saya akhirnya mengumpulkan potongan-potongan dari seluruh web, saya pikir pemecah kesepakatan bagi saya adalah kurangnya variabel lingkungan PULSE_SERVER
Inilah solusi lengkap saya, yang pada dasarnya mengulangi solusi Salem dengan beberapa bagian yang hilang. Saya juga menyebutnya sebagai skrip shell (terlepas dari kecintaan saya pada Python) karena pada awalnya saya takut skrip Python saya mengalami masalah jalur impor:
(Sama seperti jawaban Salem) Buat file
/etc/udev/rules.d/hdmi_sound.rules
sebagai root dengan konten:Buat file
/usr/local/bin/hdmi_sound_toggle
sebagai root dengan konten:Kemudian membuatnya bisa dieksekusi dengan
chmod 0755 /usr/local/bin/hdmi_sound_toggle
Saya mencoba membuat skrip ini se-generik mungkin, tetapi Anda mungkin masih perlu mengubah beberapa baris, seperti jalur file HDMI_STATUS atau profil yang digunakan. Anda dapat melihat daftar profil dengan menjalankan
pactl list cards
dan melihat di bawah Profil.Perhatikan bahwa skrip gagal untuk saya ketika saya menghapus kata kunci "ekspor" ketika mengatur PULSE_SERVER, saya pikir pactl sedang mencari variabel env
Jangan lupa memuat ulang aturan udev Anda:
sudo udevadm control --reload-rules
Perbarui skrip ini diperbarui untuk 14,04. Sebelum itu, Anda akan menggunakan USER_NAME alih-alih USER_ID di mana-mana
sumber
| uniq
perintah USER_NAME. Perhatikan juga bahwa pengaturan suara di Ubuntu bisa menipu. Saya tidak melihat perubahan pada panel pengaturan suara, tetapi begitu saya memainkan sesuatu, audio akan beralih bolak-balik dengan lancar saya juga memperhatikan bahwa setelah beberapa kali mencolokkan dan mencabut HDMI, skrip berhenti dijalankan (mungkin beberapa semacam bug di udev).| sort -u
ke nama pengguna karena mengatakan opsi tambahan elemer elemer --- Nama pengguna saya. Sama seperti solusi FuegoFro di penghujung hari.| grep -v pts
, karena saya benar-benar mendapatkan pengguna "root" di sana juga — karena fakta bahwa saya mengedit skrip via kate, yang memiliki terminal root terbuka.Saya akhirnya berhasil membuat pekerjaan ini menggunakan
udev
. Jadi jika seseorang menginginkan perilaku yang sama di sini adalah langkah-langkahnya:Pertama kita perlu membuat file
/etc/udev/rules.d/hdmi_sound.rules
dengan konten berikut:ini akan membuat
udev
eksekusi skriphdmi_sound_toggle
setiap kali ada perubahan dalam koneksi HDMI. Skrip itu harus memiliki izin eksekusi dan isinya adalah sebagai berikut:Mungkin ini dapat dengan mudah dibuat dalam bash, tetapi karena bahasa utama saya adalah python, saya menggunakannya. Semuanya berfungsi kecuali notifikasi: tidak muncul, saya benar-benar tidak tahu mengapa. Jika seseorang tahu cara memperbaikinya, tolong katakan sesuatu.
Catatan: nama skrip / aturan udev dapat diubah, tetapi Anda harus menggunakan path lengkap.
sumber
Berdasarkan Salem 's jawaban dan daniel jawaban' s
Saya mengambil jawaban Salem dan jawaban daniel dan membuat beberapa perubahan yang diperlukan, solusi mereka tidak berhasil untuk saya di luar kotak:
(Mirip dengan jawaban Salem).
Buat file
/etc/udev/rules.d/hdmi_sound.rules
sebagai root dengan konten:Catatan
ACTION=="change",
tidak ada!Buat file
/usr/local/bin/hdmi_sound_toggle
sebagai root dengan konten:Catatan USER_NAME =
who | grep "(:0)" | cut -f 1 -d ' '| sort -u
Saya menambahkan| sort -u
karena jika tidak kembali dengan -elemer elemer elemer
namaku 3 kali.Kemudian membuatnya bisa dieksekusi dengan
chmod 0755 /usr/local/bin/hdmi_sound_toggle
Jangan lupa memuat ulang aturan udev Anda:
sudo udevadm control --reload-rules
Penting skrip ini diperbarui untuk 14,04. Sebelum itu, Anda akan menggunakan USER_NAME alih-alih USER_ID di mana-mana
Penghargaan: Salem dan daniel .
sumber
Ubuntu 16.04 - 17.04 Jawaban
Ini berfungsi untuk Ubuntu 16.04 - 17.04 yang memperkenalkan bug dengan Pulse Audio 8. Buat file
hotplugtv
(atauhotplug-hdmi
jika Anda mau) dan salin di baris berikut:PENTING: Ubah nama pengguna "rick" menjadi nama pengguna Anda.
Untuk memanggil skrip ini dari
udev
selama peristiwa hot-plug membuat file yang/etc/udev/rules.d/99-hotplugtv.rules
berisi:Ubah
/home/rick/bin/
ke jalur tempat Anda meletakkanhotplugtv
skrip.sumber