Свежая установка Ubuntu 15.04: невозможно переименовать вкладки терминала gnome


38

В Ubuntu 14.10, если бы у меня было открыто несколько вкладок терминала, я мог бы щелкнуть правой кнопкой мыши вкладку «Терминал» и переименовать ее. В Ubuntu 15.04 я не могу найти эту функцию.

Есть ли простой способ вернуть его?

Это текущая версия:

$ gnome-terminal --version
GNOME Terminal 3.14.2

Ответы:


21

Здесь ответили

Я цитирую:

user titleКод был удален 1 из gnome-terminal 3.14. Есть только один способ установить заголовок, используя escape-последовательность - например, с помощью bash:

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

1: см. Ошибка гнома 724110 и ошибка гнома 740188 .


10
Спасибо за ответ. Жаль, что он пропал, я надеюсь, что они добавят его обратно в следующем выпуске, а пока я буду использовать escape-последовательность вместо метода правой кнопки мыши.
Том

2
@Tom Напишите отчет об ошибке =)
AB

13
это не просто позор, это бессмысленно. У меня была плохая идея «обновить» Debian Wheezy до Jessie, чтобы иметь все (еще не уверенное, действительно), что у меня было раньше, но хуже; плохие решения и глупые недостатки (например, в gdm3 список возможных установленных мной wm / сессий не подходит и не прокручивается, поэтому его просто вырезать, и поэтому я не могу выбрать все имеющиеся у меня wm). Для меня GNOME обречен с тех пор gnome-shell. Исчезло также меню для открытия нового терминала в новом окне или вкладке (но вы все равно можете сделать это с помощью ярлыка. Почему ?! Замените все на большую умную кнопку: щелчок и все!)
ShinTakezou

2
Обычно новые выпуски добавляют, а не удаляют функции.
Angelcervera

2
Я сделал команду (скрипт оболочки) с именем tab, которая содержит просто echo -ne "\ 033] 0; $ 1 \ 007", поэтому теперь в любой вкладке я могу просто запустить вкладку TABNAME, чтобы установить заголовок вкладки. Не так удобно, как щелкнуть правой кнопкой мыши вкладку, чтобы переименовать, но это будет делать пока Спасибо АБ!
Брайан Пипа

31

.bashrcРешение предложил Кирби работал для меня:

set-title(){
  ORIG=$PS1
  TITLE="\e]2;$@\a"
  PS1=${ORIG}${TITLE}
}

тогда из моей подсказки: $ set-title test-title


2
У меня нормально работает 15.10, единственное предостережение в том, что при каждом его запуске вы добавляете PS1, так что не делайте этого из скрипта. После того, как я позвонил несколько раз с set-title "longer and ":echo $PS1 \[\e]0; \u@\h: \w \a\]\u@\h:\w\[\033[m\]$(__git_ps1)$ \e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a\e]2;longer and \a
АХКОКС

1
у меня работает на убунту 16.04!
Программист

1
работает как шарм !!
Шараденду Синха

Как изменить заголовок во время выполнения процесса переднего плана, который я не хочу прерывать?
Янис Элмерис

1
Я думаю, что вы можете сделать это, приостановив процесс, используя Control + Z, затем set-title X, fgчтобы возобновить процесс.
ronan_mac

18

Я не могу поверить, что они удалили такую ​​удобную функцию, как эта.

Я перехожу на ROXTerm ( http://roxterm.sourceforge.net ), который прекрасно справляется со своей задачей. Он упакован в Ubuntu:

sudo apt-get install roxterm

Тогда пусть динозавр продолжит свой путь ;-)


1
Как я могу изменить заголовок вкладки в roxterm? Я не мог найти это.
Halil

будет работать и для 16.04
prusswan

Вау, я не могу установить терминал в фоновый режим с помощью gnome-терминала, и я так и не понял, почему ... это проблема самого терминала. Фон терминала Devilspie отлично работает с roxterm.
m3nda

1
RoxTerm потрясающий и все еще работает, но, к сожалению, не будет продолжаться намного дольше: sadface:: sourceforge.net/p/roxterm/discussion/422638/thread/60da6975
Уильямс

С тех пор я перешел на Terminator, и мне больше не приходилось использовать RoxTerm ....
Майкл Опденакер,

14

Я попробовал RoxTerm, как предложено выше, с хорошими результатами. Но я остановился на терминале MATE, который является частью проекта MATE, продолжением Gnome 2, 15.04:

sudo apt-get install mate-terminal

Этот терминал основан на коде терминала Gnome.


Комментарий: Трудно понять мышление разработчиков Gnome Terminal. Там много дискуссий о том, «как» назвать вкладки терминала, и как трудно получить право. Если это так, зачем пользователю трудно назвать их? Не очень умный на всех.


6

Теперь я исследовал это для большей части дня и наконец нашел способ установить это название. Это делается через escape-последовательности, которые начинаются с \ e] 0; и заканчивается символом BEL (= \ 007 = \ a). В отличие я уже говорилось выше, сообщения от задней оболочки к терминалу применения является возможно, очень ограничено, с помощью таких управляющих последовательностей (есть несколько больше).

Об этом сверху:

PROMPT_COMMAND='echo -ne "\e]0;YOUR TITLE GOES HERE\a"'

Это может работать, но это не всегда. PROMPT_COMMANDпеременная, содержимое которой выполняется каждый раз, когда вы отправляете команду, поэтому она также отправляет эту escape-последовательность. Однако это может быть отменено escape-последовательностью в переменной PS1, которая задает приглашение командной строки. Вот почему вышесказанное не оказало здесь никакого влияния.

Из более старой установки Ubuntu я взял это, которое устанавливает командную строку (правая часть, после ]), а также отправляет требуемую escape-последовательность (левая часть, вплоть до и включая ]):

PS1="\[\e]0;\u@\h: \w\a\]\u@\h:\w\$ "

Это, вероятно, работает лучше, потому что нет необходимости $PROMPT_COMMANDкаждый раз интерпретировать . Он также имеет гораздо больше опций, потому что здесь Bash имеет больше escape-последовательностей, например, \uдля текущего имени пользователя, \Wдля текущего имени каталога или \wдля всего пути текущего рабочего каталога, опционально обрезанного до последних нескольких по числу в $PROMPT_DIRTRIM. Смотрите главу PROMPTINGна странице руководства Bash. Также обратите внимание, что escape-последовательность дополнительно должна быть окружена \[и \]здесь.

Чтобы установить фиксированный заголовок, это работает:

PS1="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "

Наслаждайтесь!


Во время моего исследования я также пытался понять исходный код терминала gnome, что приводит к исходному коду vte, и там поддержка установки заголовка и чтения escape-последовательностей считается угрозой безопасности: см. Здесь (случай 20, случай 21) и здесь («Отчет по заголовку окна»).


Это устанавливает заголовок, но также стирает все предыдущие определения PS1для других целей, таких как установка настраиваемой командной строки. Я только что попытался добавить вашу escape-последовательность к существующему PS1содержимому, и это похоже на работу. Как это: PS1+="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ "
АХКОКС

5

Установка $ PROMPT_COMMAND, как показано выше, имеет нулевой эффект. Не удивительно, потому что Bash работает внутри терминала, а родительские процессы (здесь: gnome-терминал) не могут читать дочернюю среду в Unix-подобной ОС. Используя что-то более простое, например

PROMPT_COMMAND='echo bla'

Выполняет эхо бла , больше ничего не происходит.

Изменить: нужно обернуть это в escape-последовательности, см. Мой другой ответ. Несмотря на то, что чтение дочернего окружения невозможно, некоторая связь с родителем осуществляется через эти последовательности.

В ошибке Gnome 740188 говорится об определении функции title () в .bashrc. Разные для каждой вкладки открыты? Тяжелый уродливый взлом впереди, если вообще возможно!

Даже другие объяснения в Stackexchange говорят о настройке $ PS1 (и голосуют против). Извините, нет, это не заголовок, это командная строка.

Короче говоря: они испортили его без возможности восстановления, чтобы сэкономить немного места в диалоге настроек. О, мой бог

Теперь единственный шанс отменить решение разработчика - это разжечь серьезную дерьмовую бурю, иначе они просто закроют ваш отчет об ошибках за считанные секунды (пробовали много-много-много раз). Как бы мы создали эту гадость?

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