如何更改 Gnome-Terminal 标题?

如何更改 Gnome-Terminal 标题?

我的工作环境中运行着多个终端实例,我想要为每个终端设置一个特定的标题,以便清楚地了解特定终端的用途,即 Apache、editing_ini、postgres 等...

当然是从命令行。

答案1

备择方案:

  • 但是,你也可以通过其他方式发出

    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

如果您想在每次打开终端时根据您所在的主机等设置标题,Ward 的答案很棒。但是,如果您只想快速设置标题,您可以直接运行 echo:

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

或者创建一个简单的函数(在你的内部~/.bashrc),比如说termtitle

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

您可以运行它termtitle some title here

答案3

啊,这么多答案……

我试过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\$ '

转义码注释

请注意(借用这个答案下面 wjandrea 的评论):

  • \e或者\033是转义(ESC)字符,用于启动转义序列。
  • ]启动操作系统命令(OSC)。
  • 对于 xterm 来说,0;表示“设置标题”,
  • \a或者\007是终止 OSC 的铃声(BEL)字符。

更多信息:https://en.wikipedia.org/wiki/ANSI_escape_code#Escape_sequences

答案4

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

wmctrl -r :ACTIVE: -N "MyWindowTitle"

您需要安装该包控制端安装 wmctrl第一的。

相关内容