Как изменить заголовок 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.