Ubuntu 14.10では、複数の[ターミナル]タブを開いていた場合、[ターミナル]タブを右クリックして名前を変更できました。 Ubuntu 15.04では、この機能が見つかりません。
それを取り戻す簡単な方法はありますか?
これは現在のバージョンです。
$ gnome-terminal --version
GNOME Terminal 3.14.2
回答済み こちら
引用:
user title
コードが削除されました1gnome-terminal 3.14
から。エスケープシーケンスを使用してタイトルを設定する方法は1つしかありません。bash
で:Prompt_COMMAND='echo -ne "\033]0;YOUR TITLE GOES HERE\007"'
1:gnome bug 72411 およびgnome bug 740188 を参照してください。
.bashrc
ソリューション カービーが提案 私のために働いた:
set-title(){
ORIG=$PS1
TITLE="\e]2;$@\a"
PS1=${ORIG}${TITLE}
}
その後、私のプロンプトから:$ set-title test-title
このようなユーザーフレンドリーな機能が削除されたとは信じられません。
私はROXTerm( http://roxterm.sourceforge.net )に切り替えていますが、これはうまく機能しています。 Ubuntuにパッケージ化されています。
Sudo apt-get install roxterm
その後、恐竜が独自の方法を続けましょう;-)
上記のようにRoxTermを試しましたが、良い結果が得られました。しかし、15.04にGnome 2の続きであるMATE Projectの一部であるMATEターミナルに落ち着きました。
Sudo apt-get install mate-terminal
その端末はGnome端末コードに基づいています。
解説:Gnome Terminal開発者の考え方を理解するのは難しいです。ターミナルタブに名前を付ける「方法」と、それを正しく行うのがいかに難しいかについて、多くの議論があります。その場合、ユーザーが名前を付けにくくするのはなぜですか?まったくスマートではありません。
今、私は一日の大部分についてこれを調査し、最終的にこのタイトルを設定する方法を見つけました。\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")。
上記のように$ Prompt_COMMANDを設定しても、効果はありません。 Bashは端末内で実行され、親プロセス(ここではgnome-terminal)はUNIXのようなOSで子供の環境を読み取ることができないため、驚きはありません。もっとシンプルなものを使う
Prompt_COMMAND='echo bla'
echo blaを実行し、他には何も起こりません。
編集:これをエスケープシーケンスでラップする必要があります。他の回答を参照してください。子環境を読み取ることはできませんが、これらのシーケンスを介して、親とやり取りすることができます。
Gnomeバグ740188では、.bashrcでtitle()関数を定義することについて話します。開いたタブごとに異なるものですか?可能であれば、深刻ないハッキングを前もって!
Stackexchangeに関する他の説明でも、$ PS1の設定について説明しています(そして、賛成を得ます)。申し訳ありませんが、それはタイトルではなく、コマンドプロンプトです。
要するに、環境設定ダイアログのスペースを少し節約するために、修復を超えてそれを台無しにしました。ああ、神様
現在、開発者の決定を取り消す唯一のチャンスは、激しいKindleをKindleにすることです。そうしないと、数秒でバグレポートが閉じられます(何度も何度も試されます)。このシットストームをどのように作成しますか?