2011-07-18 65 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 
相關問題