Définir le titre de l’écran à partir du script shell

Est-il possible de définir le Screen-Title l’ Screen-Title utilisant un script shell?

J’ai pensé à quelque chose comme envoyer les raccourcis clavier Strg+A Shift-A Name

J’ai cherché pendant environ une heure sur la manière d’émuler les frappes dans un script shell, mais je n’ai pas trouvé la réponse.

Merci pour l’aide!

Beerweasle

Vous pouvez définir le titre de l’écran / xterm en utilisant les lignes suivantes:

 #!/bin/bash mytitle="Some title" echo -e '\033k'$mytitle'\033\\' 

[UPDATE] – sur demande, j’inclus également la solution proposée par @Espo ci-dessous:

Selon votre version de xterm ou votre dissortingbution Linux, la ligne ci-dessus peut ou non fonctionner et vous pouvez essayer les valeurs par défaut de xterm:

 #!/bin/bash mytitle="Some title" echo -e '\033]2;'$mytitle'\007' 

Pour plus de détails, consultez: http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3 ou reportez-vous à la réponse de @Espo ci-dessous.

De http://www.faqs.org/docs/Linux-mini/Xterm-Title.html#s3

séquences d’échappement xterm

Les titres de fenêtres et d’icons peuvent être modifiés dans un xterm en cours d’exécution en utilisant des séquences d’échappement XTerm. Les séquences suivantes sont utiles à cet égard:

  • ESC]0;ssortingngBEL – Définit le nom de l’icône et le titre de la fenêtre sur la chaîne
  • ESC]1;ssortingngBEL – Définit le nom de l’icône sur chaîne
  • ESC]2;ssortingngBEL – Définit le titre de la fenêtre sur la chaîne

où ESC est le caractère d’échappement (\ 033) et BEL est le caractère de cloche (\ 007).

Si vous imprimez l’une de ces séquences dans xterm, le titre de la fenêtre ou de l’icône sera modifié.

Remarque: ces séquences s’appliquent à la plupart des dérivés de xterm, tels que nxterm, color-xterm et rxvt. D’autres types de terminaux utilisent souvent des évasions différentes. voir l’annexe pour des exemples. Pour la liste complète des séquences d’échappement de xterm, consultez le fichier ctlseq2.txt, fourni avec la dissortingbution xterm, ou xterm.seq, fourni avec la dissortingbution rxvt.

Impression des séquences d’échappement

Pour des informations constantes tout au long de la vie de ce shell, telles que l’hôte et le nom d’utilisateur, il suffira de répéter la chaîne d’échappement dans le fichier rc du shell:

  echo -n "\033]0;${USER}@${HOST}\007" 

devrait produire un titre comme username @ hostname, en supposant que les variables shell $ USER et $ HOST soient correctement définies. Les options requirejses pour l’écho peuvent varier selon le shell (voir les exemples ci-dessous).

Pour les informations susceptibles de changer pendant la durée de vie du shell, telles que le répertoire de travail en cours, ces échappements doivent être appliqués chaque fois que l’invite change. De cette façon, la chaîne est mise à jour à chaque commande que vous émettez et peut conserver des informations telles que le répertoire de travail, le nom d’utilisateur, le nom d’hôte, etc. Certains shells fournissent des fonctions spéciales, d’autres non. directement dans la chaîne d’invite. Ceci est illustré dans la section suivante.

Vous trouverez ci-dessous d’autres moyens de créer un script pour renommer les titres d’écran:

L’ajout des parameters suivants à .ssh/config définit automatiquement le titre de l’écran lors de la connexion à un système utilisant SSH:

 Host * PermitLocalCommand yes LocalCommand [ "$TERM" == 'screen' ] && echo -ne "\033k%h\033\\" 

Au lieu de %h , qui représente le nom d’hôte de la machine avec laquelle vous vous connectez, vous pouvez utiliser %n , qui est le nom / alias réel que vous avez utilisé pour vous connecter à la machine.

REMARQUE: OpenSSH> = v5.1 doit pouvoir utiliser les parameters Localhost% n et% h. Découvrez «man ssh_config» pour plus d’informations sur LocalCommand.

Après avoir fermé la session SSH, vous pouvez append une séquence d’échappement à l’invite de la variable PS1 dans .bashrc pour que le titre revienne automatiquement à celui du nom d’hôte de l’hôte local.

 export PS1='you_favorite_PS1_here' if [ "$TERM" == 'screen' ]; then export PS1=${PS1}'\[\033k\h\033\\\]' fi 

Ces astuces sont particulièrement utiles lorsque vous utilisez une configuration .screenrc qui vous montre dans quel écran “onglet” vous travaillez actuellement. Ajoutez quelque chose comme ceci à .screenrc pour que cela fonctionne:

 caption always "%{= kY}%-w%{= Yk}%n %t%{-}%+w%{ kG} %-= @%H - %LD %d %LM - %c" 

Essayez les commandes ci-dessous, inutile d’éditer un fichier ou une configuration comme ~ / .bashrc, Peut être utilisé à l’exécution.

Définir le texte statique comme titre: (Mon titre)

 export PS1='\[\e]0;My Title\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' 

Définir la variable locale / globale comme titre: ($ USER)

 export PS1='\[\e]0;$USER\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' 

Définir la sortie de la commande sous le titre: (hostname)

 export PS1='\[\e]0;`hostname`\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' 

Défini par défaut (Revenir en arrière):

 export PS1='\[\e]0;\u@\h: \w\a\]${debian_chroot:+($debian_chroot)}\u@\h:\w\$ ' 
 set_screen_title () { echo -ne "\ek$1\e\\" } 

Vous pouvez également appeler l’écran et lui indiquer de définir un titre:

 screen -X title "new title" 

Si vous êtes dans une fenêtre d’écran, il définira le nom de cette fenêtre. Si vous n’êtes pas à l’écran, il définira le nom de la fenêtre ouverte la plus récente.

Pour append à la réponse d’Espo, les séquences d’échappement xterm peuvent également être appliquées à la variable Bash PS1

 ESC]0;ssortingngBEL -- Set icon name and window title to ssortingng ESC]1;ssortingngBEL -- Set icon name to ssortingng ESC]2;ssortingngBEL -- Set window title to ssortingng 

Exemple

 PS1='\e]0;ssortingng\a' 

Pour activer la mise à jour automatique des titres lorsque vous vous déplacez avec ssh, ajoutez ceci à

~ / .bashrc

 ssh() { echo -n -e "\033k$1\033\\" /usr/bin/ssh "$@" echo -n -e "\033k`hostname -s`\033\\" } echo -n -e "\033k`hostname -s`\033\\" 

Voir http://linuxepiphany.blogspot.com.ar/2010/05/good-screenrc-config-setup.html

  # add the following in your ~/.bashrc or ~/.bash_profile PROMPT_COMMAND='printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"' 

ou même mieux copier l’ensemble du concept pour personnaliser vos configs bash entre beaucoup d’hôtes d’ ici