【问题标题】:How do I make the dock icon stop bouncing after my app wrapper script starts?如何在我的应用程序包装脚本启动后使停靠图标停止弹跳?
【发布时间】:2010-11-03 15:31:53
【问题描述】:

所以我最近为 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

有什么方法可以让应用程序图标停止跳动,像普通应用程序一样运行,然后坐在那里 旁边有一个三角形?

【问题讨论】:

    标签: macos shell zsh dock


    【解决方案1】:

    应用程序的图标将在 OS X Dock 中反弹,直到应用程序进入其主事件循环并开始响应用户输入。由于您的脚本可能没有运行 Carbon 或 Cocoa 事件循环(分别参见 Carbon 事件管理器和 NSApplication 的文档),因此 Dock 会持续等待,期望出现一个常规的前台 GUI 应用程序。

    我已经成功使用的脚本包装工具是Platypus。它可以在执行您的脚本时运行自己的事件循环,并做许多其他方便的事情。

    【讨论】:

      【解决方案2】:

      你想要DropScript。 Dock 不适用于这样的 shell 脚本,它需要一些更成熟的东西。

      【讨论】:

      • DropScript 的最新版本 (0.5) 似乎是仅限 PPC 的二进制文件。不适用于装有任何最新(我认为是 >10.5?)版本的 OS X 的 Intel Mac。
      【解决方案3】:

      我认为如果将 LSUIElement 添加到 Info.plist 文件中,它应该可以工作。

      【讨论】:

        猜你喜欢
        • 2013-05-06
        • 1970-01-01
        • 1970-01-01
        • 2012-01-10
        • 2023-04-11
        • 1970-01-01
        • 2016-08-04
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多