zshでiTerm2ウィンドウとタブのタイトルを変更する


50

ターミナルセッションのウィンドウタブにラベルを付けたい。OSXのiterm2でzshellを使用しています。ターミナルでウィンドウタブのラベルを動的に変更することは可能ですか?

回答:


48

以下を入力してzsh、iTerm2のウィンドウタイトルを設定できます。

echo -ne "\e]1;this is the title\a"

これを自動化して、たとえば現在の時刻や作業ディレクトリを挿入する場合は、zsh構成ファイルを編集して、precmd()関数のタイトルをegに設定します$PWD

echo -ne "\e]1;$PWD\a"

セクションのprecmd機能について読むことができます。man zshmiscSPECIAL FUNCTIONS

ここに画像の説明を入力してください


3
コマンドecho -ne "\ e] 1; this is the title \ a"を実行しても、タブのタイトルは変わりません。iterm2で変更する必要がある設定はありますか?
-bneil

15
理解した。iterm-> preferences-> appearanceセクションでウィンドウとタブのタイトルのオプションをすべて選択解除する必要があります。そして、.zshrcでエクスポートDISABLE_AUTO_TITLE = "true"のコメントを解除/追加する必要があります。ありがとう@Daniel Beck
bneil

3
を設定する必要もありProfiles > Terminal > Terminal Emulation > Terminal may set tab/window titleます。
ヴォーン

1
これはiTermの最新バージョン(3.3.0)では機能しません(少なくとも私にとっては)
iconoclast

そして、最新の安定バージョンに私のために動作しませんiTerm2(3.2.9)
jalanb

45

私のために働くもの:

echo -e "\033];this is the title\007"

Mac OSXとiTermを使用している場合、iTerm2 ::

  • iTerm→設定→外観→ウィンドウとタブのタイトル→すべてのチェックを外します

zshを使用する場合、設定を編集する必要がある場合があります。通常、設定はファイルにあります~/.zshrc。設定を追加または編集して、この行が存在することを確認します。

DISABLE_AUTO_TITLE="true"

2
2018年2月28日現在でも機能します。
Salep

38

iTermを使用するメリットの1つは、ウィンドウタイトルとタブタイトルを個別に設定できることです。 タブとウィンドウのタイトルを別々に使用する例

# $1 = type; 0 - both, 1 - tab, 2 - title
# rest = text
setTerminalText () {
    # echo works in bash & zsh
    local mode=$1 ; shift
    echo -ne "\033]$mode;$@\007"
}
stt_both  () { setTerminalText 0 $@; }
stt_tab   () { setTerminalText 1 $@; }
stt_title () { setTerminalText 2 $@; }

これにより、どのウィンドウでどのホストに接続しているかをすぐに確認でき、各タブのウィンドウタイトルにはユーザーとCWDが表示されます。


2
OS X LionのTerminal.appバージョンもこれをサポートしていることに気付きました。
Orangenhain

愚かな質問:これらのコードを.bashrcに追加しますか?
qazwsx

また、ウィンドウタイトルを変更するまで(iTerm2 Build 1.0.0.20140629で)表示されます...何があってもタブタイトルを追跡します。私はそれが設定だと確信しています。ウィンドウのタイトルが変更されると(2)、タブのタイトルは追跡されなくなります。
メイ14

上記の関数を修正してDISABLE_AUTO_TITLE="true"、問題を修正する行を含めるようにしました。タイトルを設定しない場合、この方法で自動タイトル機能を利用できます
-user15681

5

A precmdはトリックを行います。ただし、いくつかのoh-my-zshテーマはウィンドウのタイトルを台無しにします。PR_TITLEBAR修正するには、空の文字列に設定します。

set-window-title() {
  # /Users/clessg/projects/dotfiles -> ~/p/dotfiles
  window_title="\e]0;${${PWD/#"$HOME"/~}/projects/p}\a"
  echo -ne "$window_title"
}

PR_TITLEBAR=''
set-window-title
add-zsh-hook precmd set-window-title

また、[設定]-> [外観]でiTerm2のタブ設定を試してみることをお勧めします。



2

おそらくiterm2バージョン(3.3.3)の場合、答えはどれもうまくいかないようです。

私はこれを見つけました:https : //gist.github.com/phette23/5270658#gistcomment-3020766

基本的に、他のすべての答えで言われたことは何でもできますが、設定する必要もあります Preferences > Profiles > General > Title -> Name (Job)

これは私のために働いた。


これは下にないGeneral、それは下だ、タブProfilesタブ
Falmarri

右。見逃した> Profiles。私の悪い。更新しました。
ヌーノゴンサルベス

1

受け入れられた答えは私のために長い間働いていましたが、iTerm2の最新バージョンでは壊れています。私が見つけた回避策は、Python APIを有効にして、タブ名を次のように設定するスクリプトを作成することでした:

#!/usr/bin/env python3.7
import argparse

import iterm2

def get_args():
    parser = argparse.ArgumentParser(description='Set the tab name')
    parser.add_argument('name')
    return parser.parse_args()

ARGS = get_args()

async def main(connection):
    app = await iterm2.async_get_app(connection)
    window = app.current_terminal_window
    if window is not None:
        tab = window.current_tab
        await tab.async_set_title(ARGS.name)
    else:
        # You can view this message in the script console.
        print("No current window")

iterm2.run_until_complete(main)

「tab_name.py」として保存し、次のコマンドで起動します:

~/Library/ApplicationSupport/iTerm2/iterm2env/versions/*/bin/python3 ~/Library/ApplicationSupport/iTerm2/Scripts/tab_name.py "new tab name"

受け入れられている答えほど美しくもエレガントでもありませんが、機能します。


-2

iTerm->設定->外観->ウィンドウとタブのタイトル->プロファイル名の表示オプションをチェック


1
スーパーユーザーへようこそ!このQ&Aサイトでは、人々が尋ねる質問に対して適切な回答を提供するよう努めています。良い答えを書くことの一部は、提案されたソリューションのコンテキストを提供することです。回答を編集して、ソリューションが機能する理由と、具体的には何が機能するのかを説明してください。
cascer1
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.