Как изменить заголовок Gnome-Terminal?


166

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

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


В дополнение к комментарию Уорда: не забудьте "сбросить PROMPT_COMMAND" перед отправкой управляющей последовательности изменения названия, иначе любое внесенное вами изменение будет потеряно, как только появится следующее приглашение оболочки.
— Джон Грин

Для подобного вопроса для KDE см stackoverflow.com/questions/8782159/...
— naught101

У меня была эта проблема при переходе с OS X на Ubuntu. Чтобы получить пользовательские заголовки в настройке с несколькими вкладками, я использовал gnome-terminal --load-configвместе с этим сценарием, который я написал.
— halfer

3
добавьте следующее к вашему .bashrc файлу в вашем домашнем каталоге, # set title of current terminal setTerminalTitle(){ echo -ne "\033]0;${1}\007" } alias termttl=setTerminalTitleтеперь вы можете использовать псевдоним termttl для установки заголовка, напримерtermttl askubuntu
— urmalp

1
«Защищено», поэтому я не могу дать ответ. Gnome3 по gnome-terminalумолчанию PROMPT_COMMAND=__vte_prompt_command. При этом используются значения из профилей в префах. При наличии нескольких профилей пункты меню « Новая вкладка» и « Новое окно» имеют пункт подменю для каждого профиля. Ручной способ - открыть новую вкладку терминала, щелкнуть правой кнопкой мыши заголовок вкладки и выбрать « Задать заголовок ...» . (Это будет намного проще читать в отдельном ответе, но ...)
— Рич

Ответы:


146
  • Самый удобный способ - выбрать его из меню «Терминал» -> «Установить заголовок ...».

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

    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являются текстовыми строками , которые отображаются. В приведенном выше примере выполняется команда is echo, которая затем просто выводит строку. Смотрите man bashили manpages.ubuntu.com/bash для более подробной информации.
— Sladen

29
GNOME Terminal 3.16.2 говоритOption "--title" is no longer supported in this version of gnome-terminal.
— Иван Козик

10
В Gnome 3.18.3 нет записи «Установить заголовок» в меню: /
— Шади

2
Для всех, кто смущен гоблдегу в вышеприведенных строках, они являются escape-символами ANSI - см., Например, lihaoyi.com/post/…
— WillC

65

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

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

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

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

с которым вы можете бежать termtitle some title here.


3
или аналогичным образом мы можем добавить псевдоним bash, добавив строки ниже в ~ / .bash_aliases, function set_title() { echo -ne "\033]0;${1}\007" } alias title=set_titleа затем использовать: $ title term_title
— murarisumit

11
К сожалению, кажется, не работает для меня в терминале GNOME 3.6.2.
— Остинмартон

1
Также, похоже, не работает в xterm 322 или konsole 16.12 ... Я не знаю, есть ли новый метод, к сожалению :(
— naught101

2
@ 3ocene в данном случае это на самом деле не имеет значения, это одно и то же, но это хорошая привычка, потому что, например, $var_logи ${var}_logэто очень разные вещи, и разница может вызвать ошибки в сценариях.
— naught101

2
если это не работает для вас, это возможно потому, что PROMPT_COMMAND var или PS1 var установлен и переопределяет его. unset PROMPT_COMMANDили установите его так, чтобы он также export PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "$(basename $PWD)"'
— менял

32

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

:set title

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


26

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

wmctrl -r :ACTIVE: -N "MyWindowTitle"

СначалаУстановить wmctrl вам нужно установить пакет wmctrl .


1
MyWindowTitle не отображается в заголовке терминала. Это появляется, когда я делаю wmctrl -m.
— sureshvv

2
Обратите внимание, что wmctrl меняет заголовок окна, а не заголовок вкладки, в то время как решение для экранированных символов меняет заголовок вкладки. Кроме того, заголовок окна изменится на исходный заголовок вкладки, как только вы переключаетесь между вкладками.
— редочка

23

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

Я попробовал 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\$ '

привет, мне очень нравится твой ответ Не могли бы вы объяснить роль ]0;в вашем коде? Я думаю, что нашел смысл echo -e '\007 \033'с ascii -oкомандой ... хотя я честно не уверен, что она там делает тоже ... спасибо ...
— isomorphismes

2
@iso \eor \033- символ escape (ESC), который запускает escape-последовательность. ]запускает команду операционной системы (OSC). Для xterm 0;означает «установить заголовок» и / \aили \007является символом колокольчика (BEL), который завершает OSC. Дополнительная информация: en.wikipedia.org/wiki/ANSI_escape_code#Escape_sequence
— wjandrea

@wjandrea Я искал эквивалентные эвакуационные буквы ( \eи \a) для \033и , \007но я не мог найти их , конечно , потому что я не знаю правильные ключевые слов , чтобы напечатать в Google. Ссылка, которую вы дали, также полезна. Можете ли вы преобразовать свой комментарий в ответ?
— Себма

10

Если вы пользователь Ubuntu, вы можете изменить заголовок вкладки терминала gnome, используя HUD .

Находясь в gnome-терминале, нажмите Alt, чтобы вызвать HUD, введите первые несколько букв, например «tit», нажмите enter и введите новый заголовок.

Это очень быстрый метод, позволяющий избежать использования мыши.


1
На самом деле. Держит руки на клавиатуре. Отображается существующий заголовок, поэтому его можно легко и быстро изменить, используя этот метод.
— Брент Фауст

Синица только для английского Ubuntu.
— törzsmókus

и весь вариант был удален :(
— törzsmókus

F2ключ также позволяет избежать мыши.
— изоморфизм

@ törzsmókus и французский - titre ;)
— wjandrea

3

Другой способ изменить название gnome-terminal- использовать gconftool-2; это изменяет начальный заголовок терминала для выбранного профиля , поэтому у вас могут быть разные профили, связанные с заголовками, такими как «Apache», «Редактирование» и т. д. Затем вы запустите 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-терминале:

    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 секунду).

Это не самое элегантное решение, но оно сработало для меня! Предыдущие ответы не сработали в моем случае. Я использую gnome-терминал в Ubuntu 14.04, и я хотел сделать скрипт bash.


1

Чтобы отобразить только текущий рабочий каталог в заголовке, попробуйте это в вашем .bashrc:

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

или же

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

0

Это работало в моем терминале Gnome 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

В случае, если такие бедные люди, как я, вынуждены использовать tcsh, попробуйте что-нибудь подобное в вашем .cshrc:

set prompt='%{\033]0;%n@%m\007%}%~%# '

Источник и более подробная информация: http://tldp.org/HOWTO/Xterm-Title-4.html


Некоторое указание на то, почему мой ответ был отклонен, было бы неплохо :-(
— spookypeanut

-1

Если вы используете gnome 3, удобная Terminal > Set Titleопция меню была удалена. Вы можете установить раздвоенный терминал gnome 2, у которого все еще есть пункт меню «Задать заголовок», и запустить его вместо этого:

sudo apt-get install mate-terminal

Вместо запуска «Терминал», запустите «Терминал MATE». Вы, вероятно, также должны выбрать mate-терминал в sudo update-alternatives --config x-terminal-emulator.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.