Apakah ada cara mewah untuk mendapatkan notifikasi volume OSD untuk bekerja dengan pulseaudio dan ALSA? Saat ini desktop standar hanya bekerja dengan pulseaudio untuk saya. Bagaimana dengan OSD vertikal yang dapat saya gunakan sebagai setetes penggantian atau panggilan dari baris perintah untuk melaporkan perubahan dalam persentase sewenang-wenang secara grafis, sebagai bilah yang bergerak naik dan turun?
Alasan mengapa saya memerlukannya untuk bekerja dengan ALSA dan pulseaudio adalah karena saya menggunakan aplikasi WINE yang tidak cocok dengan pulsa, jadi saya mematikan pulsa sebelum memulai aplikasi Windows untuk menggunakan ALSA tanpa lapisan abstraksi ekstra. Ketika saya menyadari bahwa tombol volume pada keyboard saya tidak berfungsi tanpa pulsa, saya menulis beberapa skrip bash yang saya panggil dengan Compiz atau Openbox (masing-masing dikonfigurasi melalui CCSM dan lxde-rc.xml) untuk menangkap sinyal keluar dari pulseaudio --check
dan kemudian sesuaikan volume sesuai:
vol_step_up
#!/bin/bash
pulseaudio --check
if [ $? -eq 0 ] ; then
pactl set-sink-volume 0 -- +3db
else
amixer -c0 set Master playback 3+
fi
vol_step_down
#!/bin/bash
pulseaudio --check
if [ $? -eq 0 ] ; then
pactl set-sink-volume 0 -- -3db
else
amixer -c0 set Master playback 3-
fi
Skrip bekerja dengan baik dan memetakan ke tombol dengan baik, tetapi saya tidak memiliki cara yang baik untuk melihat umpan balik visual lagi - bahkan dengan pulseaudio karena saya menangkap peristiwa tombol (XF86AudioLowerVolume, dll.). Jelas saya hanya bisa memetakan kunci volume ALSA ke sesuatu yang lain, tetapi tidak ada gunanya menduplikasi tombol pintas.
Saya memang menemukan kontrol volume python yang bisa saya panggil dalam skrip di atas:
https://github.com/fishman/utils/blob/master/pvol.py
pvol.py -s
menunjukkan level volume saat ini di layar untuk ALSA dan pulseaudio, tetapi sangat kecil dibandingkan dengan OSD gnome yang saya gunakan, dan ini bukan vertikal (bilah di atas, OSD lama di bawah):
Jadi, saya membuatnya lebih besar dan menjatuhkannya di sekitar:
Tetapi, bahkan dengan mengalihkan orientasi ke yang vertikal, tema GTK standar biru tidak cukup apik seperti VLC (lihat di bawah).
Banyak dari apa yang saya temukan dalam mencari implementasi OSD adalah posting tentang perintah notify-send yang tidak memiliki keseluruhan konsep progress bar. Jika tidak, sebagian besar bilah horizontal (dan banyak penghitung placeholder dalam skrip bash). Benar-benar semua yang perlu saya lakukan adalah memanggil amix & pactl, jadi sesuatu yang sederhana seperti progress bar gtk di pvol.py akan bagus - tidak begitu biru dan tidak tepat di tengah layar.
VLC memiliki contoh bagus tentang apa yang ada dalam pikiran saya ketika Anda menggulir roda mouse dalam mode layar penuh:
Ini jauh lebih sedikit obstruktif daripada kotak biasa yang duduk di tengah layar:
Analogi slider horizontal keseluruhan tidak pernah masuk akal bagi saya di luar audio panning antara speaker kiri dan kanan.
Lagi pula, bagaimana mungkin notifikasi desktop default dipanggil (terutama LXDE)? Saya melihat banyak posting tentang mengkonfigurasi acara pers utama, tetapi tidak banyak tentang skrip apa yang dipicu oleh peristiwa tersebut. Apa pilihan lain di luar sana di departemen mewah vertikal?
Juga, apakah ada beberapa paket yang harus saya hapus untuk mencegah konflik muncul antara peristiwa yang saya tangani melalui scripting dan compiz atau perintah openbox?
Pembaruan: Demi mencari tahu OSD apa yang saya gunakan saat ini, saya tidak langsung mengubah cara saya menangani tombol bisu. Membunuh xfce4-notifyd dan kemudian menekan tombol mute memunculkan proses xfce4-notifyd baru, jadi saya menduga ikon speaker besar berasal dari sesuatu seperti xfce4-volumed, tapi saya tidak benar-benar menginstal paket itu ... Ah ha! Membunuh gnome-settings-daemon menghentikan OSD besar di tengah layar.
Jawaban:
Baiklah, dengan risiko menjawab pertanyaan saya sendiri, saya datang dengan versi pqt pyqt yang diretas bersama dari tautan dalam pertanyaan di atas. Jika tidak ada yang lain, mungkin orang lain dapat memperbaiki kode saya. Akhirnya, saya berencana untuk menyingkirkan bagian-bagian dalam skrip di bawah ini yang tidak digunakan atau untuk mengambil skrip bash dari persamaan dan meminta satu skrip pyqt menangani semua peristiwa tombol. Saat ini, OSD time out dengan laju konstan dari tombol pertama yang ditekan alih-alih bertahan untuk waktu yang tetap setelah tombol terakhir ditekan.
Cukup salin, tempel, dan simpan file (dengan nama yang dicetak tebal), letakkan semuanya di direktori yang sama, tetapkan bit yang dapat dieksekusi, dan ubah panggilan sistem dalam skrip pyqt sesuai dengan tempat Anda menyimpannya, atau masukkan semuanya ke dalam direktori yang ada di jalur Anda. Kemudian petakan skrip shell ke perintah Compiz, pintasan Openbox, atau yang serupa, dan ubah skrip pyqt jika Anda tidak menggunakan tombol volume keyboard multimedia.
Catatan: Nama kelas Qvol adalah judul yang berfungsi, dan saya tidak repot-repot mengubahnya. Harap perhatikan juga bahwa tombol mute tidak dapat ditangani - Ini hanyalah prototipe untuk mengekspresikan kemungkinan jalan untuk memenuhi fitur yang diminta, dan saat ini tidak terkait dengan proyek apa pun yang di-host atau model pengembangan standar. Segala jenis pengembangan signifikan yang berasal dari kode di bawah ini mungkin seharusnya berasal dari Sourceforge, GitHub atau situs web proyek. Yang mengatakan, jangan ragu untuk mengedit jawaban ini atau untuk menyarankan proyek yang ada yang memungkinkan memiliki fungsi dan desain yang serupa.
vol_step_down
vol_step_up
pqvol
sumber