J'essaie screen
de définir mon xterm
titre. J'ai ce travail en dehors de screen
, mais screen
conserve le titre en place quand je l'ai commencé. Voici mon .bashrc
:
function bash_prompt_command () { # Combien de caractères du $ PWD doit être conservé pwdmaxlen local = 25 # Indique qu'il y a eu troncature dir local trunc_symbol = ".." dir local = $ {PWD ## * /} pwdmaxlen = $ (((pwdmaxlen <$ {# dir})? $ {# dir}: pwdmaxlen)) NEW_PWD = $ {PWD / # $ HOME / \ ~} pwdoffset local = $ (($ {# NEW_PWD} - pwdmaxlen)) if [$ {pwdoffset} -gt "0"] ensuite NEW_PWD = $ {NEW_PWD: $ pwdoffset: $ pwdmaxlen} NEW_PWD = $ {trunc_symbol} / $ {NEW_PWD # * /} Fi exporter NEW_PWD } PROMPT_COMMAND = bash_prompt_command # Nuancier @ http://wiki.archlinux.org/index.php/Color_Bash_Prompt cas "$ {TERM}" dans "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 " ;; "écran") 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
Et voici mon .screenrc
:
hardstatus alwayslastline chaîne de statut fixe '% {= 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; screen \ 007' altscreen activé titre du shell '$ | bash'
Qu'est-ce que je fais mal?
Mise à jour (19 août 2010):
Le problème est que vous ne pouvez pas mettre à jour le titre du terminal depuis l'écran lorsque vous définissez alwayslastline
. Donc, ma solution était de simplement abandonner et de me contenter d'un titre prédéterminé et utile pour mes sessions d'écran. Mon mis à jour .bashrc
et .screenrc
peut être trouvé à http://bitbucket.org/jsumners/rcfiles/src .
la source
hardstatus alwayslastline
comme je le fais pourscreen
empêcherscreen
de définir lexterm
titre. Maintenant, si je peux juste comprendre comment faire les deux en même temps.screen
le titre de la fenêtre, puis lancer le programme. Et puis abandonnez les titres de terminaux dynamiques lors de l'utilisationscreen
. :(En fait, il existe un moyen d'envoyer des séquences d'échappement directement au xterm, en passant par l'écran. Ce n'était pas facile à trouver, mais à partir du code d'écran (src / ansi.c), je pense que c'est là depuis 2005. Je le fais fonctionner dans xterm, Gnome Terminal et putty. J'ai trouvé une note dans Mintty Source indiquant que cela ne fonctionne pas simplement parce qu'ils ne gèrent pas DCS (sauf si cela a été corrigé récemment).
À partir de la documentation de l'écran ci-dessous (à http://www.gnu.org/software/screen/manual/html_node/Control-Sequences.html )
L'ANSI DCS (Device Control String) est un code d'échappement qui est utilisé pour envoyer directement à un terminal (je pense que c'était son objectif d'origine il y a de nombreuses années). Une telle chaîne se termine par un code d'échappement ST (String Terminator).
Enveloppez la chaîne pour définir le titre de la fenêtre du terminal dans un bloc DCS..ST, et il passe par l'écran et se met à jour correctement, même avec hardstatus alwayslastline.
DCS = \ 033P, ST = \ 033 \
Exemple - pour mettre à jour le titre de la fenêtre avec le répertoire de travail actuel, utilisez
Mieux vaut tard que jamais! J'espère que cela aide quelqu'un.
Juste au cas où je me trompe sur les changements de source d'écran: j'utilise la dernière version de screen-session git, qui à son tour utilise presque la dernière version de screen git (avec quelques changements spécifiques à screen-session). Mais les messages du journal sont datés de l'écran 2005 (vous pouvez voir les modifications apportées à ce commit concernant la gestion DCS si vous clonez le dépôt git d'écran et utilisez la commande ci-dessous).
la source
crb est un peu juste, mais
a) le code d'échappement qu'il utilise ne fonctionne pas pour moi. Ce devrait être
\033k
au lieu de\033_
. Voir ci-screen (1)
dessous"TITLES (naming windows)"
. Il devrait donc être:b) ce type d'échappement n'est utilisé que pour définir le titre de la fenêtre d'écran. Une instance d'écran peut avoir plusieurs fenêtres, chacune d'elles a un nom, c'est ce qui est affiché dans
hardstatus
etcaption
avec lat
séquence d'échappement.c) l'échappement bash normal fonctionne si vous définissez la bonne terminfo pour xterm dans
.screenrc
:(ceci aussi
works on my machine
pour le mastic)Donc, pour définir le bon titre pour la fenêtre d'écran et le titre putty / xterm, j'utilise quelque chose comme:
pour référence: http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x395.html
la source
Je ne vais pas répondre complètement à la question, mais permettez-moi de suggérer la façon de résoudre le problème. De nombreux gestionnaires de fenêtres prennent en charge la spécification EWMH . Il existe également un outil en ligne de commande
wmctrl
qui est capable d'interagir avec eux. En utilisant cet outil, on peut facilement changer le titre de la fenêtre active avec la commande suivante:Il est également possible de changer l'icône de la fenêtre, la disposition et d'autres propriétés.L'outil ne fonctionnera probablement pas pour PuTTY car Windows ne prend pas en charge EWMH, mais la plupart des systèmes Linux devraient l'accepter.
Avec cette méthode, peu importe que vous l'utilisiez
screen
ou non.la source
Au cours des 2 dernières semaines, j'ai recherché de nombreux forums et je n'ai pas trouvé la réponse à la question:
Comment obtenir toutes les sorties de commande au titre Putty?
J'en avais besoin pour que d'autres programmes sachent quand certains travaux sur un serveur sont terminés et s'ils sont bien ou mal faits. Plink stdout et stdin ne fonctionnaient pas, j'ai utilisé de nombreux réglages avec des délais d'attente et pour certaines commandes qui ne fonctionnaient pas pour d'autres. XSEL et XCLIP n'ont pas pu être installés sur ce serveur.
Voici donc la solution:
Sur le client de mastic et le serveur suse, cela ressemble à ceci:
J'espère que quelqu'un pourra l'utiliser. Cela ne fonctionnera pas pour tous les types de serveurs et paramètres de client de mastic, bien sûr, mais l'idée devrait bien fonctionner.
la source