Как заставить значок закрепления перестать подпрыгивать после запуска сценария оболочки приложения? - PullRequest
4 голосов
/ 17 июня 2009

Итак, я недавно сделал оболочку .app для сценария zsh, но когда я ее запускаю, значок приложения постоянно отображается в 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
%

Вы также можете взять его с github .

Можно ли как-нибудь заставить значок приложения перестать прыгать, вести себя как обычное приложение и просто сидеть там? с треугольником рядом с ним?

Ответы [ 3 ]

6 голосов
/ 17 июня 2009

Значок приложения будет отображаться в OS X Dock, пока приложение не войдет в свой основной цикл событий и не начнет реагировать на ввод пользователя. Поскольку ваш сценарий, вероятно, не запускает цикл событий Carbon или Cocoa (см. Документацию для Carbon Event Manager и NSApplication соответственно), Dock непрерывно ожидает, ожидая появления обычного приложения GUI переднего плана.

Инструмент для работы со сценариями, с которым я добился успеха: Platypus . Он может запускать свой собственный цикл событий во время выполнения вашего скрипта и делать ряд других удобных вещей.

2 голосов
/ 17 июня 2009

Вы хотите DropScript . Док не работает с такими скриптами оболочки, он ожидает чего-то более полноценного.

1 голос
/ 29 мая 2013

Я думаю, что если вы добавите LSUIElement в файл Info.plist, он должен работать.

...