Modifier les raccourcis keyboard Openbox depuis la command line

J'utilise l'environnement de bureau LXDE, basé sur Openbox. Je sais comment changer les raccourcis keyboard en éditant mon ~/.config/openbox/lxde-rc.xml , par exemple:

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

Cependant, j'ai besoin de faire un changement non-persistant, qui ne sera efficace que pour la session en cours. Et je dois faire cette modification à partir de la command line, sans modifier le file XML.

Est-ce possible?

voici une solution avec bash, un langage fastidieux à écrire!

  #!/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 

exemple d'utilisation:

  bash rcedit.sh ToggleShowD CSu 

note: si vous avez le même keyboard pour deux choses différentes, il utilise le dernier dans le file. et ce script édite le premier qu'il trouve par nom d'action, par exemple toggledesktop. mais de toute évidence vous pouvez le modifier pour find par keybinding, bien que les raccourcis keyboard soient évidemment less susceptibles d'être uniques

le script doit être dans le même dossier que le file rc.xml, sauf si vous spécifiez le path d'access complet dans la variable RCXML et notez que globbing / tilda ne fonctionne pas dans une variable

aussi, si vous voulez éditer des raccourcis faits sur command, qui incluent la ligne supplémentaire:

  <action name="Execute"> 

vous devrez ajuster le script bash pour inclure cette ligne supplémentaire:

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

si vous voulez modifier les raccourcis keyboard, vous devrez faire beaucoup plus d'édition

j'ai essayé pendant un certain time de créer quelque chose qui apprécie davantage le format XML, avec ruby, bien que le fait que l'input du nom de l'action soit nestede dans la key keybind, est un peu à l'envers pour coder une solution facile. aussi, le file rc.xml est bourré de lignes de commentaires, qui ont confondu les deux modules XML ruby ​​que j'ai essayés. mais si vous les supprimez, vous pourriez être capable de faire quelque chose en rbuy.

vous pouvez également append les lignes suivantes à .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" 

alors exécutez-le une fois pour créer une sauvegarde:

  backuprcxml 

puis ajoutez la ligne suivante à: ~ / .config / openbox / autostart

  ~/.config/openbox/lxde-rc.xml.backup > ~/.config/openbox/lxde-rc.xml 

Lorsque j'ai utilisé openbox il y a quelques années, j'ai trouvé OBHotkey utile. Il y a aussi une interface de command line et une icône de barre d'état.

Je ne me souviens pas si je devais l'associer à xdotool pour get ce que je voulais, mais vous devriez pouvoir le faire assez facilement.