キオスクモードで使用するラズビアンジェシーを実行しているRPiがあります。/etc/rc.local
で開始します。
/usr/bin/xinit /opt/domotique/xinitrc > /root/xinitrc-errors 2>&1
/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
アイデアは、最小限のウィンドウマネージャーを起動し、次にFirefoxを起動し、プログラムでマウスを離してF11
を押して全画面表示にすることです。
F11
キーが「押されていない」ことを除いて、すべてが正常に機能します。Firefoxとそのクロムが残っています。
ホストにSSHで接続し、ルートプロンプトで実行した場合
export DISPLAY=':0'
/usr/bin/xdotool key F11
その後、Firefoxは正しくフルスクリーンに切り替わります。 xte
を使用する場合も同じです。制御ファイル/tmp/date.txt
には2つの日付行があり、/root/xinitrc-errors
にエラーはありません。
この奇妙な振る舞いの理由は何でしょうか?
から xdotool(1) :
key[options] keystroke [keystroke ...]
オプション:
-ウィンドウウィンドウ
キーストロークを特定のウィンドウIDに送信します。ここでは、「%1」や「%@」などの「WINDOWSTACK」参照を使用できます。ウィンドウスタックがある場合は、「%1」がデフォルトです。それ以外の場合は、現在のウィンドウが使用されます。
ssh
テストでは、Firefoxウィンドウに既にフォーカスがあったため、キーが押されました。スクリプトでは、xte mousemove ...
はフォーカスを外したままにしました。
xdotool search
を他のコマンドと連鎖させることができます。 firefox
を検索すると、複数のウィンドウが返される場合があります。マンページでは、テストしたバージョン(47.0.1)で機能する例--classname Navigator
を使用しています。それができない場合は、xprop
を使用して、関連するウィンドウに固有の他の文字列を見つけることができます。
xdotool search --classname Navigator windowfocus key F11
スクリプトの最初の行に、Shebangを入れてみてください。
#!/usr/bin/env bash