
저는 Openbox를 기반으로 하는 LXDE 데스크탑 환경을 사용하고 있습니다. 나는 내 것을 편집하여 키 바인딩을 변경하는 방법을 알고 있습니다 ~/.config/openbox/lxde-rc.xml
. 예를 들면 다음과 같습니다.
<keybind key="A-F11">
<action name="ToggleFullscreen"/>
</keybind>
그러나 현재 세션에만 유효한 비지속적 변경을 수행해야 합니다. XML 파일을 편집하지 않고 명령줄에서 이 변경을 수행해야 합니다.
그게 가능합니까?
답변1
작성하는데 복잡성이 필요한 언어인 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
참고: 서로 다른 두 항목의 키 바인딩이 동일한 경우 파일의 마지막 항목을 사용합니다. 스크립트는ggledesktop과 같은 작업 이름으로 찾은 첫 번째 스크립트를 편집합니다. 하지만 분명히 키 바인딩으로 보도록 편집할 수는 있지만 키 바인딩이 고유할 가능성은 거의 없습니다.
RCXML 변수에 전체 경로를 지정하지 않는 한 스크립트는 rc.xml과 동일한 폴더에 있어야 하며 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)
마우스 단축키를 편집하려면 추가 편집을 수행해야 합니다.
액션 이름 항목이 중첩되어 있지만 XML 형식을 선호하는 Ruby를 사용하여 무언가를 만들려고 합니다.~에키 바인딩은 간단한 솔루션을 코딩하는 잘못된 방법입니다. 또한 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
꽤 쉽게 작동시킬 수 있을 것입니다.