Estou tentando screen
definir meu xterm
título. Eu tenho esse trabalho fora screen
, mas screen
mantém o título em vigor quando o iniciei. Aqui está o meu .bashrc
:
função bash_prompt_command () { # Quantos caracteres do $ PWD devem ser mantidos local pwdmaxlen = 25 # Indique que houve truncamento de diretório local trunc_symbol = ".." dir local = $ {PWD ## * /} pwdmaxlen = $ (((pwdmaxlen <$ {# dir})? $ {# dir}: pwdmaxlen)) NEW_PWD = $ {PWD / # $ HOME / \ ~} local pwdoffset = $ (($ {# NEW_PWD} - pwdmaxlen)) se [$ {pwdoffset} -gt "0"] então NEW_PWD = $ {NEW_PWD: $ pwdoffset: $ pwdmaxlen} NEW_PWD = $ {trunc_symbol} / $ {NEW_PWD # * /} fi exportar NEW_PWD } PROMPT_COMMAND = bash_prompt_command # Cartela de cores @ http://wiki.archlinux.org/index.php/Color_Bash_Prompt caso "$ {TERM}" em "xterm") TITLEBAR = '\ [\ 033] 0; \ u @ \ h> $ {NEW_PWD} \ 007 \]' PS1 = "$ {TITLEBAR} \ [\ e [1; 32m \] [\ e [0; 36m \] \ u \ e [1; 32m \] @ \ e [1; 33m \] \ h \ e [ 1; 32m \]] \ e [0; 37m \] \ $ {NEW_PWD} / \ e [1; 32m \] \ $ \ [\ e [0m " ;; "tela") TITLEBAR = '\ [\ 033] 0; \ u @ \ h> $ {NEW_PWD} \ 007 \]' ESC = '\ [\ ek \ e \\\]' PS1 = "$ {TITLEBAR} \ [\ e [1; 32m \] [\ e [0; 36m \] \ u \ e [1; 32m \]] \ e [0; 37m \] \ $ {NEW_PWD} / \ e [1; 32m \] \ $ $ {ESC} \ [\ e [0m " ;; *) PS1 = "\ [\ e [1; 32m \] [\ e [0; 36m \] \ u \ e [1; 32m \] @ \ e [1; 33m \] \ h \ e [1; 32m \ ]] \ e [0; 37m \] \ $ {NEW_PWD} / \ e [1; 32m \] \ $ \ [\ e [0m " ;; esac
E aqui está o meu .screenrc
:
hardstatus alwayslastline string do status fixo '% {= 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; tela \ 007' tela ativa shelltitle '$ | bash'
O que estou fazendo incorretamente?
Atualização (19 de agosto de 2010):
O problema é que você não pode atualizar o título do terminal na tela ao definir alwayslastline
. Então, minha solução foi desistir e me contentar com um título predeterminado e útil para minhas sessões de tela. Meu atualizado .bashrc
e .screenrc
pode ser encontrado em http://bitbucket.org/jsumners/rcfiles/src .
gnu-screen
putty
James Sumners
fonte
fonte
hardstatus alwayslastline
como faço para,screen
impede ascreen
definição doxterm
título. Agora, se eu puder descobrir como fazer as duas coisas ao mesmo tempo.screen
que defina o título da janela e, em seguida, inicie o programa. E então, desista dos títulos dinâmicos dos terminais enquanto estiver usandoscreen
. :(Na verdade, existe uma maneira de enviar seqüências de escape diretamente para o xterm, passando pela tela. Não foi fácil encontrá-lo, mas pelo código da tela (src / ansi.c) acho que existe desde 2005. Tenho ele trabalhando no xterm, no Gnome Terminal e na massa. Encontrei uma nota na fonte mintty indicando que não funciona lá simplesmente porque eles não lidam com o DCS (a menos que tenha sido corrigido recentemente).
Na documentação da tela abaixo (em http://www.gnu.org/software/screen/manual/html_node/Control-Sequences.html )
O ANSI DCS (String de controle de dispositivo) é um código de escape usado para enviar diretamente para um terminal (acho que esse era seu objetivo original de muitos anos atrás). Essa string é finalizada com um código de escape ST (String Terminator).
Enrole a string para definir o título da janela do terminal dentro de um bloco DCS..ST, e ele passa pela tela e é atualizado corretamente, mesmo com o status rígido sempre na última linha.
DCS = \ 033P, ST = \ 033 \
Exemplo - para atualizar o título da janela com o diretório de trabalho atual, use
Antes tarde do que nunca! Espero que isso ajude alguém.
Apenas no caso de eu estar errado sobre as alterações na fonte da tela: estou executando o mais recente do git de sessão de tela, que por sua vez está usando quase o mais recente do git de tela (com algumas alterações específicas para a sessão de tela). Mas as mensagens de log são datadas da tela de 2005 (você pode ver as alterações feitas nessa confirmação com relação ao manuseio do DCS se você clonar o repositório git de tela e usar o comando abaixo).
fonte
crb é meio certo, mas
a) o código de escape que ele usa não funciona para mim. Deve ser em
\033k
vez de\033_
. Vejascreen (1)
abaixo"TITLES (naming windows)"
. Então deve ser:b) esse tipo de escape é usado apenas para definir o título da janela da tela. Uma instância da tela pode ter várias janelas, cada uma delas com um nome, que é o que é exibido na
hardstatus
ecaption
com at
sequência de escape.c) o escape normal do bash funciona se você definir o terminfo correto para o xterm em
.screenrc
:(isso também
works on my machine
para massa)Portanto, para definir o título certo para a janela da tela e o título putty / xterm, uso algo como:
para referência: http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x395.html
fonte
Não vou responder a pergunta completamente, mas deixe-me sugerir a maneira de resolver o problema. Muitos gerenciadores de janelas suportam a especificação EWMH . Há também uma ferramenta de linha de comando
wmctrl
capaz de interagir com eles. Usando esta ferramenta, é possível alterar facilmente o título da janela ativa com o seguinte comando:Também é possível alterar o ícone da janela, o layout e outras propriedades. A ferramenta provavelmente não funcionará para o PuTTY, pois o Windows não suporta EWMH, mas a maioria dos sistemas Linux deve aceitá-lo.
Com esse método, não importa se você usa
screen
ou não.fonte
Nas últimas 2 semanas, procurei em muitos fóruns e não encontrei a resposta para a pergunta:
Como obter toda a saída do comando para o título Putty?
É necessário que outros programas saibam quando alguns trabalhos em um servidor estão concluídos e se estão certos ou errados. O plink stdout e stdin não estavam funcionando, usei muitos ajustes com atrasos de espera e para alguns comandos que funcionaram para outros não. Não foi possível instalar o XSEL e o XCLIP nesse servidor.
Então, aqui está a solução:
No cliente de massa e no servidor suse, fica assim:
Espero que alguém seja capaz de usar isso. Obviamente, não funcionará para todos os tipos de servidor e configurações de massa de vidraceiro, mas a ideia deve funcionar bem.
fonte