【问题标题】:How do I convert this AppleScript to osascript?如何将此 AppleScript 转换为 osascript?
【发布时间】:2012-09-13 02:02:05
【问题描述】:

我编写了一个 AppleScript 并希望将其转换为 osascript,以便我可以在启动时使用 launchd 运行它。有什么方法可以将其转换为 osascript 还是必须将整个脚本重写为 osascript?如果无法完成,是否至少有一种方法可以在终端中将其作为 osascript 运行?谢谢!

on idle
       tell application "System Events" to ¬
    if exists process "Launchpad" then run script
        tell application "Launchpad"
            delay 0
            tell application "System Events" to keystroke "b" using {control down, option down, command down}
            delay 0
            tell application "System Events" to keystroke "b" using {control down, option down, command down}
            delay 0
            tell application "System Events" to keystroke "b" using {control down, option down, command down}
            delay 0
        end tell
end idle

【问题讨论】:

    标签: applescript launchd login-script osascript


    【解决方案1】:

    如果您只需要每秒运行一次或更频繁,您可以将其保存为普通脚本:

    tell application "System Events"
        if not (exists process "Launchpad") then return
        repeat 3 times
            keystroke "b" using {control down, option down, command down}
        end repeat
    end tell
    

    然后使用 launchd 重复运行脚本:

    <?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>com.stackoverflow.11945633</string>
        <key>ProgramArguments</key>
        <array>
            <string>osascript</string>
            <string>/Users/username/Library/Scripts/script.scpt</string>
        </array>
        <key>StartInterval</key>
        <integer>1</integer>
    </dict>
    </plist>
    

    必须使用launchctl load ~/Library/LaunchAgents/com.stackoverflow.11945633.plist 手动加载属性列表。应用更改需要卸载和加载它。

    默认情况下,程序会在 20 秒后发送一个 SIGKILL 信号。您可以通过添加 ExitTimeOut 键来覆盖超时。见man launchd.plist

    该脚本实际上不适用于更改 Launchpad 背景。 Launchpad.app 只是一个虚拟应用程序,打开后会立即退出。

    如果你只是想改变背景样式,你可以用defaults write com.apple.dock springboard-background-filter -int 2; killall Dock来做。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多