Как заставить значок закрепления перестать подпрыгивать после запуска сценария оболочки приложения?

StackOverflow https://stackoverflow.com/questions/1006648

  •  06-07-2019
  •  | 
  •  

Вопрос

Итак, я недавно сделал оболочку .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 .

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

Это было полезно?

Решение

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

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

Другие советы

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top