2011-07-18 66 views
4

我试图学习Applescript,因为我最终以编程方式在终端中将标签的标题设置为我目前正在工作的任何环境。应该是一个简单的任务,我已经将它变得几乎正确我认为。这是我的实验代码到目前为止...如何以编程方式设置Mac OS X 10.6终端选项卡标题?

tell application "Terminal" 
    activate 
    set frontIndex to index of the first window whose frontmost is true 
    tell window frontIndex 
     set title displays custom title of selected tab to true 
     set custom title of selected tab to "Bazzy" 
    end tell 
end tell 

的问题是,当我设置选项卡的标题,所有其他选项卡的标题也被置。 但是,如果我右键单击并检查选项卡,然后在该选项卡上手动设置标题,那么当我运行我的代码时,其标题不会受到影响,并且我手动键入的标题仍然存在。就好像title displays custom title属性没有被读取,或者这个属性不会做我认为它的作用。

如何将一个选项卡的标题设置为自定义值?

+0

请注意,将frontIndex设置为最前面为true的第一个窗口的索引是不必要的。默认情况下,“前窗”或“窗1”始终是最前面的窗口。 –

+0

在10.6.8中,我发现在将“标题显示自定义标题”设置为true之前,将标签/窗口的其他标题相关属性设置为false是很重要的:“标题显示设备名称”,“标题显示外壳路径”和“标题显示窗口大小”。如果我没有这样做,那么另一个布尔值将保持为假,使得我所有的标题更新都转到所有窗口的“设置集”,而不是我正在尝试更改的特定窗口/标签。 YMMV适用于将来版本的OS X. – mormegil

回答

1

此属性不会做你认为它的作用。设置自定义标题,以一个标签适用于所有窗口全部标签,每个验证码:

tell application "Terminal" 
    tell window 1 
     set title displays custom title of tab 1 to true 
     set custom title of selected tab to "foo" 
    end tell 
    tell window 2 
     set title displays custom title of tab 2 to true 
     set custom title of selected tab to "bar" 
    end tell 
end tell 
--> RESULT: All tabs in all windows show "bar" 

我不知道是否有标题与环境有关,即bash做,cshzshksh - 而不是单个标签。即使我退出终端并回来,“酒吧”仍然无处不在。我会毫不犹豫地承认,我对CL接口的工作原理知之甚少。与此同时,如果你正在学习Applescript,我会建议你学习一些不那么古怪的东西,比如Finder或者其他东西。在Applescript中,有负载比在Terminal中可以做更多有用的事情。

2

我只是想这和它工作得很好:

tell application "Terminal" 
    set custom title of tab 2 of window 1 to "beta" 
    set custom title of tab 1 of window 1 to "alpha" 
end tell 

我承认我没有使用10.6,所以也许苹果改变它。

+1

“自定义标题”设置标记为“窗口标题”的输入。这导致WindowTitle-TabsWindowTitle。如何在标签检查器中设置标记为“Tab Title”的输入? – tponthieux

1

还有围绕这些命令抓住了正确的窗口/标签当一些怪异的行为,但是这结束了在10.5.8(终端V2.0.2)为我工作

tell application "Terminal" 
    do script 
    set currWin to index of first window 

    tell window currWin 
     set custom title of first tab to "A Custom Title" 
    end tell 

    set current settings of window currWin to settings set "Grass" 
end tell 

这里的关键是,do script打开一个新的终端窗口,从而强制它成为'第一'(do script也返回创建的标签索引,但我无法使用它)。

自定义标题仅适用于该窗口。还投了一行来设置终端选项卡的配置文件。

(参考:AppleScript to open named terminal window

的怪异的行为附加 实施例:移除在自定义标题的do script线结果被应用到所有窗口,但只有一个窗口接收的设置来设定变化!

+1

在所有的答案中,这个最适合我的用例。 – pratiksanglikar

1

从Mac OS X Lion 10.7开始,终端仅设置目标选项卡/窗口的custom title属性,而不是更改设置配置文件(它会影响具有该配置文件的所有终端)。在10之前。7,大多数(但不是全部)的终端属性仅适用于目标终端;然而,其中一些适用于终端使用的设置配置文件。那些在10.7更改只影响目标终端。

6

我你从终端本身执行脚本,你可以用一个简单的echo,如:

echo -n -e "\033]0;Tech-Recipes rules\007"

这事件工作,如果你把它里面$PS1使其变为每次提示提示。

来源:How do I set Mac OS X 10.6 Terminal tab title programmatically?

+0

这个源代码链接是递归的吗? – xdhmoore

+0

有人可以添加解释如何工作?我总是无法追踪正确的人/网页的转义序列。 – xdhmoore

1

我一直在寻找这一段时间和@tponthieux在他的评论中提到的,所有这些脚本改变终端窗口的标题不分页标题。不幸的是,似乎没有选择使用现成的苹果脚本来改变标题标题,所以我使用键来完成它,并且它在OSX El Capitan上没有问题。

tell application "Terminal" 
    activate 
tell application "System Events" 
    keystroke "i" using {shift down,command down} 
    keystroke Tab 
    keystroke "yourtitlehere" 
    key code 53 
end tell 
相关问题