![从命令行修改 Openbox 键绑定](https://linux22.com/image/85986/%E4%BB%8E%E5%91%BD%E4%BB%A4%E8%A1%8C%E4%BF%AE%E6%94%B9%20Openbox%20%E9%94%AE%E7%BB%91%E5%AE%9A.png)
我使用的是LXDE桌面环境,它基于Openbox。我知道如何通过编辑我的 来更改键绑定~/.config/openbox/lxde-rc.xml
,例如:
<keybind key="A-F11">
<action name="ToggleFullscreen"/>
</keybind>
但是,我需要进行非持久性更改,该更改仅对当前会话有效。我需要从命令行进行此更改,而不需要编辑 XML 文件。
那可能吗?
答案1
这是 bash 的解决方案,bash 是一种需要复杂编写的语言!
#!/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
使用示例:
bash rcedit.sh ToggleShowD C-S-u
注意:如果两个不同的东西有相同的键绑定,它将使用文件中的最后一个。该脚本通过操作名称编辑它找到的第一个脚本,例如toggledesktop。但显然你可以编辑它以通过键绑定查找,尽管键绑定显然不太可能是唯一的
该脚本需要与 rc.xml 位于同一文件夹中,除非您在 RCXML 变量中指定完整路径,并注意 globbing/tilda 在变量中不起作用
另外,如果您想编辑自定义快捷方式,其中包括额外的行:
<action name="Execute">
您必须调整 bash 脚本以包含该额外行:
find=$(cat $RCXML | grep -i -B 2 $1 | head -3)
editkeys=$(cat $RCXML | grep -i -B 2 $1 | head -1)
如果你想编辑鼠标快捷键,你将不得不做更多的编辑
我尝试使用 ruby 创建一些更喜欢 XML 格式的东西,尽管操作名称条目是嵌套的里面键绑定键是一种错误的编码简单解决方案的方法。另外,rc.xml 文件中充满了注释行,这混淆了我尝试的两个 ruby XML 模块。但如果你把它们去掉,你也许可以用红宝石做一些东西。
您还可以将以下行附加到 .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"
然后运行一次以创建备份:
backuprcxml
然后将以下行添加到:~/.config/openbox/autostart
~/.config/openbox/lxde-rc.xml.backup > ~/.config/openbox/lxde-rc.xml
答案2
几年前我使用 openbox 时发现OB热键有帮助。还有一个命令行界面和一个托盘图标。
我不记得我是否必须将它与它配对xdotool
才能从中得到我想要的东西,但你应该能够让它很容易地工作。