В Ubuntu 14.10, если я открывал несколько вкладок терминала, я мог бы щелкнуть правой кнопкой мыши вкладку «Терминал» и переименовать ее. В Ubuntu 15.04 я не могу найти эту функцию.
Есть ли простой способ вернуть его?
Это текущая версия:
$ gnome-terminal --version
GNOME Terminal 3.14.2
Решение .bashrc, предложенное Kirby, работало для меня:
set-title(){
ORIG=$PS1
TITLE="\e]2;$@\a"
PS1=${ORIG}${TITLE}
}
, затем из моего приглашения: $ set-title test-title
Я не могу поверить, что они удалили такую удобную для пользователя функцию, как этот.
Я перехожу на ROXTerm (http://roxterm.sourceforge.net), что делает работу красиво. Он упакован в Ubuntu:
sudo apt-get install roxterm
Затем пусть динозавр продолжит свой путь; -)
Я попробовал RoxTerm, как было предложено выше, с хорошими результатами. Но я остановился на MATE Terminal, который является частью MATE Project, продолжением Gnome 2, 15.04:
sudo apt-get install mate-terminal
Этот терминал основан на коде терминала Gnome.
[d2 ]Комментарий: Трудно понять мышление разработчиков Gnome Terminal. Там много дискуссий о том, «как» назвать терминальные вкладки, и как это сложно сделать правильно. Если это так, почему вам сложнее назвать их? Не очень умный.
Теперь я исследовал это в течение большей части дня и, наконец, нашел способ установить этот заголовок. Это делается через 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-terminal, который приводит к исходному коду vte, и там поддержка настройки заголовка и считывания escape-последовательностей считается угроза безопасности: см. здесь (случай 20, случай 21) и здесь («Отчет о заголовке окна»).
Установка $ PROMPT_COMMAND, как показано выше, здесь имеет нулевой эффект. Не удивительно, потому что Bash работает внутри терминального и родительского процессов (здесь: gnome-terminal) не может читать дочернюю среду на unix-подобной ОС. Используя что-то более простое, например
PROMPT_COMMAND='echo bla'
Выполняет echo bla, ничего больше не происходит.
Edit: нужно обернуть это в escape-последовательности, см. Мой другой ответ. Несмотря на то, что чтение дочерней среды невозможно, некоторая связь с родителем осуществляется через эти последовательности.
В Gnome bug 740188 они говорят об определении функции title () в .bashrc. Разный для каждой вкладки открыт? Тяжелый уродливый взлом впереди, если это вообще возможно!
Даже другие объяснения по Stackexchange говорят о настройке $ PS1 (и получить поддержку). Извините, нет, это не название, это командная строка.
Вкратце: они перепутали его без ремонта, чтобы сохранить крошечный бит пространства в диалоговом окне настроек. OMG
Теперь единственный шанс вернуть решение разработчика - разжечь серьезный shitstorm, иначе они просто закроют ваш отчет об ошибках за несколько секунд (много раз пробовали). Как мы могли бы создать этот shitstorm?