2011-07-18 31 views
4

私はAppleScriptを学びたいと思っています。最終的には、私が現在取り組んでいるコンテキストに合わせて、ターミナルのタブのタイトルをプログラマチックに設定したいのです。簡単な作業でなければならず、おもう。これはこれまでの実験コードです...Mac OS X 10.6 Terminalタブのタイトルをプログラムで設定するにはどうすればよいですか?

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のプロパティが読み取られていないか、またはこのプロパティが私の考えることを実行していないかのようです。

正確に1つのタブのタイトルをカスタム値に設定するにはどうすればよいですか?

+0

「最前面が真である最初のウィンドウのインデックスにfrontIndexを設定する」は不要であることに注意してください。デフォルトでは、 'front window'または' window 1'は常に最前面のウィンドウです。 –

+0

10.6.8では、「title titles custom title」をtrueに設定する前に、タブ/ウィンドウの他のタイトル関連プロパティをfalseに設定することが重要であることが判明しました。「titleはデバイス名を表示します」、「titleはシェルパスを表示します。 msgstr "タイトルはウィンドウサイズを表示します" msgid。私がこれをしなかった場合、他のブール値はfalseのままになり、私のタイトル更新はすべて、変更しようとしていた特定のウィンドウ/タブではなく、すべてのウィンドウの「設定セット」に移動します。 OS Xの将来のバージョン用のYMMV – 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" 

bashcsh:1つのタブにカスタムタイトルを設定すると、にこのコードあたりすべてのウィンドウ内のすべてののタブが適用されます、zsh,ksh、個々のタブには適用されません。私がターミナルをやめて戻ってきても、 "バー"はどこにでも表示されます。私は、CLインターフェースがどのように確実にわかるかについて私が十分にわからないことを自由に認めます。

同時に、AppleScriptを学習している場合は、Finderや何かのように、ちょっとわかりにくいもので学習することをお勧めします。 TerminalがApplescriptで書かれているよりも、読み込みに便利なことがあります。

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 

私はので、多分、Appleはそれを変更し、私は10.6を使用していませんでした認めます。

+1

「カスタムタイトル」は、「ウィンドウタイトル」とマークされた入力を設定します。これにより、WindowTitle-TabsWindowTitleが生成されます。タブインスペクタで「タブタイトル」とマークされた入力をどのように設定しますか? – tponthieux

1

あり、正しいウィンドウ/タブをつかんで、これらのコマンドの周りにいくつかの奇妙な行動だが、これは、ここでキーがdo scriptが開くということです

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 

10.5.8(ターミナルv2.0.2)に私のために働いてしまいました新しいターミナルウィンドウを開き、最初のウィンドウを強制的に作成します(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、例えば使用することができ、ターミナル自体からスクリプトを実行している:それは変わるあなたが$PS1内に置く場合よう

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

これイベントが動作しますプロンプトが表示されるたびに

ソース:私はしばらくの間、この探していたし、彼のコメントで述べた@tponthieuxとして、すべてのこれらのスクリプトは、ターミナルウィンドウのタイトルではないタブのタイトルを変更How do I set Mac OS X 10.6 Terminal tab title programmatically?

+0

このソースリンクは再帰的ですか? – xdhmoore

+0

誰かがこの仕組みの説明を追加できますか?私は常にエスケープシーケンスのために適切な人/ウェブページを追跡するのに問題があります。 – xdhmoore

1

。残念ながら、準備が整ったリンゴスクリプトでタブのタイトルを変更するオプションはないようですので、キーを使用してそれを行い、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 
関連する問題