
システムが起動したとき(Ubuntu 10.04)、「アプリケーションの起動」を呼び出すbashスクリプトがあります。
スクリプト:
#!/bin/sh
APP1='/home/ipc-display/development/projects/display-mgmt'
LOG='/home/ipc-display/development/projects/bootLog.txt'
cd $APP1/target/scala-2.10
java -jar display-mgmt-1.0.jar &
# Auto Hide Mouse Pointer
/usr/bin/unclutter &
#Start chrome
sleep 5s
/usr/bin/google-chrome --incognito --app=http://192.168.0.100:9000/welcome &
#Bring Chrome to focus
sleep 5s
/usr/bin/wmctrl -a "http://" &&
#FullScreen Chrome
sleep 3s &&
/usr/bin/xdotool key F11
bash
私の不都合なスクリプティングスキルはさておき、Chromeが私が望む限り決定論的に常にフルスクリーンに切り替えられない理由についてのアイデアはありますか?
時にはフルスクリーンで表示されますが、必ずしもそうではないのはなぜか疑問に思います。ところで、このスクリプトに対する改善点があれば大変感謝いたします。
ありがとうございます。
答え1
タイミングの問題によりこの問題が発生したようです。 Chromeに焦点を当てた後、を押すと3秒間何かが前面に表示されることがありますF11。
それがどのように機能するかはわかりませんが、行の末尾で使用するのはwmctrl
少し不適切です。&&
これはプロセスをバックグラウンドで実行するのではなく、sleep 3s
コマンドが成功した場合にのみ次のコマンドを実行するようにシェルに指示します()。
ただし、--kiosk
起動時にChromeをフルスクリーンに設定し、残りのスクリプトをスキップできます。
答え2
sleep
あなたのスクリプトは良く見えますが、スクリプトにあまりにも多くの呼び出しを挿入する必要はないと思います。人々はしばしば、sleep
いくつかの非同期操作が完了したかどうかを判断できないために発生する競合状態を解決するためにそれを使用します。たとえば、wget
リモートスクリプトの実行を開始し、サーバーがフォローできるファイルを生成するのに十分な時間を待つことは、ファイルがいつ準備されるのかを知らない状況を回避するGET
ために使用できます。sleep
少し這いますが、ほとんどの人のニーズを満たすでしょう。
しかし、sleep
あなたをここに連れて行っても役に立ちません。たとえば、chrome
最初に始めてunclutter
その仕事をする機会があったとしたら、大きな害を及ぼすとは思いません。また、完了を待つ非同期操作もないので(もちろん、IPCが関係しているが通信が完了するまで返されないようwmctl
です)、3秒を挿入するのは過度に見えます。しかし、金額は必要ないと思います。wmctl
sleep
sleep
答え3
これがあなたの問題かどうかはわかりませんが、アクティブウィンドウを変更することは信頼できません。眠っている間、他の何かがアクティブなウィンドウを変更することができます。代わりに、xdotool
必要なウィンドウにキーを送信するように指示する必要があります。
xdotool search --class Google-chrome -- key F11
l0b0が言ったように、おそらく代わりに使用する必要がありますgoogle-chrome --kiosk …
。