web-dev-qa-db-ja.com

gnome-terminalでターミナルタブのタイトルを変更するにはどうすればよいですか?

タブを右クリックしてタイトルを変更できるようになりました。これを行う方法がわかりません。 Fedora 21にアップグレードしました。

編集:私はgnome-terminalからROXtermに切り替えました

75
penner

~/.bashrcに関数を作成します。

function set-title() {
  if [[ -z "$ORIG" ]]; then
    ORIG=$PS1
  fi
  TITLE="\[\e]2;$*\a\]"
  PS1=${ORIG}${TITLE}
}

次に、新しいコマンドを使用して端末のタイトルを設定します。名前のスペースも使用できます

set-title my new tab title

その後、set-titleを再び使用することができます(元のPS1はORIGとして保持されます)。

114
Weston Ganger

user titleコードが削除されました1 gnome-terminal 3.14から。タイトルを設定するには、エスケープシーケンスを使用できます。

printf "\e]2;YOUR TITLE GOES HERE\a"

または例: bash

Prompt_COMMAND='echo -ne "\033]0;YOUR TITLE GOES HERE\007"'

1:gnome bug 72411 およびgnome bug 740188 を参照してください。

33
don_crissti

新しいバージョンのgnome-terminalは、最も役立つプロフェッショナル機能を破棄しました。 :

古いバージョンのgnome-terminalをセットアップして実行しようとし、代替案を比較しました。

terminatorがエキゾチックすぎる場合は、mate-terminalは素晴らしいオプションです!これはgnome-terminalのフォークであり、すべての優れた機能を保持しています。

  • コマンドラインから複数のタブを開いて、異なるタイトルを付けることができます

    mate-terminal --tab -t "aaa" --tab -t "bbb" --tab -t "ccc"
    
  • キーボードショートカットを設定して(Ctrl + Shift ----(iを使用)、t i tleを設定できます

20
geekQ

Ubuntu 16.04を使用している場合は、次の操作が必要になることがあります。

PS1=$
Prompt_COMMAND=
echo -en "\033]0;New title\a"

link に詳細を記載しています。

1
Zach Pfeffer

これを.bashrcに入れます:

function title() { 
  p1='echo -ne "\033]0;' 
  p2='\007"'
  Prompt_COMMAND=$p1$@$p2 
  p1= 
  p2=
}
1
Mark

@ Weston Ganger この関数を書き( そしてここに投稿 )して_~/.bashrc_に入れます:

_function set-title() {
  if [[ -z "$ORIG" ]]; then
    ORIG=$PS1
  fi
  TITLE="\[\e]2;$*\a\]"
  PS1=${ORIG}${TITLE}
}
_

次に、_set-title TERMINAL NAME_を呼び出して端末のタイトルを設定できます(名前を囲む引用符はオプションです)。

それは私にはかなり不思議に見えました( 彼の回答 の下にある私のコメントを参照)、私は昨夜数時間を費やして、彼が何をしたか、なぜそれが機能したのかを理解するために勉強しました。これが私が見つけたものです:

  1. _gnome-terminal_ 3.16.2以降( この回答の下のコメントを参照 )以降、「オプション_--title_はサポートされなくなりました。」それ以外の場合は、_gnome-terminal --title="my title"_を実行するだけです ここで使用していたように
  2. この答えはここ 、およびこの答えの周りの多くのコメントに従って、上記のスクリプトのすべての入力引数を表すには、_$@_ではなく_$*_を使用する必要があります。明らかに_$@_は「すべての入力引数」を表すPOSIXの方法であるため、バグが発生しにくく、互換性が高くなります。したがって、以下のバージョンでは、_$@_ではなく_$*_を使用しています。
  3. ほぼすべての端末で(特定の端末がサポートしている限り)、 インバンドシグナリング "の形式である ANSIエスケープコード があることがわかります端末のタイトルを設定するために使用できます。この ここで最も優れたarchlinux wiki の「ターミナルウィンドウタイトルのカスタマイズ」というタイトルのセクションを参照してください。端末のタイトルを設定するBashエスケープシーケンスは次のようになります:_\[\e]2;new title\a\]_。このタイトルを端末ウィンドウに適用するには、その "Prompt String 1"または_PS1_変数 、この「セットタイトル」エスケープシーケンスafterを追加することにより、現在のプロンプト文字列1のようになります:_PS1="${PS1}\[\e]2;new title\a\]"_。 _gnome-terminal_は_--title_引数をサポートしないため、これがタイトルを設定する唯一の方法であると思われます。

