web-dev-qa-db-ja.com

Ubuntu 16.04でターミナルのタイトルを変更する方法

私がubuntu 14.04を使用していたとき、タイトルを設定するのは簡単です。 F2を押すか、マウスをトップメニューに移動します。しかし、ubuntu 16.04にはメニューがなく、F2を押してもタイトルを変更できません。私は何をすべきか?

29
Vikrant

多くのプログラムはタイトルを上書きするので、タイトルが修正されたり、他のウィンドウで複製されたりしないように頼ることはできません。これは、gnome-terminalでのリモートsshセッションで特にそうです。それはまだ大いに役立ちますが、ウィンドウマネージャが一致を行うのに十分な信頼性がないため(削除したと思う理由です(Amias Channerによる追加))、この機能は最新のgnome-terminalで削除されました。ただし、タイトルを変更する可能性はまだありますが、コマンドで変更できます。これを実現するには、~/.bashrcファイルを簡単に編集し、次の行を追加します。

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

これにより、コマンドset-title <name you want to set it to>を使用するだけでターミナルウィンドウのタイトルを設定できます。これは、ANSIエスケープコードにより可能です。そのため、コードの実行場所に関係なく、すべてのプログラムで出力できます。それが\ eビットと\ aビットの機能です。 (Amias Channerによる追加)。

ここで見つけた解決策 と、16.04 LTSで実行して以来、自分で使用しています。

36
Videonauth

Videonauthのソリューションはbash固有であるため、他のシェル(kornシェルまたはcシェルまたはmkshまたはtcshなど)を使用すると機能しません。また、PS1プロンプトを編集してタイトルを設定します(何らかの理由でbashのタイトルに影響します)。以下に、mkshを使用したgnome-terminalの例を示します。

enter image description here

私が個人的に使用しているのはこれです:

setTitle() {
    echo -e "\033]0;$@\007" 
}

このコマンドはエスケープシーケンスを使用し、Shell-agnosticです。つまり、bash以外のシェルでも機能します。小さな欠点は、これを微調整する場合、ASCIIエスケープシーケンスを知る必要があることです。

10

これは、私の~/.bashrcファイルで使用する関数です。

function termtitle() { PS1="${PS1/\\u@\\h: \\w/$@}"; }

追加(または変更)した後、ファイルのリソースを追加する必要があります。

. ~/.bashrc

使用するには、次のように入力します。

termtitle Special Projects

タイトルを一度変更したら、リソースを再度変更する必要があります。

. ~/.bashrc
termtitle My new title
1