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

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

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

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

$ gnome-terminal --version
GNOME Terminal 3.14.2
1
задан 30 April 2015 в 16:55

5 ответов

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

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

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

30
ответ дан 23 May 2018 в 20:50
  • 1
    Работает для меня нормально 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 – ahcox 21 February 2016 в 03:01
  • 2
    работает для меня на ubuntu 16.04! – Programster 3 June 2016 в 00:22
  • 3
    работает как шарм !! – sharadendu sinha 30 August 2016 в 16:42
  • 4
    Как изменить заголовок во время работы переднего плана, который я не хочу отменять? – Jānis Elmeris 2 November 2017 в 09:49
  • 5
    Я думаю, вы можете сделать это, приостановив процесс, используя Control + Z, затем set-title X, затем fg, чтобы возобновить процесс. – ronan_mac 2 November 2017 в 13:09

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

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

sudo apt-get install roxterm

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

17
ответ дан 23 May 2018 в 20:50
  • 1
    Как изменить заголовок Tab в roxterm? Я не мог найти его. – Halil 2 September 2015 в 10:19
  • 2
    будет работать и на 16,04 – prusswan 19 March 2016 в 23:12
  • 3
    Ничего себе, не могу установить терминал для фона с помощью gnome-терминала, и я никогда не понимал, почему ... это проблема с самим терминалом. Фон дьявольского терминала работает круто с помощью рокстерма. – erm3nda 15 April 2017 в 08:45
  • 4
    RoxTerm является удивительным и до сих пор работает, но, к сожалению, не будет продолжаться дольше: sadface:: sourceforge.net/p/roxterm/discussion/422638/thread/60da6975 – Williams 29 August 2017 в 07:28
  • 5
    С тех пор я переключился на Терминатор, и мне больше не нужно было использовать RoxTerm .... – Michael Opdenacker 16 November 2017 в 14:43

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

sudo apt-get install mate-terminal

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

[d2 ]

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

13
ответ дан 23 May 2018 в 20:50

Теперь я исследовал это в течение большей части дня и, наконец, нашел способ установить этот заголовок. Это делается через 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) и здесь («Отчет о заголовке окна»).

6
ответ дан 23 May 2018 в 20:50
  • 1
    Это устанавливает заголовок, но также уничтожает любое предыдущее определение PS1 для других целей, таких как установка пользовательской командной строки. Я просто попытался добавить вашу escape-последовательность к существующему содержимому PS1 и, похоже, работает. Например: PS1+="\[\e]0;YOUR TITLE GOES HERE\a\]\u@\h:\w\$ " – ahcox 21 February 2016 в 02:50

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

PROMPT_COMMAND='echo bla'

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

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

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

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

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

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

5
ответ дан 23 May 2018 в 20:50

Другие вопросы по тегам:

Похожие вопросы: