С помощьюОтображение команды в заголовке xtermЯ изменил gnome-terminal
заголовок, чтобы отразить запущенную команду, чтобы я мог видеть, какой терминал Mutt ее запускает. Но что мне действительно хотелось бы, так это поднять мой статус Mutt до заголовка. У меня есть это в моем .muttrc
:
set status_format = "%n new | %M in %f [%v]."
и я бы с удовольствием перенес весь этот статус в свой gnome-terminal
заголовок. Есть ли способ сделать это в моем .bashrc
? Или по-другому?
Обсуждение того, как это сделать с помощью vim, можно найти на сайтеhttp://vim.wikia.com/wiki/Автоматически_установить_название_экранано...это энергично.
решение1
mutt уже может это сделать.
человек muttrc
ts_enabled Type: boolean Default: no Controls whether mutt tries to set the terminal status line and icon name. Most terminal emulators emulate the status line in the window title. ts_status_format Type: string Default: “Mutt with %?m?%m messages&no messages?%?n? [%n NEW]?” Controls the format of the terminal status line (or window title), provided that “$ts_enabled” has been set. This string is identical in formatting to the one used by “$status_format”.
К сожалению, при выходе из Mutt заголовок не возвращается к исходному состоянию.
решение2
Можно заставить status_format запустить внешний скрипт, который может установить заголовок. Это было описано в списке рассылки mutt несколько лет назадАмит Рамон, используя символ трубы |
, которыйзадокументированокак:
Любая строка формата, заканчивающаяся вертикальной чертой («|»), будет расширена и передана через первое слово в строке, используя пробелы в качестве разделителя. Возвращаемая строка будет использоваться для отображения. Если возвращаемая строка заканчивается на %, она будет передана через форматировщик второй раз. Это позволяет фильтру сгенерировать заменяющую строку формата, включающую % expandos.
Примером Рамона была следующая строка:
set status_format="mutt_status \"$my_status\" \"$my_title\"|"
В его примере mutt_status
представлен простой скрипт оболочки, который выводит первый параметр на стандартный вывод (и отображается в строке состояния), а второй записывается на устройство /dev/tty
(и отображается в строке заголовка xterm):
#!/bin/sh
# Demonstration of format string pipes. Sets the xterm title to the 2nd argument,
# and returns the first unchanged.
#
# this sets the title
printf "\033]0;$2\007" > /dev/tty
echo "$1"
# end of script
В заметке Рамона говорилось, что $my_status
и $my_title
являются переменными, которые он определил в своей конфигурации (но не давал никаких подробностей, кроме ссылки на документацию Mutt дляstatus_format
.
Для вашего примера,
set status_format = "mutt_status \"%n new | %M in %f [%v].\" \"%n new | %M in %f [%v].\"|"
будет отправлять одну и ту же информацию в строки статуса и заголовка.
При рассмотрении этого я не заметил ts_enabled
и ts_status_format
, который @Томас Вайнбреннерописывает. Это было добавлено в mutt всего несколько месяцев назад, вАвгуст 2015 г.:
1.5.24 (2015-08-31):
+ terminal status-line (TS) support, a.k.a. xterm title. see the
following variables: $ts_enabled, $ts_icon_format, $ts_status_format
Эта функция использует функцию terminfo tsl
, которая, согласно terminfo(5), требует параметра:
to_status_line tsl ts move to status line,
column #1
Однако, заголовок-строка для xterm не принимает параметр. Он в значительной степени игнорируется в ncurses как таковой по этой причине, хотя есть (для обсуждения)xterm+sl
запись впервые добавлена в1999. Вы не найдете его в "xterm" terminfo. Скорее, расширение TS
было рекомендовано как альтернатива с тех пор2012.
За исключением xterm,восстановлениезаголовок после выхода из mutt не поддерживался широко в течение нескольких лет из-за опасений по поводу неправильно сформированных escape-последовательностей. xterm предоставляет запрос/ответ, который по умолчанию отключен в большинстве пакетов. Кроме того, он предоставляет другую управляющую последовательность, которая делает строки заголовкасложенный. GNU screen использует эту функцию (добавленоНоябрь 2009 г.); для большинства других приложений (неправильное) использование tsl
/ fsl
слишком прочно укоренилось, чтобы иметь какое-либо значение для обычного пользователя.
Этот вопрос, по-видимому, являетсярепост из LQв начале 2015 года, что, как ни странно, указывает на более старую дворнягуобъявление о выпуске:
Mutt 1.5.15 был выпущен 6 апреля 2007 года. Эта версия имеет несколько новых и давно существующих исправлений функций, примененных в ожидании заморозки функций к 1.6. Они включают встроенный SMTP, улучшения поддержки flowed mail, обновление заголовка xterm, улучшения набора символов, поддержку GPG PKA и т. д. См.Журнал измененийдля получения полной информации.
Однако,чтопо-видимому, относится кпластырь:
2007-03-14 14:45 -0700 Brendan Cully <[email protected]> (35b8facdbdda)
* contrib/Makefile.am, contrib/mutt_xtitle, muttlib.c: Add demo
mutt_xtitle script
о котором я уже знал изпредыдущее обсуждение(и проигнорировано, потому что не было включено в сам mutt). Некоторые упаковщики могли применить этот патч, но функция была переименована, когда она была наконец (более чем через десять лет) включенавдворняга.