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

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

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

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

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

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

  • Как эффективно использовать Console2 с screen / tmux / byobu?
  • В xterm, что такое «Имя знака»?
  • Почему xterm ведет себя иначе, чем x-терминал-эмулятор, когда он указывает на один и тот же исполняемый файл?
  • Как выбрать блок текста в xterm
  • Как я могу четко отображать изображение в xterm
  • Как изменить отображение ключей для клавиш HOME и END в XTERM?
  • Меню i3 xterm (ctrl + mouse) слишком маленькое
  • Простой эмулятор терминала, который поддерживает вырезание / вставку с другими программами?
  • 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/~}"' 
    Linux и Unix - лучшая ОС в мире.