É possível permitir que as teclas de volume de um teclado continuem funcionando quando a área de trabalho estiver bloqueada? Atualmente, o comportamento padrão desativa todas as teclas de função especial até que a área de trabalho seja desbloqueada. Eu gosto de usar meu PC como tocador de música e deixá-lo bloqueado quando não estou diretamente no console, mas ainda quero permitir que as pessoas controlem o volume se uma música estiver muito alta.
shortcut-keys
music
lock-screen
Cerin
fonte
fonte
Respostas:
Um pouco vergonhoso, mas como não parecia haver nenhuma solução existente e como a tarefa parecia relativamente direta, escrevi um daemon Python simples para corrigir o problema. Ele usa a API python-xlib para capturar pressionamentos de tecla em todo o sistema e, em seguida, executa comandos shell personalizados. Ele assume uma configuração básica do Debian / Ubuntu, mas provavelmente funcionaria na maioria dos sistemas Linux com alguns ajustes.
No meu caso, as teclas de aumentar / diminuir o volume são mapeadas para o código 122/123; portanto, os comandos correspondentes para diminuir ou aumentar o volume somente quando a área de trabalho está bloqueada são:
É certo que isso é um pouco detalhado. O segundo grep é encontrar a interface de som ativa em sistemas que possam ter várias (por exemplo, meu laptop possui uma interface Master e Headphone, permitindo que esses comandos controlem).
Editar: isso não funciona mais no Ubuntu 16. Todas as funções do X parecem desabilitadas, mesmo a partir do terminal, quando a tela é bloqueada.
fonte
gdbus call -e -d com.canonical.Unity -o /com/canonical/Unity/Session -m com.canonical.Unity.Session.IsLocked | grep -ioP "true"
baseado em askubuntu.com/a/890802/627247 porque não estou usando o gnome-screesaver, mas depois disso, sem problemas.gnome-screensaver-command -q | grep "is active"
nas linhas 160-165 do freekey.py ou diretamente no arquivo de configuração, o que ele sugere.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'
funciona perfeitamente para a próxima música no rhythmbox. Ainda estou trabalhando nos controles anteriores e em outros controles, mas ele chegará lá.