Якоюсь ганебною штекером, але оскільки, здавалося, не було жодного існуючого рішення, і оскільки завдання здавалося відносно прямим, я написав простий демон 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, здається, вимикаються навіть із терміналу, коли екран блокується.