В некотором роде позорный плагин, но поскольку, похоже, не было никакого существующего решения, и поскольку задача казалась относительно простой, я написал простой демон 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%'
По общему признанию, это немного многословно. Второй grep - найти активный звуковой интерфейс в системах, которые могут иметь несколько (например, мой ноутбук имеет интерфейс Master и Headphone, позволяющий этим командам управлять либо).
Редактировать: Это больше не работает с Ubuntu 16. Все функции X, кажется, становятся отключенными, даже из терминала, как только экран блокируется.