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