Я пытаюсь screen
установить свой xterm
титул. У меня это работает за пределами screen
, но screen
сохраняет то, что название было на месте, когда я начал это. Вот мой .bashrc
:
function bash_prompt_command () { # Сколько символов $ PWD должно быть сохранено местный pwdmaxlen = 25 # Укажите, что было усечение dir local trunc_symbol = ".." local dir = $ {PWD ## * /} pwdmaxlen = $ (((pwdmaxlen <$ {# dir})? $ {# dir}: pwdmaxlen)) NEW_PWD = $ {PWD / # $ HOME / \ ~} local pwdoffset = $ (($ {# NEW_PWD} - pwdmaxlen)) if [$ {pwdoffset} -gt "0"] тогда NEW_PWD = $ {NEW_PWD: $ pwdoffset: $ pwdmaxlen} NEW_PWD = $ {trunc_symbol} / $ {NEW_PWD # * /} фи экспорт NEW_PWD } PROMPT_COMMAND = bash_prompt_command # Цветовая шкала @ http://wiki.archlinux.org/index.php/Color_Bash_Prompt case "$ {TERM}" в "Xterm") TITLEBAR = '\ [\ 033] 0; \ u @ \ h> $ {NEW_PWD} \ 007 \]' PS1 = "$ {Titlebar} \ [\ е [1; 32m \] [\ е [0; 36m \] \ и \ е [1; 32m \] @ \ е [1; 33m \] \ ч \ е [ 1; 32м \]] \ e [0; 37м \] \ $ {NEW_PWD} / \ e [1; 32м \] \ $ \ [\ e [0м " ;; «Экран») TITLEBAR = '\ [\ 033] 0; \ u @ \ h> $ {NEW_PWD} \ 007 \]' ESC = '\ [\ ек \ е \\\] PS1 = "$ {TITLEBAR} \ [\ e [1; 32 м \] [\ e [0; 36 м \] \ u \ e [1; 32 м \]] \ e [0; 37 м \] \ $ {NEW_PWD} / \ e [1; 32 м \] \ $ $ {ESC} \ [\ e [0 м " ;; *) PS1 = "\ [\ е [1; 32m \] [\ е [0; 36m \] \ и \ е [1; 32m \] @ \ е [1; 33m \] \ ч \ е [1; 32m \ ]] \ e [0; 37 м \] \ $ {NEW_PWD} / \ e [1; 32 м \] \ $ \ [\ e [0 м " ;; ESAC
И вот мой .screenrc
:
hardstatus всегда последний строка с твердым статусом '% {= kg} [% {Y}% H% {g}] [% =% {= kw}%?% - Lw%?% {= b kR} (% {W}% n-% t%? (% u)%?% {= b kR})% {= kw}%?% + Lw%?%?% =% {g}] [% {Y}% l% {g}]% {g} [% {B}% m.% d.% Y% {G}% c% {g}] ' termcapinfo xterm | xterms | xs | rxvt ti @: te @ termcapinfo xterm 'hs: ts = \ E] 2;: fs = \ 007: ds = \ E] 2; экран \ 007' Altscreen на заголовок оболочки '$ | bash'
Что я делаю неправильно?
Обновление (19 августа 2010 г.)
. Проблема в том, что вы не можете обновить заголовок терминала из экрана при установке alwayslastline
. Таким образом, мое решение состояло в том, чтобы просто сдаться и согласиться на предопределенный, полезный заголовок для моих сеансов экрана. Мой обновленный .bashrc
и .screenrc
может быть найден на http://bitbucket.org/jsumners/rcfiles/src .
источник
hardstatus alwayslastline
как я могу сделать дляscreen
предотвращаетscreen
от установкиxterm
названия. Теперь, если я могу просто выяснить, как сделать оба одновременно.screen
который устанавливает заголовок окна и затем запускает программу. А потом просто разочаровывайтесь в динамических терминалах при использованииscreen
. :(На самом деле, есть способ отправить escape-последовательности прямо в xterm, проходя через экран. Найти его было непросто, но по коду экрана (src / ansi.c) я думаю, что он существует с 2005 года. У меня он работает в xterm, Gnome Terminal и putty. Я нашел примечание в Mintty Source, указывающее, что оно не работает там просто потому, что они не обрабатывают DCS (если это не было исправлено недавно).
Из документации для экрана ниже (по адресу http://www.gnu.org/software/screen/manual/html_node/Control-Septions.html ).
ANSI DCS (строка управления устройством) - это управляющий код, который используется для отправки непосредственно на терминал (я думаю, что это было его первоначальное назначение много лет назад). Такая строка завершается escape-кодом ST (терминатор строки).
Оберните строку, чтобы задать заголовок окна терминала в блоке DCS..ST, и он будет проходить через экран и корректно обновляться, даже если hardstatus всегда последний.
DCS = \ 033P, ST = \ 033 \
Пример - чтобы обновить заголовок окна с текущим рабочим каталогом, используйте
Лучше поздно, чем никогда! Надеюсь, это кому-нибудь поможет.
На всякий случай, если я не прав насчет изменений источника экрана: я запускаю последнюю версию из git screen-session, которая, в свою очередь, использует почти последнюю версию из git screen (с некоторыми изменениями, специфичными для screen-session). Но сообщения журнала поступают с экрана 2005 года (вы можете увидеть изменения, внесенные в этот коммит в отношении обработки DCS, если вы клонируете репозиторий на экране git и используете приведенную ниже команду).
источник
CRB вроде как хорошо, но
а) код выхода, который он использует, у меня не работает. Это должно быть
\033k
вместо\033_
. Смотритеscreen (1)
ниже"TITLES (naming windows)"
. Так и должно быть:б) этот вид экранирования используется только для установки заголовка экранного окна. Один экземпляр экрана может иметь несколько окон, каждое из которых имеет имя, то есть то, что отображается в
hardstatus
иcaption
сt
escape-последовательностью.c) нормальное экранирование bash работает, если вы установили правильное terminfo для xterm в
.screenrc
:(это также
works on my machine
для замазки)Поэтому, чтобы установить правильный заголовок для окна экрана и заголовка putty / xterm, я использую что-то вроде:
для справки: http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x395.html
источник
Я не собираюсь отвечать на вопрос полностью, но позвольте мне предложить способ решения проблемы. Многие оконные менеджеры поддерживают спецификацию EWMH . Существует также инструмент командной строки,
wmctrl
который может взаимодействовать с ними. Используя этот инструмент, можно легко изменить заголовок активного окна с помощью следующей команды:Также возможно изменить значок окна, макет и другие свойства. Этот инструмент, вероятно, не будет работать для PuTTY, поскольку Windows не поддерживает EWMH, но большинство систем Linux должны принять его.
С этим методом не имеет значения, используете ли вы
screen
или нет.источник
Последние 2 недели я искал много форумов и не нашел ответа на вопрос:
Как получить весь вывод команды в заголовок Putty?
Нужно, чтобы другие программы знали, когда выполняются некоторые задания на сервере, и правильно ли это сделано. Plink stdout и stdin не работали, я использовал много твиков с задержками ожидания и для некоторых команд, которые не работали для других. XSEL и XCLIP не могут быть установлены на этом сервере.
Итак, вот решение:
На клиенте замазки и сервере suse это выглядит так:
Надеюсь, кто-то сможет использовать это. Конечно, он не будет работать для всех типов серверов и настроек клиента замазки, но идея должна работать хорошо.
источник