Ubuntu 15.04全新安装:无法重命名gnome-terminal选项卡

在Ubuntu 14.10中,如果我打开了多个终端选项卡,我可以右键单击终端选项卡并重命名。 在Ubuntu 15.04中,我找不到此function。

是否有一种简单的方法可以取回它?

这是当前版本:

$ gnome-terminal --version GNOME Terminal 3.14.2 

这里回答

我引用:

user title代码已从gnome-terminal 3.14删除1 。 使用转义序列只有一种设置标题的方法 – 例如使用bash

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

1:看gnome bug 724110和gnome bug 740188 。

Kirby提出的.bashrc解决方案为我工作:

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

然后从我的提示: $ set-title test-title

我无法相信他们删除了像这样的用户友好function。

我正在转向ROXTerm( http://roxterm.sourceforge.net ),它可以很好地完成工作。 它在Ubuntu中打包:

 sudo apt-get install roxterm 

然后,让恐龙继续自己的方式;-)

我已经按照上面的建议尝试了RoxTerm,效果很好。 但我决定在MATE终端,这是MATE项目的一部分,是Gnome 2的延续,于15.04:

 sudo apt-get install mate-terminal 

该终端基于Gnome终端代码。


评论:很难理解Gnome终端开发者的心态。 那里有很多关于如何命名终端标签的讨论,以及如何很难做到正确。 如果是这种情况,为什么要让用户更难命名呢? 根本不是很聪明。

现在我已经调查了一天中的大部分时间,最后找到了设置这个标题的方法。 它是通过以\ e] 0开头的转义序列完成的; 并以BEL字符结尾(= \ 007 = \ a)。 与我上面提到的不同,通过这样的转义序列(还有一些),从shell返回到终端应用程序的通信非常有限的。

从上面讲这个:

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

可以工作,但并不总是如此。 PROMPT_COMMAND是一个变量,每次发送命令时都会执行内容,因此它也会发送此转义序列。 但是,这可以通过PS1变量中的转义序列覆盖,该转换设置命令行提示。 这就是为什么上面没有效果的原因。

从较旧的Ubuntu安装中我抓住了这个,它设置了命令提示符(右边部分,在] )并且还发送了所需的转义序列(左边部分,直到并包括] :):

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

这可能表现得更好,因为每次都不需要解释$PROMPT_COMMAND 。 它还有更多的选项,因为Bash在这里有更多的转义序列,例如\u表示当前用户名, \W表示当前目录名称, \w表示当前工作目录的整个路径,可选择修剪为最后一个$PROMPT_DIRTRIM的数字$PROMPT_DIRTRIM 。 请参阅Bash手册页中的PROMPTING一章。 另请注意,转义序列还必须由\[\]包围。

要设置固定标题,这可以:

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

请享用!


在调查过程中,我还尝试了解gnome-terminal源代码,这导致了vte源代码,并且支持标题设置和读取转义序列被认为是安全风险:请参见此处 (案例20,案例21)和此处 (“窗口标题报告”)。

如上所示设置$ PROMPT_COMMAND在此处没有效果。 毫不奇怪,因为Bash在终端内部运行,而父进程(这里:gnome-terminal)无法在类似unix的操作系统上读取子环境。 使用更简单的东西,比如

 PROMPT_COMMAND='echo bla' 

执行echo bla ,没有其他事情发生。

编辑:必须将其包装在转义序列中,请参阅我的其他答案。 尽管阅读儿童环境是不可能的,但通过这些序列,一些回馈父母的信息。

在Gnome bug 740188中,他们讨论了在.bashrc中定义title()函数。 打开每个标签的另一个标签? 如果可能的话,严重丑陋的黑客攻击!

甚至关于Stackexchange的其他解释也谈到设置$ PS1(并获得upvoted)。 对不起,不,这不是标题,那是命令提示符。

简而言之:他们搞砸了无法修复,以便在首选项对话框中节省一点空间。 我的天啊

现在,让开发人员决定恢复的唯一机会是点燃严重的暴乱,否则他们只需在几秒钟内关闭您的错误报告(尝试了很多次)。 我们如何创造这种shitstorm?