Ubuntu 15.04 fresh install: невозможно переименовать вкладки gnome-terminal

39

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

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

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

$ gnome-terminal --version
GNOME Terminal 3.14.2
    
задан Tom 30.04.2015 в 15:55
источник

6 ответов

22

Отвечено здесь

Я цитирую:

The user title code was removed1 from gnome-terminal 3.14. There's only one way to set the title, using an escape sequence - e.g. with bash:

PROMPT_COMMAND='echo -ne "3]0;YOUR TITLE GOES HERE%bl0ck_qu0te%7"'

1: see gnome bug 724110 and gnome bug 740188.

    
ответ дан A.B. 30.04.2015 в 15:59
источник
31

Решение .bashrc , предложенное Kirby , помогло мне:

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

, затем из моего приглашения: $ set-title test-title

    
ответ дан ronan_mac 26.11.2015 в 13:19
18

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

Я перехожу к ROXTerm ( Ссылка ), который прекрасно выполняет эту работу. Он упакован в Ubuntu:

sudo apt-get install roxterm

Затем пусть динозавр продолжает свой путь: -)

    
ответ дан Michael Opdenacker 05.05.2015 в 06:49
14

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

sudo apt-get install mate-terminal

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

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

    
ответ дан Doug Van Horn 04.11.2015 в 21:43
6

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

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

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

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

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

PS1="\[\e]0;\[email protected]\h: \w\a\]\[email protected]\h:\w\$ "

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

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

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

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

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

    
ответ дан Traumflug 01.05.2015 в 20:43
5

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

PROMPT_COMMAND='echo bla'

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

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

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

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

Короче: они перепутали его без ремонта, чтобы сохранить крошечное пространство в диалоговом окне настроек. OMG

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

    
ответ дан Traumflug 01.05.2015 в 00:10