启动后 n 分钟启动应用程序

cei*_*cat 7 mac boot

有没有办法在启动后 n 分钟启动应用程序?我想启动一些应用程序,但不是在启动时间(使用登录项),因为它会减慢启动时间(例如 Dropbox)。理想情况下,我可以在发布后 10 分钟完成。谢谢!

Sco*_*ott 6

不是直接的,但是您可以通过启动一个等待十分钟的脚本,然后启动应用程序来做很多相同的事情。例如,使用 AppleScript:

delay 600 --600 seconds == ten minutes

tell application "Dropbox" to activate
tell application "Something Else" to activate
Run Code Online (Sandbox Code Playgroud)

打开 AppleScript Editor/Applications/Utilities并输入它。然后,将其另存为一个应用程序,并将该应用程序添加到您的登录项中。

这将在您登录后十分钟而不是在您启动后启动应用程序,但您的问题表明您无论如何都会在启动时自动登录。在启动时真正启动 Mac GUI 应用程序往往不起作用。

[编辑]根据丹尼尔贝克的建议,这里有一种默默地做到这一点的方法:

创建上述 AppleScript,但将其另存为脚本。然后创建 Launchd 属性列表。如果您已经安装了 Mac OS X 开发工具,您可以使用它们附带的属性列表编辑器,或者您可以使用文本编辑器(因为它是 XML)。创建以下内容:

<?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>
    <key>Label</key>
    <string>some.meaningful.name</string>

    <key>OnDemand</key>
    <false/>

    <key>ProgramArguments</key>
    <array>
        <string>osascript</string>
        <string>/path/to/your/applescript.scpt</string>
    </array>

    <key>KeepAlive</key>
    <false/>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

将其保存在~/Library/LaunchDaemons/some.meaningful.name.plist. 然后当您登录时,您的 AppleScript 将运行,但它不会在 Dock 上提供一个图标,这将允许您取消。