如何更改Gnome-Terminal标题?


165

我有几个在我的工作环境中运行的终端实例,我想要为每个终端设置一个特定的标题,以便清楚地知道特定终端的用途是什么,例如Apache,editing_ini,postgres等。

当然是从命令行开始的。


除了Ward的评论:不要忘记发送标题更改转义序列之前先 “取消设置PROMPT_COMMAND” ,否则您所做的任何更改都会在下一个shell提示后立即丢失。
乔恩·格林

对于KDE类似的问题,请参见stackoverflow.com/questions/8782159/...
naught101

从OS X切换到Ubuntu时遇到了这个问题。为了在多标签设置中获得自定义标题,我gnome-terminal --load-config将其与编写的脚本一起使用。
Halfer 2014年

3
在您的主目录中的.bashrc文件中添加以下内容,# set title of current terminal setTerminalTitle(){ echo -ne "\033]0;${1}\007" } alias termttl=setTerminalTitle现在您可以使用termttl别名来设置标题,例如termttl askubuntu
urmalp 2015年

1
“受保护”,因此我无法提供答案。Gnome3的gnome-terminal默认值为PROMPT_COMMAND=__vte_prompt_command。这将使用首选项中的“个人档案”中的值。存在多个配置文件时,“ 新建选项卡”和“ 新窗口”菜单项为每个配置文件都有一个子菜单项。手动方法是打开一个新的终端选项卡,右键单击选项卡标题,然后选择“ 设置标题...”。(这在单独的答案中会更容易阅读,但是...)
Rich

Answers:


145
  • 最人性化的方法是从终端->“设置标题...”菜单中进行选择。

  • 还有其他方法,您也可以发出

    gnome-terminal --title="SOME TITLE HERE"
    

    这可能无法达到预期的效果,因为您很有可能会.bashrc覆盖该行为。

  • 把我们带到最后一种方法,我毫不客气地将其剔除掉.bashrc

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

作为额外的参考,这是我 .bashrc

PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD/$HOME/~}\007"'

您可能还需要在〜/ .bashrc中将此代码注释掉

case "$TERM" in
xterm*|rxvt*)
    # JEFFYEE REMOVED because it makes commands to title() not work
    #PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"
    ;;
*)
    ;;
esac

2
需要注释掉或删除您提到的内容才能生效!
裸照

1
@Ward:PROMPT_COMMAND是要运行的程序PS1并且PS1文本字符串显示的。在上面的示例中,运行的命令是echo,然后简单地打印出一个字符串。有关更多详细信息,请参见man bashmanpages.ubuntu.com/bash
被杀

29
GNOME终端3.16.2说Option "--title" is no longer supported in this version of gnome-terminal.
Ivan Kozik 2015年

10
在Gnome 3.18.3上,菜单中没有“设置标题”条目:/
shadi

2
对于上面字符串中的gobbledegook所迷惑的其他人,它们是ANSI转义字符-请参见例如lihaoyi.com/post/…–
WillC

65

如果您想在每次打开终端时根据所处的主机等来设置标题,Ward的答案就很好。如果您只是想快速设置标题,则可以自己运行echo:

echo -ne "\033]0;SOME TITLE HERE\007"

或做一个简单的函数(在里面~/.bashrc),例如termtitle

termtitle() { printf "\033]0;$*\007"; }

您可以使用它运行termtitle some title here


3
或类似地,我们可以通过在〜/ .bash_aliases中添加以下行来添加为bash别名function set_title() { echo -ne "\033]0;${1}\007" } alias title=set_title,然后使用: $ title term_title
murarisumit

11
不幸的是,在GNOME终端3.6.2中似乎不适用于我。
austinmarton

1
似乎也不能在xterm 322或konsole 16.12中工作。不幸的是,我不知道是否有新方法:(
naught101'1

2
@ 3ocene在这种情况下实际上并不重要,它们是同一回事,但这是一个好习惯,因为例如$var_log${var}_log是完全不同的东西,并且差异可能导致脚本中的错误。
naught101 '09

2
如果对您不起作用,则可能是因为已设置PROMPT_COMMAND var或PS1 var并覆盖了它。unset PROMPT_COMMAND或对其进行设置,使其也更改标题,例如 export PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "$(basename $PWD)"'
gaoithe 18'Aug

32

如果使用Vim编辑器,也可以在vimrc中启用此选项:

:set title

默认情况下是禁用的。它将设置很酷的终端标题,显示您正在编辑的文件名以及其他内容。


26

为了完整起见,我还要补充一点,您也可以gnome-terminal使用以下命令设置标题:

wmctrl -r :ACTIVE: -N "MyWindowTitle"

您需要先安装软件包wmctrl安装wmctrl


1
MyWindowTitle没有显示在终端的标题中。当我执行wmctrl -m时显示。
sureshvv

2
请注意,wmctrl更改窗口标题,而不更改选项卡标题,而转义字符解决方案更改选项卡标题。此外,在选项卡之间切换时,窗口标题会立即变回原始选项卡标题。
redochka 2015年

23

啊,这么多答案...

我尝试了wmctrl,该方法几乎奏效了,除了无法更改图标标题(至少不是永久更改)之外。

问题是Ubuntu的Bash中的PS1设置了标题。

默认PS1为

\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ 

...在第一个转义序列中设置标题: \e]0;\u@\h: \w\a

因此,有两种解决方案:

解决方案1:简化PS1,然后使用PROMPT_COMMAND

将PS1更改为更简单的内容:

