![从控制台运行 x 会话的脚本](https://linux22.com/image/105309/%E4%BB%8E%E6%8E%A7%E5%88%B6%E5%8F%B0%E8%BF%90%E8%A1%8C%20x%20%E4%BC%9A%E8%AF%9D%E7%9A%84%E8%84%9A%E6%9C%AC.png)
我的笔记本电脑使用 USB 键盘。它的布局与内置布局不同,所以我有脚本在它们之间切换。但如果我在拔掉插头之前忘记切换,我就没有超级了。现在我在另一个房间,我懒得去拿键盘。如果没有 super,我无法进入此 x 会话中的终端,但我可以切换到不同的控制台。但如果我尝试在那里执行脚本,它会说cannot open display 'default display'
.我可以运行它吗为了从控制台打开 x 会话?
PS:脚本:
#!/bin/bash
killall xcape
if lsusb | grep HHKB ; then {
setxkbmap us,gr \
-variant carpalx-plus-intl,daedalus \
-option grp:win_space_toggle \
-option lv3:rwin_switch \
-option altwin:meta_alt \
-option shift:breaks_caps \
-option lv5:lsgt_switch_lock
xmodmap ~/.xmodmap/hh
xcape -e "Shift_L=F13;Shift_R=F13;Super_L=Prior;Hyper_L=Prior"
} &
else {
setxkbmap us,gr \
-variant carpalx-plus-intl,daedalus \
-option grp:win_space_toggle \
-option lv3:ralt_switch \
-option altwin:meta_alt \
-option shift:breaks_caps -option lv5:lsgt_switch_lock
xmodmap ~/.xmodmap/apple
xcape -e "Control_L=Escape;Shift_L=F13;Shift_R=F13;Alt_L=Escape;Alt_R=Escape"
} &
fi
答案1
您需要在运行脚本之前设置 DISPLAY 变量。
尝试:
DISPLAY=:0 yourscriptname