Можно ли позволить клавишам громкости клавиатуры продолжать работать, когда ваш рабочий стол заблокирован? В настоящее время поведение по умолчанию отключает все клавиши специальных функций, пока рабочий стол не будет разблокирован. Мне нравится использовать мой компьютер в качестве музыкального проигрывателя и оставлять его заблокированным, когда я не нахожусь непосредственно у консоли, но я все же хочу позволить людям контролировать громкость, если песня слишком громкая.
20
Ответы:
В некотором роде позорный плагин, но поскольку, похоже, не было никакого существующего решения, и поскольку задача казалась относительно простой, я написал простой демон Python, чтобы решить эту проблему. Он использует API-интерфейс python-xlib для захвата нажатий клавиш в масштабе всей системы, а затем запускает пользовательские команды оболочки. Он предполагает базовую настройку Debian / Ubuntu, но, вероятно, будет работать на большинстве систем Linux с несколькими настройками.
В моем случае клавиши увеличения / уменьшения громкости соответствуют коду 122/123, поэтому соответствующие команды для уменьшения или увеличения громкости только при заблокированном рабочем столе :
По общему признанию, это немного многословно. Второй grep - найти активный звуковой интерфейс в системах, которые могут иметь несколько (например, мой ноутбук имеет интерфейс Master и Headphone, позволяющий этим командам управлять либо).
Редактировать: Это больше не работает с Ubuntu 16. Все функции X, кажется, становятся отключенными, даже из терминала, как только экран блокируется.
источник
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-screesaver, но после этого никаких проблем нет.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'
отлично работает для следующей песни на Rhythmbox. Я все еще работаю над предыдущими и другими элементами управления, но это будет сделано.