por que um comando seria executado no prompt e não em um script?

1

Eu tenho um RPi rodando jessie raspbian que eu uso no modo quiosque: eu começo em /etc/rc.local

/usr/bin/xinit /opt/domotique/xinitrc > /root/xinitrc-errors 2>&1

e /opt/domotique/xinitrc é

date > /tmp/date.txt
export DISPLAY=':0'
xset s off
xset -dpms
xset s noblank
setxkbmap fr
/usr/bin/matchbox-window-manager -use_titlebar no -use_cursor no &
# wait for the window manager to start
sleep 10
rm -fr /root/.config /root/.cache
/usr/bin/firefox http://127.0.0.1:8081/infoscreen/infoscreen.html &
# let the browser start
sleep 10
/usr/bin/xte 'mousemove 10000 10000'
sleep 2
/usr/bin/xdotool key F11
date >> /tmp/date.txt
sleep 40000000

A idéia é iniciar um gerenciador de janelas mínimo, depois o firefox e então mover o mouse programaticamente e pressionar F11 para ir para a tela cheia.

Tudo funciona bem, exceto pelo fato de que a tecla F11 não é "pressionada" - estou com o firefox junto com seu cromo.

Se eu ssh para o host e executado no prompt raiz

export DISPLAY=':0'
/usr/bin/xdotool key F11

o firefox é corretamente alterado para tela cheia. O mesmo se eu usar xte . O arquivo de controle /tmp/date.txt tem duas linhas de data e não há erros em /root/xinitrc-errors .

Qual poderia ser a razão para esse comportamento estranho?

    
por WoJ 31.07.2016 / 21:40

2 respostas

1

De xdotool (1) :

key [options] keystroke [keystroke ...]

Options:

--window window

Send keystrokes to a specific window id. You can use ''WINDOW STACK'' references like ''%1'' and ''%@'' here. If there is a window stack, then ''%1'' is the default, otherwise the current window is used.

Em seu teste ssh , você já havia focado a janela do Firefox, por isso recebeu o pressionamento de tecla. No script, o xte mousemove ... deixou sem foco.

Você pode encadear xdotool search com outros comandos. A pesquisa por firefox pode retornar várias janelas. A manpage usa o exemplo --classname Navigator , que funciona para a versão que testei (47.0.1). Caso contrário, você pode usar xprop para encontrar alguma outra string específica para a janela relevante.

 xdotool search --classname Navigator windowfocus key F11
    
por 01.08.2016 / 20:55
0

Na primeira linha do seu script, você pode tentar colocar o shebang

#!/usr/bin/env bash
    
por 01.08.2016 / 13:10