Cara mengizinkan fungsi tombol saat desktop terkunci

20

Apakah mungkin untuk memungkinkan tombol volume keyboard untuk terus bekerja ketika desktop Anda terkunci? Saat ini, perilaku default menonaktifkan semua tombol fungsi khusus hingga desktop tidak terkunci. Saya suka menggunakan PC saya sebagai pemutar musik dan membiarkannya terkunci ketika saya tidak langsung berada di konsol, tetapi saya masih ingin membiarkan orang mengontrol volume jika sebuah lagu terlalu keras.

Cerin
sumber
+1! Saya bertaruh bahwa efek samping dari ini (jika mungkin) adalah untuk tidak membangunkan kembali layar tidur, yang merupakan sesuatu yang pernah saya tanyakan sebelumnya.
David Oneill
1
Saya ingin memiliki fungsi ini juga. Tidak hanya untuk volume, tetapi juga untuk tombol kontrol musik (putar, jeda; berikutnya; sebelumnya).
jPlatte
Sebagai tambahan, ketika saya melakukan upgrade saya mengubah layar saya ke pengaturan terendah. Setengah jalan melalui instalasi saya tidak bisa menyalakannya kembali. Dibuat untuk pengalaman yang menarik ..
Will Richardson
Saya bertanya-tanya apakah kunci media dapat dibuat menjadi semacam perangkat LIRC palsu, berpura-pura menjadi remote control ... Setidaknya secara konseptual masuk akal, kan?
taneli

Jawaban:

9

Agak dari plug memalukan, tetapi karena tampaknya tidak ada solusi yang ada, dan karena tugas itu tampaknya relatif lurus ke depan, saya menulis daemon Python sederhana untuk memperbaiki masalah. Ia menggunakan API python-xlib untuk menangkap penekanan tombol di seluruh sistem dan kemudian menjalankan perintah shell kustom. Ini mengasumsikan pengaturan dasar Debian / Ubuntu, tetapi mungkin akan bekerja pada sebagian besar sistem Linux dengan beberapa penyesuaian.

Untuk kasus saya, tombol volume atas / bawah memetakan ke kode 122/123, sehingga perintah yang sesuai untuk menurunkan atau menambah volume hanya ketika desktop dikunci adalah:

gnome-screensaver-command -q | grep "is active" && bash -c '/usr/bin/pactl -- set-sink-volume `pacmd list-sinks | grep -P -o "(?<=\* index: )[0-9]+"` -10%'
gnome-screensaver-command -q | grep "is active" && bash -c '/usr/bin/pactl -- set-sink-volume `pacmd list-sinks | grep -P -o "(?<=\* index: )[0-9]+"` +10%'

Memang, itu agak bertele-tele. Grep kedua adalah menemukan antarmuka suara aktif pada sistem yang mungkin memiliki beberapa (misalnya laptop saya memiliki antarmuka Master dan Headphone, yang memungkinkan perintah-perintah ini untuk mengontrol keduanya).

Sunting: Ini tidak lagi berfungsi pada Ubuntu 16. Semua fungsi X tampaknya menjadi dinonaktifkan, bahkan dari terminal, setelah layar terkunci.

Cerin
sumber
1
Saya baru saja menjalankan ini di Ubuntu 18.04. Saya harus mengganti "tes terkunci" dengan gdbus call -e -d com.canonical.Unity -o /com/canonical/Unity/Session -m com.canonical.Unity.Session.IsLocked | grep -ioP "true"berbasis pada askubuntu.com/a/890802/627247 karena saya tidak menggunakan gnome-screesaver tetapi setelah itu, tidak ada masalah sama sekali.
Fabian N.
Saya dapat mengonfirmasi bahwa ia berfungsi di Ubuntu 16.04 juga. Untuk menghindari kebingungan, "tes terkunci" yang disebutkan oleh Fabian N. berarti mengganti gnome-screensaver-command -q | grep "is active"baris 160--165 dari freekey.py atau langsung di file konfigurasi dengan apa yang disarankannya.
Pierre Thalamy
pada sistem saya 171 gdbus call -e -d com.canonical.Unity -o /com/canonical/Unity/Session -m com.canonical.Unity.Session.IsLocked | grep -ioP "true" && bash -c 'rhythmbox-client --next'berfungsi sempurna untuk lagu berikutnya di rhythmbox. Saya masih mengerjakan kontrol sebelumnya dan lainnya tetapi itu akan sampai di sana.
John Hamilton