Você precisa definir sua variável DISPLAY antes de executar o script.
Tente:
DISPLAY=:0 yourscriptname
Eu uso um teclado USB com meu laptop. Tem um layout diferente do
o builtin, então eu tenho script para alternar entre eles. Mas se eu esquecer de trocar antes de desconectar, não tenho super. Agora eu estou em uma sala diferente, e não posso ser incomodado para pegar meu teclado. Eu não posso chegar a um terminal nesta sessão x sem super, mas posso mudar para um console diferente. Mas se eu tentar executar o script lá, ele diz cannot open display 'default display'
. Posso rodá-lo para a sessão x aberta a partir do console?
PS: o script:
#!/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
Você precisa definir sua variável DISPLAY antes de executar o script.
Tente:
DISPLAY=:0 yourscriptname
Tags xorg