題 如何在OS X中啟動時運行Automator操作,shell腳本或AppleScript?


我知道您可以在Mac上啟動時運行應用程序,但是您可以在啟動時運行Automator操作,服務,shell腳本或AppleScript嗎?

我也知道你可以將所有這些保存為應用程序,但我不希望它在Dock中打開。


3
2018-01-02 14:50


起源




答案:


首先, 登錄 不同於 啟動。這個答案假設你的意思 登錄,因為你顯然是指按照配置啟動程序的能力 系統偏好設置»用戶和組


使用命令行實用程序運行Automator腳本 automator,和AppleScripts一起使用 osascript。其 man 頁面詳細解釋了用法。

你可以設置一個 登錄鉤子,但它已經過時並且不贊成使用 launchd

你可以創建 的launchd 通過將XML配置文件放入您的作業中 ~/Library/Launch Agents 目錄。這個網站包含了很多相當簡單的例子,您可以查看例如 /System/Library/Launch Agents 例如係統提供的 launchd 工作。你需要的 RunAtLoad 指令 launchd


您仍然可以將AppleScripts和Automator腳本保存為應用程序,並按原樣運行它們。要將它們隱藏在Dock中,請編輯它們 Contents/Info.plist 文件並添加 LSUIElement 如上所述的指令, 這裡。這將隱藏其Dock圖標和菜單。


7
2018-01-02 15:03





您可以像這樣保存屬性列表 ~/Library/LaunchAgents/some.label.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>
    <key>Label</key>
    <string>some.label</string>
    <key>ProgramArguments</key>
    <array>
        <string>automator</string>
        <string>/path/to/example.workflow</string>
        <!-- <string>osascript</string>
        <string>/path/to/example.scpt</string> -->
    </array>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

它必須首先通過運行加載 launchctl load ~/Library/LaunchAgents/some.label.plist 或者退出並退回一次。


2
2018-01-03 00:20