通过OSX El Capitan上的Applescript获取“终端”窗口中的选项卡数量时出错

时间:2016-01-05 01:49:44

标签: bash terminal applescript osx-elcapitan

基本上,我想在打开新窗口而不是新标签时更改bash的主题,然后让窗口的标签共享相同的主题;而单独窗口的主题是随机确定的。

经过一番挖掘后,我发现了一个AppleScript,它设置了Terminal窗口当前标签的主题。我创建了一个

/usr/local/terminal-color.scpt as:

on run argv
    tell application "Terminal" to set current settings of selected tab of front window to some settings set
end run

我已将以下声明添加到我的bash配置文件中:

osascript /usr/local/terminal-color.scpt

现在,这个脚本当然会运行bash的每个新实例。我无法从bash_profile做任何事情。但是,我应该能够将新窗口或新选项卡与applescript本身区分开来。因此,我正在寻找 if 语句,这将使脚本仅在创建新窗口时运行。类似的东西:

on run argv
    if index of selected tab is 0
        tell application "Terminal" ....
    end if
end run

但我无法弄清楚如何实现这一目标查看终端应用程序的applescript文档和脚本字典。请帮忙

更新

我尝试按如下方式编辑脚本:

set tabNum to number of tabs of front window
if tabNum = 1 then
    tell app ...

这不会导致错误tabs of window 1 doesn’t understand the “count” message

1 个答案:

答案 0 :(得分:0)

我的方法是正确的但我在选择应用程序范围之前尝试获取选项卡或窗口数据时遇到了一个简单的错误。简单地说,首先tell应用程序,然后询问它的属性。这是有效的代码:

on run argv
    tell application "Terminal"
        if number of tabs of front window = 1 then
            set current settings of selected tab of front window to some settings set
        end if
    end tell
end run

更好

改进以前的脚本;这个不是随机选择一个主题,它根据你已经打开的窗口迭代你可用的终端主题。您还可以设置首次启动终端时设置的默认主题。就我而言,它是settings set中的第5个。这是代码:

tell application "Terminal"
    if number of tabs in front window = 1 then
        set defaultThemeOffset to 5
        set allThemes to number of settings set
        set allWindows to number of windows
        set themeIndex to (defaultThemeOffset + allWindows) mod allThemes
        set current settings of selected tab of front window to settings set themeIndex
    end if
end tell