Як дозволити ключові функції під час блокування робочого столу


20

Чи можна дозволити клавішам гучності клавіатури продовжувати працювати, коли ваш робочий стіл заблокований? В даний час поведінка за замовчуванням відключає всі спеціальні функціональні клавіші до розблокування робочого столу. Мені подобається використовувати свій ПК як музичний плеєр і залишати його заблокованим, коли я не перебуваю безпосередньо за консоллю, але все ж хочу дозволити людям контролювати гучність, якщо пісня занадто гучна.


+1! Б'юсь об заклад, що побічним ефектом цього (якщо це можливо) є не пробуджувати сплячий дисплей, про що я замислювався раніше.
Девід Онелл

1
Я також хотів би мати цю функціональність. Не тільки для гучності, але і для клавіш управління музикою (відтворення, пауза; наступне; попереднє).
jPlatte

Як осторонь, під час оновлення я повернув екран до найнижчого рівня. На півдорозі встановлення я не міг повернути його назад. Зроблено для цікавого досвіду ..
Вілл Річардсон,

Цікаво, чи можна було б зробити медіа-ключі в якийсь фальшивий пристрій LIRC, прикинувшись пультом управління ... Принаймні, концептуально це має сенс, правда?
танелі

Відповіді:


9

Якоюсь ганебною штекером, але оскільки, здавалося, не було жодного існуючого рішення, і оскільки завдання здавалося відносно прямим, я написав простий демон Python, щоб вирішити проблему. Він використовує API python-xlib для зйомки загальносистемних натискань клавіш, а потім виконує власні команди оболонки. Він передбачає базове налаштування Debian / Ubuntu, але, ймовірно, може працювати в більшості систем Linux з кількома налаштуваннями.

У моєму випадку клавіші збільшення / зменшення гучності відображають код 122/123, тому відповідні команди зменшити або збільшити гучність лише тоді, коли робочий стіл заблокований :

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%'

Справді, це трохи дослівно. Другий хід полягає в пошуку активного звукового інтерфейсу в системах, яких може бути декілька (наприклад, у мого ноутбука є інтерфейс Master та навушників, що дозволяє цим командам керувати також).

Редагувати: Це більше не працює, як для Ubuntu 16. Всі функції X, здається, вимикаються навіть із терміналу, коли екран блокується.


1
Щойно я працював над Ubuntu 18.04. Мені довелося замінити тест "є заблокованим" gdbus call -e -d com.canonical.Unity -o /com/canonical/Unity/Session -m com.canonical.Unity.Session.IsLocked | grep -ioP "true"на основі askubuntu.com/a/890802/627247, оскільки я не використовую gnome-vresaver, але після цього взагалі немає проблем.
Фабіан Н.

Я можу підтвердити, що він працює і на Ubuntu 16.04. Щоб уникнути плутанини, тест "заблокований", згаданий Фабіаном Н., означає заміну gnome-screensaver-command -q | grep "is active"на рядках 160--165 freekey.py або безпосередньо у конфігураційному файлі тим, що він пропонує.
П’єр Таламі

у моїй системі 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'відмінно працює для наступної пісні в ритмбоксі. Я все ще працюю над попередніми та іншими елементами управління, але це дістанеться.
Джон Гамільтон
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.