2009-06-17 3 views
3

私は最近、zshスクリプトのための.appラッパーを作ったが、私がそれを実行すると、そのアプリケーションのアイコンがDockでホッピングし続ける。 アプリラッパースクリプトの起動後、ドックアイコンのバウンドが止まるようにするにはどうすればよいですか?

アプリ

は基本的には次のとおりです。

% find Example.app -type f 
Example.app/Contents/Info.plist 
Example.app/Contents/MacOS/wrapper.sh 
% cat Example.app/Contents/Info.plist 
<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> 
<plist version="1.0"> 
<dict> 
<!-- tell OSX what the name of the executable is --> 
<key>CFBundleExecutable</key> 
<string>wrapper.sh</string> 
</dict> 
</plist> 
% cat Example.app/Contents/MacOS/wrapper.sh 
#!/usr/bin/env zsh 
# not my real script, but something else that hangs for a while 
sleep 10 
% 

することもできますgrab it from github

ホッピングを止めて通常のアプリのように動作し、その隣に三角形のある のアイコンが表示される方法はありますか?

答えて

6

アプリケーションがメインイベントループに入り、ユーザー入力への応答を開始するまで、アプリケーションのアイコンはOS X Dockでバウンスします。あなたのスクリプトはおそらくCarbonまたはCocoaのイベントループ(Carbon Event ManagerとNSApplicationのドキュメントを参照)を実行しないため、Dockは通常のフォアグラウンドGUIアプリケーションが出現すると期待しています。

私が成功したスクリプトラッピングツールは、Platypusです。スクリプトの実行中に独自のイベントループを実行したり、他の多くの便利な機能を実行することができます。

+0

理由を説明してくれてありがとう! – rampion

2

あなたが欲しいのはDropScriptです。ドックはそのようなシェルスクリプトでは動作しません。もう少し本格的なものが期待されます。

+0

DropScriptの最新バージョン(0.5)は、PPCのみのバイナリです。最近の(10.5を超えると思う?)OS XのIntel Macで動作しません。 – pendor

1

LSUIElementをInfo.plistファイルに追加するとうまくいくと思います。

関連する問題