PS1="\u@\h:\w\$ "

然后使用PROMPT_COMMAND:

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

解决方案2:直接修改PS1

只需用新标题修改PS1:

PS1='\[\e]0;newtitle\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ '

嗨,我非常喜欢你的回答。您介意解释]0;代码中的角色吗?我想我找到的含义echo -e '\007 \033'ascii -o命令...虽然我如实不知道那是什么在那里做要么...谢谢...
isomorphismes

2
@iso \e或是\033转义(ESC)字符,用于启动转义序列。]启动操作系统命令(OSC)。对于xterm,0;表示“设置标题”,\a或者\007是终止OSC的响铃(BEL)字符。更多信息:en.wikipedia.org/wiki/ANSI_escape_code#Escape_sequences
wjandrea

@wjandrea我正在寻找与等价的转义字母(\e\a\033\007但是我找不到它们,因为我不知道在Google中键入正确的关键字。您提供的链接也很有用。您能否将您的评论转换为答案?
SebMa

10

如果您是Ubuntu用户,则可以使用HUD更改gnome-terminal选项卡的标题。

在gnome终端中,按Alt调出HUD,键入前几个字母,例如“ tit”,按Enter键并输入新标题。

这是一种非常快速的方法,避免使用鼠标。


1
确实。将手放在键盘上。显示现有的标题,因此使用此方法修改现有的标题也很方便快捷。
布伦特·浮士德

tit仅适用于英语Ubuntu。
törzsmókus

而整个选项已被删除:(
törzsmókus

F2键还可以避开鼠标。
同构性

@törzsmókus和法式滴定 ;)
wjandrea

3

更改标题的另一种方法gnome-terminal是使用gconftool-2; 这将更改所选配置文件的初始终端标题,因此您可以将不同的配置文件与诸如“ Apache”,“ Editing”等标题相关联。然后,您将gnome-terminal使用适当的配置文件启动以获取您指定的终端标题。与此形成对比的是,gnome-terminal --title "name"它会更改每个终端的标题,但不会影响配置文件中指定的初始标题。

您可以在脚本中使用以下命令来设置概要文件的终端名称,并且可以在一天中的特定时间更改终端名称,以提醒您一些事情:

gconftool-2 --set /apps/gnome-terminal/profiles/Default/title --type=string "Apache"

这是默认的配置文件,但是你可以通过改变,例如,设置标题为其他配置文件,以及Default像其他的个人资料Profile0

gconftool-2 --set /apps/gnome-terminal/profiles/Profile0/title --type=string "Editing"

我认为这种更改标题的方法是有用的,因为它可以在脚本中使用,或者作为一种快速的命令行方法来为配置文件设置标题。请注意,有时您必须使用指定的配置文件重新启动终端才能使gconftool-2设置生效。可用的完整设置gnome-terminal可以用列出gconftool-2 -R /apps/gnome-terminal


3

另一种解决方案是使用xdotool模拟按键,这可能在脚本中有用:

  1. 在gnome-terminal中设置键盘快捷键:

    Edit > Keyboard Shortcuts... > Terminal > Set Title
    

    例如Shift+Ctrl+Y

  2. xdotool如果尚未安装,请安装:

    sudo apt-get install xdotool
    
  3. 以下命令序列(也可以在bash脚本中使用)将设置终端/标签标题(使用来转义空格\):

    xdotool key ctrl+shift+y 
    xdotool type My\ new\ fabulous\ title
    xdotool key Return
    
  4. [可选]您还可以使用xdotool例如,使用以下命令打开新选项卡并使用上述命令设置标题:

    xdotool key ctrl+shift+t
    

    考虑在打开新标签页之前和之后添加睡眠时间,例如sleep 1(等待1秒)。

这不是最优雅的解决方案,但对我有用!在我的情况下,先前的答案不起作用。我在Ubuntu 14.04中使用gnome-terminal,我想制作一个bash脚本。


1

要仅在标题中显示当前工作目录,请在您的'.bashrc'中尝试以下操作:

PROMPT_COMMAND='echo -ne "\033]0; ${PWD##*/}\007"'

要么

PROMPT_COMMAND='echo -ne "\033]0;$(basename ${PWD})\007"' 

0

这在我的Gnome Terminal 3.18.3中起作用。

编辑您的.bashrc文件并添加此功能

# Update gnome terminal title
function termtitle() {
    # take argument
    TITLE=$1
    shift
    # update title
    PROMPT_COMMAND='echo -ne "\033]0; $TITLE \007"'
}

不要忘记source您的.bashrc文件

$ source ~/.bashrc

然后您只需更新即可更改终端标题,如下所示:

$ termtitle "MariaDB CLI"

0

我的答案与较新的答案类似,后者对我不起作用。最早的答案不再起作用。中间的老答案是太多的输入,因此我在~/.bashrc文件中创建了一个函数:

function termtitle() { PS1="${PS1/\\u@\\h: \\w/$@}"; }

添加或更改功能后,或者,如果您想再次重置标题,请使用:

. ~/.bashrc
termtitle Special Projects

否则,每天只需使用termtitle一个新标题即可。



-1

如果您使用的是gnome 3,那么便利Terminal > Set Title菜单选项已被删除。您可以安装仍具有“设置标题”菜单选项的gnome 2分叉终端,然后运行该终端:

sudo apt-get install mate-terminal

而不是运行“终端”,而是运行“伴侣终端”。您可能还应该在中选择mate-terminal sudo update-alternatives --config x-terminal-emulator

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.