问题描述
在Ubuntu 14.10中,如果我打开了多个终端选项卡,我可以将right-click作为终端选项卡并重命名。在Ubuntu 15.04中我找不到此功能。
有没有简单的方法来恢复它?
这是当前版本:
$ gnome-terminal --version
GNOME Terminal 3.14.2
最佳解决办法
回答了here
我引用:
The
user title
code was removed1 fromgnome-terminal 3.14
. There’s only one way to set the title, using an escape sequence – e.g. withbash
:PROMPT_COMMAND='echo -ne "\033]0;YOUR TITLE GOES HERE\007"'
1: see gnome bug 724110 and gnome bug 740188.
次佳解决办法
.bashrc
解决方案proposed by Kirby为我工作:
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,效果很好。但我决定在MATE终端,这是MATE项目的一部分,是Gnome 2的延续,于15.04:
sudo apt-get install mate-terminal
该终端基于Gnome终端代码。
评论:很难理解Gnome终端开发者的心态。那里有很多关于”how”来讨论终端标签的讨论,以及如何很难做到正确。如果是这种情况,为什么让用户更难命名呢?根本不是很聪明。
第五种办法
现在我已经在一天中的大部分时间里对此进行了调查,并最终找到了设置此标题的方法。它是通过以\ 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
中的数字修剪到最后几个。请参阅Bash手册页中的PROMPTING
一章。另请注意,此处的转义序列还包括\[
和\]
。
要设置固定标题,这适用于:
PS1="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "
请享用!
在调查期间,我还尝试了解gnome-terminal源代码,这导致了vte源代码,并且支持标题设置和读取转义序列被认为是安全风险:请参阅here(案例20,案例21)和here(“窗口标题报告“)。
第六种办法
如上所示设置$ PROMPT_COMMAND在此处没有效果。毫不奇怪,因为Bash在终端内部运行,而父进程(此处:gnome-terminal)无法在unix-like OS上读取子环境。使用更简单的东西,比如
PROMPT_COMMAND='echo bla'
执行echo bla,没有其他事情发生。
编辑:必须将其包含在转义序列中,请参阅我的其他答案。尽管阅读儿童环境是不可能的,但通过这些序列,一些回馈父母的信息。
在Gnome bug 740188中,他们讨论了在.bashrc中定义a title()函数。打开每个标签的另一个标签?如果可能的话,严厉丑陋的黑客攻击!
甚至关于Stackexchange的其他解释也谈到设置$ PS1(并获得upvoted)。对不起,不,那不是标题,那是命令提示符。
简而言之:他们搞砸了无法修复,以便在首选项对话框中节省一点空间。我的天啊
现在,让开发人员决定恢复的唯一机会是点燃严重的暴风雨,否则他们只需在几秒钟内关闭您的错误报告(尝试了很多次)。我们如何创造这种shitstorm?