当前位置: 首页>>技术问答>>正文


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

, ,

问题描述

在Ubuntu 14.10中,如果我打开了多个终端选项卡,我可以将right-click作为终端选项卡并重命名。在Ubuntu 15.04中我找不到此功能。

有没有简单的方法来恢复它?

这是当前版本:

$ gnome-terminal --version
GNOME Terminal 3.14.2

最佳解决办法

回答了here

我引用:

The user title code was removed1 from gnome-terminal 3.14. There’s only one way to set the title, using an escape sequence – e.g. with bash:

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?

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/2035.html,未经允许,请勿转载。