Como posso encontrar uma ligação de chave personalizada específica através do seu nome?

1

eu posso recuperar a lista de atalhos de teclado personalizados por:

gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings

que retornam algo como:

['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media keys/custom-keybindings/custom1/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom2/']

Mas eu quero saber a vinculação de chave de destino por meio de seu nome? ou seja, shutter - > <primary><shift><alt>a

Eu descobri uma abordagem simples, mas não conveniente:

gsettings get org.gnome.settings-daemon.plugins.media-keys.custom-  
keybinding:/org/gnome/settin‌​gs-daemon/plugins/media-keys/custom-  
keybindings/custom0/ name
// return the name like 'shutter'


gsettings get org.gnome.settings-daemon.plugins.media-keys.custom-  
keybinding:/org/gnome/settin‌​gs-daemon/plugins/media-keys/custom-  
keybindings/custom0/ binding
// return the binding like '<primary><shift><alt>a'

Algum cara conhece outras soluções elegantes?

    
por e-cloud 01.07.2016 / 10:19

1 resposta

3

Script pequeno para encontrar a tecla de atalho por nome

O script abaixo mostrará o atalho de teclado quando você o executar com o nome do atalho como argumento. um exemplo:

$ python3 '/home/jacob/Bureaublad/find_keybinding.py' rename
> '<Primary><Alt>r'

Como configurar

  • Copie o script abaixo em um arquivo vazio, salve-o como find_keybinding.py
  • Execute-o pelo comando:

    python3 '/path/to/find_keybinding.py' <shortcut_name>
    

Explicação

A informação está na saída de

dconf dump /

Nos atalhos de teclado personalizados, isso gerará seções como:

[org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom9]
binding='<Primary><Alt>r'
command='/home/jacob/.local/share/nautilus/scripts/change_name'
name='rename'

Como você pode ver, precisamos da linha, duas linhas acima

name='rename'

... e assim o script exibe essa linha, removida de binding=

O script

#!/usr/bin/env python3
import subprocess; import sys
key = "/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/"
# read the output from dconf dump /, split into lines
ls = [l for l in subprocess.check_output(["dconf", "dump", key]).decode("utf-8").splitlines()]
# find line corresponding to searched name, print two lines higher
print(ls[ls.index([l for l in ls if "name='"+sys.argv[1] in l][0])-2].replace("binding=", ""))

Além disso

... você pode criar o diretório ~/bin (se ele ainda não existir) e salvar o script sem extensão , e torná-lo executável . Saia e volte, simplesmente:

find_keybinding <name> 

fará

    
por Jacob Vlijm 01.07.2016 / 10:22