Как изменить название Gnome-терминала?

У меня есть несколько экземпляров терминалов, запущенных в моей рабочей среде, и я хотел бы установить определенное название для каждого из них, чтобы иметь четкое представление о том, какой цели служит конкретный терминал, например Apache, editing_ini, postgres и т.д...

Конечно, из командной строки.

Альтернативы:

  • Однако есть и другие способы, вы также можете выдать

    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" inxterm*|rxvt*)    # JEFFYEE REMOVED because it makes commands to title() not work    #PS1="\[\e]0;${debian_chroot:+($debian_chroot)}\u@\h: \w\a\]$PS1"    ;;*)    ;;esac

Ответ Уорда хорош, если вы хотите установить свой заголовок в зависимости от того, на каком хосте вы находитесь и т.д. Каждый раз, когда вы открываете терминал. Однако, если вы просто хотите быстро установить заголовок, вы можете просто запустить echo самостоятельно:

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

или создайте простую функцию (внутри вашего ~/.bashrc), скажем termtitle

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

который вы можете запустить с помощью termtitle some title here.

Если вы используете редактор Vim, вы также можете включить эту опцию в своем vimrc:

:set title

который по умолчанию отключен. Он установит классные заголовки терминала, показывающие имя файла, которое вы редактируете в данный момент, и некоторые другие вещи.

Ах, так много ответов...

Я пытался wmctrl, который почти сработало, за исключением того, что я не смог заставить его изменить название значка, по крайней мере, не навсегда.

Проблема в том, что PS1 в Bash в Ubuntu задает заголовок.

Значение PS1 по умолчанию равно

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

... который задает заголовок в первой escape-последовательности: \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\$ '

Примечания по escape-кодам

Обратите внимание, что (заимствование из комментария wjandrea под этим ответом):

  • \e или \033 это символ escape (ESC), который запускает escape-последовательность.
  • ] запускает команду операционной системы (OSC).
  • Для xterm, 0; означает "установить заголовок", и
  • \a или \007 является символом bell (BEL), который завершает OSC.

Дополнительная информация: https://en.wikipedia.org/wiki/ANSI_escape_code#Escape_sequences

Для полноты картины я бы добавил, что вы также можете установить gnome-terminal заголовок с помощью этой команды:

wmctrl -r :ACTIVE: -N "MyWindowTitle"

Вам нужно будет установить пакет wmctrl Install wmctrl первый.