Набор xterm заголовок окна (PuTTY) при использовании экрана?

Я удивлен, что никто не упоминает SSD...

12
задан 19 August 2010 в 16:54
5 ответов

Управляющие коды являются другим внутренним экраном.

Это за пределами экрана:

PROMPT_COMMAND='echo -ne "\033]0;${USER}@${HOSTNAME}: ${PWD}\007"'

эквивалентно этому внутреннему экрану:

PROMPT_COMMAND='echo -ne "\033_${USER}@${HOSTNAME}: ${PWD}\033\\"'

Изменение Вашего $ случая {ТЕРМИН} = "экранирует" строку заголовка к

TITLEBAR='\[\033_\u@\h > ${NEW_PWD}\033\\\]'

решит Вашу проблему.

4
ответ дан 2 December 2019 в 21:37
  • 1
    Это не работает. Я don' t понимают почему. –  James Sumners 6 July 2009 в 18:06
  • 2
    Я решил, что установка hardstatus alwayslastline, поскольку я делаю для screen, предотвращает screen от установки xterm заголовок. Теперь, если я могу просто выяснить, как сделать обоих одновременно. –  James Sumners 6 July 2009 в 22:47
  • 3
    Это, потому что Ваш hardstatus имеет %t (для заголовка) в нем? –  crb 6 July 2009 в 23:10
  • 4
    Нет. Просто удаленный это и получают тот же результат. Я полагаю, что оказываюсь перед необходимостью устанавливать псевдоним для screen, который устанавливает заголовок окна и затем запускает программу. И затем просто разочаруйтесь в динамических терминальных заголовках при использовании screen.:( –  James Sumners 7 July 2009 в 15:17
  • 5
    в bugs.launchpad.net/byobu/+bug/338722/comments/10 говорится it' s ограничение на экране –  agnul 9 July 2009 в 17:38

crb является видом права, но

a) управляющий код, который он использует, не работает на меня. Это должно быть \033k вместо \033_. Посмотрите screen (1) под "TITLES (naming windows)". Таким образом, это должно быть:

PROMPT_COMMAND='echo -ne "\033k${USER}@${HOSTNAME}: ${PWD}\033\\"'

b) этот вид выхода только используется для установки заголовка экранного окна. Один экземпляр экрана может иметь несколько окон, у каждого из них есть имя, именно это отображен в hardstatus и caption с t escape-последовательность.

c) нормальный выход удара работает при установке права terminfo для xterm в .screenrc:

termcapinfo xterm 'hs:ts=\E]2;:fs=\007:ds=\E]2;screen\007'

(это также works on my machine для шпаклевки)

Таким образом, для установки правильного заголовка и для экранного окна и для putty/xterm заголовка, я использую что-то как:

XTERM_TITLE="${USER}@${HOSTNAME}: ${PWD}"
SCREEN_TITLE="${PWD}"
PROMPT_COMMAND='echo -ne "\033]0;$XTERM_TITLE\007\033k$SCREEN_TITLE\033\\"'

для ссылки: http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x395.html

1
ответ дан 2 December 2019 в 21:37

На самом деле, есть способ отправлять управляющие последовательности непосредственно в xterm, проходя через screen. Его было нелегко найти, но, судя по экранному коду (src / ansi.c), я думаю, что он существует с 2005 года. У меня он работает в xterm, Gnome Terminal и putty. Я нашел примечание в источнике mintty, указывающее, что он там не работает просто потому, что они не обрабатывают DCS (если он не был исправлен недавно).

Из документации для экрана ниже (на http: //www.gnu .org / software / screen / manual / html_node / Control-Sequences.html )

ESC P (A) Device Control String
          Outputs a string directly to the host terminal without interpretation.

ANSI DCS (строка управления устройством) - это escape-код, который используется для отправки непосредственно на терминал (я думаю, что это был его первоначальное назначение много лет назад). Такая строка заканчивается escape-кодом ST (терминатор строки).

Оберните строку, чтобы установить терминал ' s заголовок окна внутри блока DCS..ST, и он проходит через весь экран и обновляется правильно, даже с hardstatus alwayslastline.

DCS = \ 033P, ST = \ 033 \

Пример - чтобы обновить заголовок окна с помощью текущий рабочий каталог, используйте

NEW_TITLE="\033]0;${PWD/$HOME/~}\007"
echo -ne "\033P${NEW_TITLE}\033\\"

Лучше поздно, чем никогда! Надеюсь, это кому-то поможет.

На случай, если я ошибаюсь насчет изменений источника экрана: я использую последнюю версию git из screen-session, которая, в свою очередь, использует почти последнюю версию git из screen (с некоторыми изменениями, относящимися к screen -сессия). Но сообщения журнала датированы экраном 2005 года (вы можете увидеть изменения, внесенные в этот коммит в отношении обработки DCS, если клонируете репозиторий экрана git и используете команду ниже).

git clone git://git.savannah.gnu.org/screen.git
git difftool e6618a14^! src/ansi.c
7
ответ дан 2 December 2019 в 21:37

Я не собираюсь отвечать на вопрос полностью, но позвольте предложить способ решения проблемы. Многие оконные менеджеры поддерживают спецификацию EWMH . Существует также инструмент командной строки wmctrl , который может взаимодействовать с ними. Используя этот инструмент, можно легко изменить заголовок активного окна с помощью следующей команды:

  wmctrl -r :ACTIVE: -T "FooTitle"

Также можно изменить значок окна, макет и другие свойства. Инструмент, вероятно, не будет работать для PuTTY, поскольку Windows не поддерживает EWMH, но большинство систем Linux должны его принять.

При использовании этого метода не имеет значения, используете ли вы screen или нет.

1
ответ дан 2 December 2019 в 21:37

За последние 2 недели я искал во многих форумах и не нашел ответа на вопрос:

Как получить вывод всех команд в заголовок Putty?

Нужно было, чтобы другие программы знали, когда выполняются некоторые задания на сервере, и правильно ли это сделано или неправильно. Plink stdout и stdin не работали, я использовал много настроек с задержкой ожидания и для некоторых команд, которые не работали для других. XSEL и XCLIP не могли быть установлены на этом сервере.

Так что вот решение:

  1. Получить вывод команды в файл.
  2. Эхо этого файла на заголовок.

На шпаклевочном клиенте и сервере suse это выглядит так:

ls /home | grep domagaja > logutoit.txt 
echo -e "\033]0\\;$(cat logutoit.txt)\\007\\c"

Надеюсь, кто-нибудь сможет этим воспользоваться. Конечно, это будет работать не для всех типов серверов и настроек putty client, но идея должна сработать.

0
ответ дан 2 December 2019 в 21:37

Теги

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