Answers:
在这里回答
我引用:
的
user title
代码除去1从gnome-terminal 3.14
。只有一种方法可以使用转义序列来设置标题-例如bash
:PROMPT_COMMAND='echo -ne "\033]0;YOUR TITLE GOES HERE\007"'
gnome-shell
。它也消失了,在新窗口或选项卡中打开新终端的菜单也消失了(但是您仍然可以通过快捷方式来完成它。为什么?用一个大的智能按钮替换所有内容:单击即可执行任何操作!)
Kirby提出的.bashrc
解决方案为我工作:
set-title(){
ORIG=$PS1
TITLE="\e]2;$@\a"
PS1=${ORIG}${TITLE}
}
然后从我的提示: $ set-title test-title
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
Control + Z
,然后暂停set-title X
然后fg
恢复该过程来暂停此过程。
我不敢相信他们删除了这样的用户友好功能。
我要切换到ROXTerm(http://roxterm.sourceforge.net),它可以很好地完成工作。它打包在Ubuntu中:
sudo apt-get install roxterm
然后,让恐龙继续自己的方式;-)
现在,我已经调查了一天的大部分时间,终于找到了设置此标题的方法。通过以\ 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
。请参见PROMPTING
Bash手册页中的章节。还请注意,转义序列还必须被\[
并\]
在此处包围。
要设置固定标题,可以使用以下方法:
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\$ "
如上所示,设置$ PROMPT_COMMAND在这里无效。毫不奇怪,因为Bash在终端中运行,并且父进程(在这里:gnome-terminal)无法在类似Unix的OS上读取子级环境。使用更简单的方法,例如
PROMPT_COMMAND='echo bla'
执行echo bla,什么也没有发生。
编辑:必须将其包装在转义序列中,请参阅我的其他答案。尽管无法读取子级环境,但通过这些顺序可以与父级进行一些通信。
在Gnome错误740188中,他们讨论了在.bashrc中定义title()函数的问题。每个打开的标签页都有不同的标签吗?如果可能的话,要进行严重的骇客入侵!
甚至关于Stackexchange的其他说明都讨论了设置$ PS1(并被投票)。抱歉,不,不是标题,是命令提示符。
简而言之:他们将其弄乱了,无法修复,从而在“首选项”对话框中节省了一点空间。我的天啊
现在,使开发者决定恢复的唯一机会是引发一场严重的风暴,否则他们仅在几秒钟内关闭您的错误报告(已尝试了很多次)。我们将如何创建这场大风暴?