Возможно ли получить текущее имя окна xterm?

В этом LDP Howto показано, как изменить заголовок xterm.

Я знаю, что это также возможно с помощью команды xtitle .

Перед вызовом долговременного действия мой скрипт использует такие методы, чтобы изменить заголовок его окна xterm.

Я хотел бы извлечь имя окна xterm перед его изменением, чтобы после завершения длительного действия я смог восстановить заголовок до его предыдущего значения.

Это вроде бы было бы обратным к xtitle … Возможно ли это?

4 Solutions collect form web for “Возможно ли получить текущее имя окна xterm?”

Используйте скрипт xtitle .

Существует много вариантов в Интернете, однако я склонен использовать тот, который зависит от xprop

http://www.shelldorado.com/scripts/cmds/xtitle

Существует контрольная последовательность для запроса текущего заголовка, но обычно она отключается по соображениям безопасности. Это связано с тем, что он позволяет вредоносной программе или даже только помеченному текстовому файлу вставлять произвольные последовательности символов, как если бы они были напечатаны на клавиатуре, сначала задав заголовок, а затем попросив сообщить об этом.

Следовательно, вместо этого был введен стек заголовков. Следующая команда сохранит текущее окно и названия значков в стек:

 echo -ne '\e[22t' 

И это восстановит их:

 echo -ne '\e[23t' 

Для тривиального (и, вероятно, наиболее распространенного случая), где можно запросить приглашение для текущего xterm, просто используйте xprop -id $WINDOWID WM_NAME . Если вы хотите извлечь значение для манипуляции в сценарии оболочки, вы можете сделать что-то более дорогое, например:

  curtitle=`xprop -id $WINDOWID WM_NAME|awk '{print $3}'|xargs echo` 

Использование только bash (чтобы избежать вызова awk и xargs):

  curtitle=`xprop -id $WINDOWID WM_NAME` curtitle=`eval echo ${x##*=}` 

Эхо xargs в первом примере и eval во втором примере просто там, чтобы снять кавычки, которые xprop ставит вокруг значения.

Замените WM_NAME на WM_ICON, если вы хотите получить имя значка, а не строку в заголовке.

Если я правильно понял ваш вопрос, вы должны получить текущее название xterm, $PROMPT_COMMAND переменную $PROMPT_COMMAND , например:

 $ echo $PROMPT_COMMAND printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}" 

и вы можете установить его как (linebreak для удобочитаемости):

 PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033]\ 0;%s@%s%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"' 
  • Цвета Vim, конфликтующие с терминальными
  • Xterm не полностью стирает полевые линии
  • Копирование буфера обратной прокрутки терминала с сохранением escape-последовательностей ANSI, но без предварительного запуска сценария / экрана
  • Ключ для завершения работы ОС Solaris
  • Как прокручивать, удерживая Shift для копирования в tmux?
  • Как я могу четко отображать изображение в xterm
  • Большие шрифты с фиксированным шрифтом
  • Правильно ли задавать переменную $ TERM вручную?
  • Вывод сценария раскраски с помощью cat
  • Что такое мета-ключ bash?
  • Обработанный файл Sed отображается по-разному в vi vs cat
  • Linux и Unix - лучшая ОС в мире.