web-dev-qa-db-ja.com

Ubuntu 15.04の新規インストール:gnome-terminalタブの名前を変更できません

Ubuntu 14.10では、複数の[ターミナル]タブを開いていた場合、[ターミナル]タブを右クリックして名前を変更できました。 Ubuntu 15.04では、この機能が見つかりません。

それを取り戻す簡単な方法はありますか?

これは現在のバージョンです。

$ gnome-terminal --version
GNOME Terminal 3.14.2
38
Tom

回答済み こちら

引用:

user titleコードが削除されました1 gnome-terminal 3.14から。エスケープシーケンスを使用してタイトルを設定する方法は1つしかありません。 bashで:

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

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

21
A.B.

.bashrcソリューション カービーが提案 私のために働いた:

set-title(){
  ORIG=$PS1
  TITLE="\e]2;$@\a"
  PS1=${ORIG}${TITLE}
}

その後、私のプロンプトから:$ set-title test-title

31
ronan_mac

このようなユーザーフレンドリーな機能が削除されたとは信じられません。

私はROXTerm( http://roxterm.sourceforge.net )に切り替えていますが、これはうまく機能しています。 Ubuntuにパッケージ化されています。

Sudo apt-get install roxterm

その後、恐竜が独自の方法を続けましょう;-)

18

上記のようにRoxTermを試しましたが、良い結果が得られました。しかし、15.04にGnome 2の続きであるMATE Projectの一部であるMATEターミナルに落ち着きました。

Sudo apt-get install mate-terminal

その端末はGnome端末コードに基づいています。


解説:Gnome Terminal開発者の考え方を理解するのは難しいです。ターミナルタブに名前を付ける「方法」と、それを正しく行うのがいかに難しいかについて、多くの議論があります。その場合、ユーザーが名前を付けにくくするのはなぜですか?まったくスマートではありません。

14
Doug Van Horn

今、私は一日の大部分についてこれを調査し、最終的にこのタイトルを設定する方法を見つけました。\e] 0で始まるエスケープシーケンスを介して行われます。そして、BEL文字(=\007 =\a)で終わります。上記で述べたのとは異なり、シェルからターミナルアプリケーションへの通信は、このようなエスケープシーケンスを介して、非常に制限された可能です(さらにいくつかあります)。

上からこれについて:

Prompt_COMMAND='echo -ne "\e]0;YOUR TITLE GOES HERE\a"'

それはcan動作しますが、常に動作するとは限りません。 Prompt_COMMANDは、コマンドを送信するたびに内容が実行される変数なので、このエスケープシーケンスも送信します。ただし、これはコマンドラインプロンプトを設定するPS1変数のエスケープシーケンスによってオーバーライドできます。これが、上記がここで効果を持たなかった理由です。

古いUbuntuインストールから、コマンドプロンプト(]の後の右部分)を設定し、必要なエスケープシーケンス(左部分、]まで)を設定するこれを取得しました。

PS1="\[\e]0;\u@\h: \w\a\]\u@\h:\w\$ "

毎回$Prompt_COMMANDを解釈する必要がないため、これはおそらくパフォーマンスが向上します。また、Bashにはより多くのエスケープシーケンスがあるため、より多くのオプションがあります。 \uは現在のユーザー名、\Wは現在のディレクトリ名、または\wは現在の作業ディレクトリのパス全体です。オプションで、$Prompt_DIRTRIM。 Bash manページのPROMPTINGの章を参照してください。また、エスケープシーケンスは、ここで\[\]でさらに囲む必要があることに注意してください。

固定タイトルを設定するには、これが機能します:

PS1="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "

楽しい!


調査中に、vteソースコードにつながるgnome-terminalソースコードも理解しようとしましたが、タイトル設定とエスケープシーケンスの読み取りのサポートはセキュリティリスクと見なされます: here (case 20、ケース21)および here ( "Window Title Reporting")。

6
Traumflug

上記のように$ Prompt_COMMANDを設定しても、効果はありません。 Bashは端末内で実行され、親プロセス(ここではgnome-terminal)はUNIXのようなOSで子供の環境を読み取ることができないため、驚きはありません。もっとシンプルなものを使う

Prompt_COMMAND='echo bla'

echo blaを実行し、他には何も起こりません。

編集:これをエスケープシーケンスでラップする必要があります。他の回答を参照してください。子環境を読み取ることはできませんが、これらのシーケンスを介して、親とやり取りすることができます。

Gnomeバグ740188では、.bashrcでtitle()関数を定義することについて話します。開いたタブごとに異なるものですか?可能であれば、深刻ないハッキングを前もって!

Stackexchangeに関する他の説明でも、$ PS1の設定について説明しています(そして、賛成を得ます)。申し訳ありませんが、それはタイトルではなく、コマンドプロンプトです。

要するに、環境設定ダイアログのスペースを少し節約するために、修復を超えてそれを台無しにしました。ああ、神様

現在、開発者の決定を取り消す唯一のチャンスは、激しいKindleをKindleにすることです。そうしないと、数秒でバグレポートが閉じられます(何度も何度も試されます)。このシットストームをどのように作成しますか?

5
Traumflug