Как я могу автоматически обновить заголовок в xterm, выполняющем экран?

Это - определенное продолжение этого вопроса. Я работаю в tcsh в экране GNU в xterm.

У меня есть следующее в моем .cshrc:

alias res_t 'xtset -t %h:%d "(%u:%g)" %e'       # reset titlebar
res_t                                           # reset title right now
alias precmd res_t

И это хорошо работает!

Однако, когда я выполняю экран, я вижу, что заголовок не становится обновленным с текущим каталогом. Как я могу заставить экран обновить xterm заголовок?

14
задан 20.03.2017, 12:17

3 ответа

Можно установить xterm заголовок окна путем добавления этого к Вашему .tcshrc или .cshrc (замените свой ток precmd псевдоним):

alias precmd 'echo -n "\033]0;${PWD}\a"'

Удостоверьтесь, что это - единственный псевдоним precmd в Вашем .cshrc и .tcshrc файлы при использовании этого. Этот метод отображает текущий каталог как заголовок окна для меня в обоих xterm терминал гнома независимо от того, открыто ли заседание экрана GNU.

Мой ответ был основан на этом.

4
ответ дан 07.12.2019, 11:21

Я понимаю, что Вы используете tcsh, таким образом, это, вероятно, не будет работать... На всякий случай любой ищет удар способ сделать это.

Если Ваши системы (локальный / удаленный) выполняют удар затем, можно использовать переменную среды "PROMPT_COMMAND" для установки заголовка окна. PROMPT_COMMAND является eval'd, прежде чем подсказка будет отображена.

(в Вашем .bashrc):

export PROMPT_COMMAND='history -a && echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\007'

Объяснение:

'history -a'

Это устанавливает оболочку для добавления в файл истории каждый раз, когда команда завершается, скорее чем, когда целая оболочка завершается. (Это не связано с этим примером).

'echo -ne "\033]0;${USER}@${HOSTNAME%%.*}:${PWD/$HOME/~}\007"'

Это повторяет управляющий код "\033] 0"; который устанавливает заголовок окна с "пользователем" переменные "хоста" (удаляющий самое долгое соответствие от права до первого ".") и затем рабочий каталог (занимающий место '~' за '$HOME').

Вышеупомянутый прием будет работать с любым терминальным приложением, которое поддерживает динамическое изменение заголовка окна (какой iTerm, Terminal.app, urxvt, aterm, eTerm. xterm и т.д. все делают). Можно также изучить переменную оболочки "СТРОКА ЗАГОЛОВКА" в документации удара, это подобно.

3
ответ дан 07.12.2019, 11:21

Это должно работать в любой оболочке, но это - грязный взлом .screenrc. Это принимает Вашу hardstatus строку для работы, который может быть недопустим для некоторых пользователей. Но это работает в терминале гнома над последней Ubuntu, даже без termcapinfo строки ниже. Некоторые ситуации могут потребовать более глубоких тонких настроек (я не протестировал на PuTTY, например).

# enable xterm title setting; may not be necessary on some platforms
termcapinfo xterm*|rxvt* 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'

# dirty hack: put xterm title escapes in the hardstatus
# this example will yield "user@host || screen Win#:(windowtitle)
defhstatus "$USER@^EH || screen ^E:(^Et)"
# now turn it off so it doesn't print in the hardstatus line
hardstatus off

# and finally, use caption as a replacement hardstatus
caption always '%{= kG}[%{G}%H%{G}][%= %{= kw}%?%-Lw%?%{R}(%{W}%n*%f%t%?(%u)%?%{R})%{w}%?%+Lw%?%?%= %{G}][%{B}%C%a %M.%d%{G}]'

Найденный в этой ссылке.

2
ответ дан 07.12.2019, 11:21

Теги

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