さて、これがWeston Gangerの関数の私のバージョンで、広範な説明コメントがあります。これは my dotfiles になるので、失うことはありません。

_# Set the title string at the top of your current terminal window or terminal window tab
set-title() {
    # If the length of string stored in variable `PS1_BAK` is zero...
    # - See `man test` to know that `-z` means "the length of STRING is zero"
    if [[ -z "$PS1_BAK" ]]; then
        # Back up your current Bash Prompt String 1 (`PS1`) into a global backup variable `PS1_BAK`
        PS1_BAK=$PS1 
    fi

    # Set the title escape sequence string with this format: `\[\e]2;new title\a\]`
    # - See: https://wiki.archlinux.org/index.php/Bash/Prompt_customization#Customizing_the_terminal_window_title
    TITLE="\[\e]2;$@\a\]"
    # Now append the escaped title string to the end of your original `PS1` string (`PS1_BAK`), and set your
    # new `PS1` string to this new value
    PS1=${PS1_BAK}${TITLE}
}
_

使用例:

  • 静的なタイトル文字列(タイトルは固定されたままです):
    • _set-title my tab 1_ OR _set-title "my tab 1"_
    • _set-title $PWD_ OR _set-title "$PWD"_
  • 動的なタイトル文字列(端末コマンドを入力するたびにタイトルが更新されます):タイトル文字列内で関数呼び出しまたは変数を使用して、それらを使用できますdynamically新しいコマンドを入力するたびに更新されます。コマンドを入力するか、タイトル文字列内のグローバル変数にアクセスします。 これが機能するためには、タイトル文字列を必ず単一引用符で囲んでください!
    • _set-title '$PWD'_-これにより、新しいディレクトリにcdするたびに、現在の作業ディレクトリのタイトルが更新されます。
    • set-title '$(date "+%m/%d/%Y - %k:%M:%S")'-タイトルが変更されるたびにタイトルが新しい日付と時刻に更新され新しい端末コマンドを入力します!形式は次のようになります:_02/06/2020 - 23:32:58_

関連:

  1. https://askubuntu.com/questions/315408/open-terminal-with-multiple-tabs-and-execute-application/1026563#102656
  2. 私のdotfiles(構成ファイル、スクリプト、および一般的なユーザー設定): https://github.com/ElectricRCAircraftGuy/eRCaGuy_dotfiles

主な参考資料:

  1. gnome-terminalでターミナルタブのタイトルを変更する方法
  2. https://wiki.archlinux.org/index.php/Bash/Prompt_customization#Customizing_the_terminal_window_title
  3. https://www.thegeekstuff.com/2008/09/bash-Shell-take-control-of-ps1-ps2-ps3-ps4-and-Prompt_command/
  4. bashのプロンプト変数がPS1と呼ばれるのはなぜですか?
  5. Bashリファレンスマニュアル: https://www.gnu.org/savannah-checkouts/gnu/bash/manual/bash.html
1
Gabriel Staples

Topやsshなどの常駐プログラムを実行すると、タブは適切にラベル付けされます。

gnome-terminal --tab -e top -t "aaa" --tab -e top -t "bbb" 
1
fastrizwaan

1行の解決策、次の行を.bashrcに追加します

alias tab_name='read -p "Name to Assign:" tabname ;  printf "\e]2;$tabname\a" '

ターミナルでtab_nameと入力します。

user:~$ tab_name  
Name to Assign: ( type desired name here! )

完了

0
Sufyan

私は同じ問題を抱えていて、マウスの右クリックからタブタイトルを設定する簡単な方法がないことを発見しました(私とほとんどの同僚が慣れている方法です)。それは同時にとても苛立たしいものでした:(。したがって、私たちの場合、解決策は端末を切り替えることでした。そのため、サクラなどの代替案を検索し、最終的にxfce-terminalに落ち着いたら、以下のコマンドを使用してインストールします

Sudo apt-get install xfce4-terminal

プロファイルと右クリックしてタブ名を変更するコマンドを提供します。他のすべての機能はGnomeに似ています

0
Tabrez Shaikh

@Weston Gangerの答えの拡張として、新しいGnome端末を開いたときに自動的にタイトルを設定する場合は、これを~/.bashrcの下部に追加します。

if [ ! -z "$SET_TITLE" ]; then
    set-title $SET_TITLE;
    export SET_TITLE=;
fi

次に、次のようなターミナルを起動します。

gnome-terminal --tab -e 'bash -c "export SET_TITLE=\"my title\"; bash -i"'

そして、自動的にset-titleを実行してタイトルを適用します。

0
Cerin