Modifique as associações de teclas do Openbox a partir da linha de comandos

4

Estou usando o ambiente de área de trabalho LXDE, que é baseado no Openbox. Eu sei como alterar as combinações de teclas editando meu ~/.config/openbox/lxde-rc.xml , por exemplo:

<keybind key="A-F11">
  <action name="ToggleFullscreen"/>
</keybind>

No entanto, preciso fazer uma alteração não persistente, que só será efetiva para a sessão atual. E preciso fazer essa alteração a partir da linha de comando, sem editar o arquivo XML.

Isso é possível?

    
por Martin Vegter 20.03.2016 / 12:44

2 respostas

0

aqui está uma solução com o bash, uma linguagem complicada para escrever!

 #!/usr/bin/bash

 RCXML='rc.xml'

 find=$(cat $RCXML | grep -i -B 1 $1 | head -2)

 editkeys=$(cat $RCXML | grep -i -B 1 $1 | head -1)

 echo ''
 echo '  FOUND THE FOLLOWING SHORTCUT:'
 echo " ${find}"
 echo ''
 echo '  EDITING ABOVE KEYBIND TO:'
 echo "     <keybind key=\"$2\">"
 echo ''
 echo '  HIT ENTER TO CONFIRM.'
 read y

 if [ -z $y ]; then
     sed -i "s/$editkeys/\ \ \ \ <keybind key=\"$2\">/g" $RCXML
 fi

exemplo de uso:

 bash rcedit.sh ToggleShowD C-S-u

nota: se você tiver o mesmo atalho de teclado para duas coisas diferentes, ele usa o último no arquivo. e este script edita o primeiro que encontrar por nome de ação, por ex. toggledesktop. mas, obviamente, você poderia editá-lo para encontrar por keybinding, embora as combinações de teclas sejam obviamente menos comuns

o script precisa estar na mesma pasta que o rc.xml, a menos que você especifique o caminho completo na variável RCXML e observe que globbing / tilda não funciona em uma variável

também, se você quiser editar atalhos personalizados, que incluem a linha extra:

 <action name="Execute">

você terá que ajustar o script bash para incluir essa linha extra:

 find=$(cat $RCXML | grep -i -B 2 $1 | head -3)
 editkeys=$(cat $RCXML | grep -i -B 2 $1 | head -1)

se você quiser editar os atalhos do mouse, terá que editar muito mais

eu tentei por um tempo criar algo que valorize mais o formato XML, com o ruby, embora o fato de a entrada do nome da ação estar aninhada dentro da tecla keybind, seja meio errado rodada para codificar uma solução fácil. Além disso, o arquivo rc.xml está repleto de linhas de comentário, o que confundiu os dois módulos XML do ruby que eu tentei. mas se você tira isso, você pode fazer algo em rubi.

você também pode acrescentar as seguintes linhas ao .bashrc

 alias backuprcxml="~/.config/openbox/lxde-rc.xml > ~/.config/openbox/lxde-rc.xml.backup"
 alias restorercxml="~/.config/openbox/lxde-rc.xml.backup > ~/.config/openbox/lxde-rc.xml"

então, execute isso uma vez para criar um backup:

 backuprcxml

adicione a seguinte linha a: ~ / .config / openbox / autostart

 ~/.config/openbox/lxde-rc.xml.backup > ~/.config/openbox/lxde-rc.xml
    
por 20.03.2016 / 18:04
0

Quando usei o openbox há alguns anos, achei OBHotkey útil. Há uma interface de linha de comando e um ícone de bandeja também.

Não me lembro se eu tive que emparelhar isso com xdotool para conseguir o que eu queria, mas você deve ser capaz de fazer isso funcionar facilmente.

    
por 24.03.2016 / 19:54