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?