Est-il possible d'autoriser les touches de volume d'un clavier à continuer de fonctionner lorsque votre bureau est verrouillé? Actuellement, le comportement par défaut désactive toutes les touches de fonction spéciale jusqu'à ce que le bureau soit déverrouillé. J'aime utiliser mon PC comme lecteur de musique et le laisser verrouillé lorsque je ne suis pas directement sur la console, mais je veux quand même permettre aux gens de contrôler le volume si une chanson est trop forte.
20
Réponses:
Un peu honteux, mais comme il ne semblait pas y avoir de solution existante et que la tâche semblait relativement simple, j'ai écrit un simple démon Python pour résoudre le problème. Il utilise l'API python-xlib pour capturer les pressions de touches à l'échelle du système, puis exécute des commandes shell personnalisées. Il suppose une configuration de base Debian / Ubuntu, mais fonctionnerait probablement sur la plupart des systèmes Linux avec quelques ajustements.
Pour mon cas, les touches de volume haut / bas correspondent au code 122/123, donc les commandes correspondantes pour baisser ou augmenter le volume uniquement lorsque le bureau est verrouillé sont:
Certes, c'est un peu bavard. Le deuxième grep consiste à trouver l'interface audio active sur les systèmes qui pourraient en avoir plusieurs (par exemple, mon ordinateur portable a une interface maître et casque, permettant à ces commandes de contrôler l'une ou l'autre).
Edit: Cela ne fonctionne plus à partir d'Ubuntu 16. Toutes les fonctions X semblent devenir désactivées, même depuis le terminal, une fois l'écran verrouillé.
la source
gdbus call -e -d com.canonical.Unity -o /com/canonical/Unity/Session -m com.canonical.Unity.Session.IsLocked | grep -ioP "true"
basé sur askubuntu.com/a/890802/627247 parce que je n'utilise pas le gnome-screesaver mais après cela, aucun problème du tout.gnome-screensaver-command -q | grep "is active"
sur les lignes 160--165 de freekey.py ou directement dans le fichier de configuration par ce qu'il propose.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'
fonctionne parfaitement pour la prochaine chanson sur rhythmbox. Je travaille toujours sur les commandes précédentes et autres, mais ça y arrivera.