如何在我的自定义窗口中让我的Applescript'做'脚本?

时间:2011-09-04 22:55:30

标签: bash firefox-addon applescript

我正在编写一个Applescript,让我的终端可以为我制作Firefox附加组件。

tell application "Terminal"
    do script "cd Public/addon-sdk-1.0"
    do script "source bin/activate"
    do script "clear"
end tell

当我运行此脚本时,我的自定义终端会打开常规终端窗口;并且bash脚本在常规窗口中运行。所以,我试图找出如何让Applescript只打开我的自定义终端,并在其中执行bash脚本。

1 个答案:

答案 0 :(得分:1)

您的问题的答案是不使用do script,而是使用keystrokekey code向当前终端窗口发送击键。这是我用来做类似事情的脚本。我只是从终端用osascript myscript.scpt调用它或直接启动它(我使用LaunchBar来调用applescripts)并打开一个新的终端选项卡(如果终端已经打开),给它一个自定义名称然后运行我提供的任何命令。您可以修改此选项以跳过创建新选项卡,然后只在当前终端窗口中运行。我只需要使用这种方法,而不仅仅是运行一些标准的终端命令(例如将密钥发送到交互式python会话),否则我只是创建一个bash脚本。

global ENTER_, ESC_
set ENTER_ to 52 
set ESC_ to 53 

on run_commands(commands, pause)
    tell application "System Events"
        repeat with cmd in commands
            keystroke cmd
            key code ENTER_
            delay pause
        end repeat
    end tell
end run_commands

on new_terminal_tab(tab_name)
    activate application "Terminal"
    delay 0.5 
    tell application "System Events"
        # create new tab
        keystroke "t" using {command down}
        delay 0.5 
        # give it a name
        keystroke "I" using {shift down, command down}
        keystroke tab_name 
        delay 0.5
        key code ESC_ # escape 
    end tell
end new_terminal_tab

new_terminal_tab("addon-sdk-work")
run_commands( { "cd /Users/username/Documents/dev/projname",¬ 
        ". env/bin/activate", ¬
        "clear"}, 0.5)