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


38

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

有一种简单的方法可以找回它吗?

这是当前版本:

$ gnome-terminal --version
GNOME Terminal 3.14.2

Answers:


21

在这里回答

我引用:

user title代码除去1gnome-terminal 3.14。只有一种方法可以使用转义序列来设置标题-例如bash

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

1:请参阅gnome 错误724110和gnome 错误740188


10
感谢您的回答。真遗憾,它已经消失了,我希望他们在下一个发行版中重新添加它,与此同时,我将使用转义序列而不是右键单击方法。
汤姆(Tom)

2
@Tom撰写错误报告=)
AB

13
这不仅仅是一种耻辱:这是胡说八道。我想把Debian Wheezy“升级”到Jessie只是一个糟糕的主意,只是要拥有我以前拥有的所有东西(还不确定,实际上),但是更糟。错误的决定和愚蠢的缺陷(例如,在gdm3中,我安装的可能的wm /会话列表既不适合也不滚动,因此剪切简单,因此无法选择所有的wm)。对我而言,GNOME从此就注定了失败gnome-shell。它也消失了,在新窗口或选项卡中打开新终端的菜单也消失了(但是您仍然可以通过快捷方式来完成它。为什么?用一个大的智能按钮替换所有内容:单击即可执行任何操作!)
ShinTakezou

2
通常,新版本会添加而不删除功能。
angelcervera '16

2
我做了一个名为tab的命令(shell脚本),该命令只包含echo -ne“ \ 033] 0; $ 1 \ 007”,所以现在在任何选项卡中,我都可以运行Tab TABNAME来设置选项卡标题。不如右键单击该选项卡进行重命名那样方便,但是现在就可以了。谢谢AB!
Brian Pipa

31

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

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

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


2
在15.10上对我来说效果很好,唯一的警告是每次运行它时都将其附加到PS1,因此不要从脚本执行此操作。在我用以下方式调用它几次后set-title "longer and "echo $PS1 \[\e]0; \u@\h: \w \a\]\u@\h:\w\[\033[m\]$(__git_ps1)$ \e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a
ahcox '16

1
在ubuntu 16.04上为我工作!
Programster

1
像魅力一样工作!
sharadendu sinha

我如何在前台进程运行时更改标题,而又不想中止运行?
贾尼斯·埃默里斯(JānisElmeris)'17

1
我认为您可以通过先使用Control + Z,然后暂停set-title X然后fg恢复该过程来暂停此过程。
ronan_mac

18

我不敢相信他们删除了这样的用户友好功能。

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

sudo apt-get install roxterm

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


1
如何在roxterm中更改标签标题?我找不到
Halil 2015年

也将适用于16.04
prusswan

哇,无法将终端设置为带有gnome-terminal的后台,而且我从不明白为什么...这是终端本身的问题。devilspie终端的背景在roxterm下工作很酷。
erm3nda

1
RoxTerm很棒而且仍然可以正常工作,但是遗憾的是不会持续更长的时间:sadface :: sourceforge.net/p/roxterm/discussion/422638/thread/60da6975
Williams

我从那时起切换到终结者,而没有使用任何RoxTerm更多....
迈克尔Opdenacker

14

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

sudo apt-get install mate-terminal

该终端基于Gnome终端代码。


评论:很难理解Gnome Terminal开发人员的心态。那里有很多关于“如何”命名终端标签,以及如何很难正确命名的讨论。如果是这样,为什么还要使用户更难命名呢?一点都不聪明。


6

现在,我已经调查了一天的大部分时间,终于找到了设置此标题的方法。通过以\ e] 0开头的转义序列来完成;并以BEL字符结尾(= \ 007 = \ a)。与上文所述不同,通过这样的转义序列(还有更多),从外壳到终端应用程序的通信非常有限的。

关于以上内容:

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。请参见PROMPTINGBash手册页中的章节。还请注意,转义序列还必须被\[\]在此处包围。

要设置固定标题,可以使用以下方法:

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

请享用!


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


这不仅设置了标题,而且还抹去了先前PS1用于其他用途的任何定义,例如设置自定义命令提示符。我只是尝试将您的转义序列添加到现有PS1内容上,这似乎可行。像这样: PS1+="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "
ahcox

5

如上所示,设置$ PROMPT_COMMAND在这里无效。毫不奇怪,因为Bash在终端中运行,并且父进程(在这里:gnome-terminal)无法在类似Unix的OS上读取子级环境。使用更简单的方法,例如

PROMPT_COMMAND='echo bla'

执行echo bla,什么也没有发生。

编辑:必须将其包装在转义序列中,请参阅我的其他答案。尽管无法读取子级环境,但通过这些顺序可以与父级进行一些通信。

在Gnome错误740188中,他们讨论了在.bashrc中定义title()函数的问题。每个打开的标签页都有不同的标签吗?如果可能的话,要进行严重的骇客入侵!

甚至关于Stackexchange的其他说明都讨论了设置$ PS1(并被投票)。抱歉,不,不是标题,是命令提示符。

简而言之:他们将其弄乱了,无法修复,从而在“首选项”对话框中节省了一点空间。我的天啊

现在,使开发者决定恢复的唯一机会是引发一场严重的风暴,否则他们仅在几秒钟内关闭您的错误报告(已尝试了很多次)。我们将如何创建这场大风暴?

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.