Это LDP Howto демонстрирует, как изменить заголовок xterm.
Я знаю, что это также возможно с помощью xtitle
команды.
Прежде чем вызывать длительное действие, мой сценарий использует такие методы, чтобы изменить заголовок своего окна xterm.
Я хотел бы извлечь имя окна xterm до его изменения, чтобы после завершения продолжительного действия я мог восстановить заголовок к его предыдущему значению.
Это было бы как бы обратное к xtitle ... Возможно ли это вообще?
xterm
есть стек для заголовка окна, если вы можете понять, как его использовать.Ответы:
Используйте
xtitle
скрипт.Есть много вариантов в Интернете, однако я склонен использовать один, который зависит от
xprop
http://www.shelldorado.com/scripts/cmds/xtitle
источник
xtitle
работает, работает только для локальных сессий.Существует контрольная последовательность для запроса текущего заголовка, но она обычно отключена из соображений безопасности. Это потому, что он позволяет вредоносной программе или даже просто текстовому файлу вставлять произвольные последовательности символов, как будто они набраны на клавиатуре, сначала устанавливая заголовок, а затем запрашивая ответ. Следовательно, был введен стек заголовков.
Следующая команда сохранит текущее окно и заголовки значков в стеке:
Это установит заголовок на
my title
:И это восстановит предыдущие названия окон и значков:
источник
Для тривиального (и, вероятно, наиболее распространенного случая), где можно запросить приглашение для текущего xterm, просто используйте
xprop -id $WINDOWID WM_NAME
. Если вы хотите извлечь значение для манипуляции в сценарии оболочки, вы можете сделать что-то более дорогое, например:Используя только bash (чтобы избежать вызова awk и xargs):
Xargs echo в первом примере и eval во втором примере просто для того, чтобы убрать кавычки, которые xprop помещает вокруг значения.
Замените WM_NAME на WM_ICON, если вы хотите получить имя иконки, а не строку в строке заголовка.
источник
Если я правильно понимаю ваш вопрос, вы сможете получить текущий заголовок xterm, проверив
$PROMPT_COMMAND
переменную, например:и вы можете установить его как (перевод строки для удобства чтения):
источник
PROMPT_COMMAND
не самый авторитетный способ получить заголовок, поскольку он не всегда установлен, и любая команда, которую вы выполняете, может изменить заголовок между приглашениями. Для большей точности последовательности управления, специфичные для эмулятора терминала, вероятно, лучше всего использовать.$PROMPT_COMMAND
не заголовок окна. Они не связаны.