Свежая установка 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.