Adicionando atalhos de teclado de atalho em duas etapas a partir da linha de comando (14.04 +)
A adição de atalhos personalizados a partir da linha de comando pode ser feita, mas é um pouco complicada; precisa ser feito em algumas etapas por keybinding. Por outro lado, é bastante simples e pode muito bem ser roteirizado se você de alguma forma quiser fazê-lo a partir da linha de comando (essa foi a pergunta, certo?).
Assim como em sua interface (Configurações do sistema > "Teclado" > "Atalhos" > "Atalhos personalizados"), os atalhos de teclado personalizados são criados a partir da linha de comando em duas etapas:
-
crie a atalho editando (adicionando a-) a lista retornada pelo comando:
gsettings get org.gnome.settings-daemon.plugins.media-keys custom-keybindings
A lista retornada parece (se fosse apenas um atalho atualmente):
['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/']
Aplique a lista editada pelo comando:
gsettings set org.gnome.settings-daemon.plugins.media-keys custom-keybindings "[<altered_list>]"
(lembre-se das aspas duplas)
N.B. Não é necessário dizer que a menção na lista (por exemplo,
custom1
,custom2
) deve ser única. Se você script, o script deve evitar duplicatas. Nesse caso, a lista editada deve se parecer com, por exemplo:['/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom0/', '/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/']
para adicionar um atalho de teclado:
custom1
-
defina suas propriedades:
-
nome:
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/ name '<newname>'
-
comando:
gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/ command '<newcommand>'
-
Combinação de chaves (por exemplo
<Primary><Alt>g
):gsettings set org.gnome.settings-daemon.plugins.media-keys.custom-keybinding:/org/gnome/settings-daemon/plugins/media-keys/custom-keybindings/custom1/ binding '<key_combination>'
-
Informações úteis podem ser encontradas aqui
Exemplo de script para definir um novo atalho personalizado
O script abaixo pode ser usado para definir uma nova combinação de teclas de atalho na linha de comando. Pode ser usado com o comando (supondo que a combinação de teclas esteja disponível):
python3 /path/to/script.py '<name>' '<command>' '<key_combination>'
Um exemplo:
Para definir uma combinação de teclas de atalho para abrir gedit
com a combinação de teclas Alt + 7 :
python3 /path/to/script.py 'open gedit' 'gedit' '<Alt>7'
O script:
#!/usr/bin/env python3
import subprocess
import sys
# defining keys & strings to be used
key = "org.gnome.settings-daemon.plugins.media-keys custom-keybindings"
subkey1 = key.replace(" ", ".")[:-1]+":"
item_s = "/"+key.replace(" ", "/").replace(".", "/")+"/"
firstname = "custom"
# get the current list of custom shortcuts
get = lambda cmd: subprocess.check_output(["/bin/bash", "-c", cmd]).decode("utf-8")
array_str = get("gsettings get "+key)
# in case the array was empty, remove the annotation hints
command_result = array_str.lstrip("@as")
current = eval(command_result)
# make sure the additional keybinding mention is no duplicate
n = 1
while True:
new = item_s+firstname+str(n)+"/"
if new in current:
n = n+1
else:
break
# add the new keybinding to the list
current.append(new)
# create the shortcut, set the name, command and shortcut key
cmd0 = 'gsettings set '+key+' "'+str(current)+'"'
cmd1 = 'gsettings set '+subkey1+new+" name '"+sys.argv[1]+"'"
cmd2 = 'gsettings set '+subkey1+new+" command '"+sys.argv[2]+"'"
cmd3 = 'gsettings set '+subkey1+new+" binding '"+sys.argv[3]+"'"
for cmd in [cmd0, cmd1, cmd2, cmd3]:
subprocess.call(["/bin/bash", "-c", cmd])
Como usar:
Cole o script em um arquivo vazio, salve-o como set_customshortcut.py
, execute-o como explicado acima.
Algumas das principais menções de chave usadas (encontradas experimentalmente, examinando as alterações feitas pelo modo GUI no valor de ligação):
Super key: <Super>
Control key: <Primary> or <Control>
Alt key: <Alt>
Shift key: <Shift>
numbers: 1 (just the number)
Spacebar: space
Slash key: slash
Asterisk key: asterisk (so it would need '<Shift>' as well)
Ampersand key: ampersand (so it would need <Shift> as well)
a few numpad keys:
Numpad divide key ('/'): KP_Divide
Numpad multiply (Asterisk):KP_Multiply
Numpad number key(s): KP_1
Numpad '-': KP_Subtract
etc.