コマンドがスクリプト内ではなくプロンプトで実行されるのはなぜですか?

コマンドがスクリプト内ではなくプロンプトで実行されるのはなぜですか?

私はraspbian jessieを実行する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.txt2つの日付行と/root/xinitrc-errors

この奇妙な行動の理由は何ですか?

ベストアンサー1

~からxdoツール(1):

[オプション]キー入力[キー入力...]

オプション:

--ウィンドウウィンドウ

特定のウィンドウIDにキーストロークを送信します。ここでは、「%1」や「%@」などの「WINDOW STACK」参照を使用できます。ウィンドウスタックが存在する場合、デフォルトは「%1」で、そうでない場合は現在のウィンドウを使用します。

テストでは、sshFirefoxウィンドウに焦点を当ててキーの押下を受信しました。スクリプトではxte mousemove ...焦点が合っていません。

xdotool search他のコマンドと関連付けることができます。検索結果はfirefox複数のウィンドウを返すことがあります。マンページでは、--classname Navigator私がテストしたバージョン(47.0.1)で動作するexampleを使います。失敗した場合は、xprop問題のウィンドウに関連する他の文字列検索を使用できます。

 xdotool search --classname Navigator windowfocus key F11

おすすめ記事