Fenêtre d'écran GNU renommer la nuisance

13

J'aime faire apparaître une session d'écran avec des connexions SSH pré-ouvertes aux serveurs principaux que j'administre au bureau. Je donne à ces fenêtres un nom très bref, généralement de 2 à 4 caractères, de sorte qu'elles apparaissent dans la barre d'état de l'écran avec ces noms. Je vais donc avoir une entrée d'écran qui ressemble à

0$ jen1 ...

Maintenant, lorsque je dois basculer vers ce serveur et faire quelque chose d'aussi simple que de récupérer une liste de répertoires, ce nom se développe soudainement et devient

0$ ghellings@devjenkins01

La même chose se produit pour chaque fenêtre lorsque j'y accède, ce qui fait que ma barre d'état déborde rapidement de la largeur horizontale de mon écran. Je voudrais verrouiller le nom en place au moment de la création de la fenêtre et empêcher les applications clientes de le changer. Je ne veux pas que les applications puissent changer le titre de la fenêtre d'écran (bien à l'opposé de ce que beaucoup de gens semblent demander). Cela devient particulièrement lourd une fois que je passe à cet écran et ouvre un répertoire quelque part. Ensuite, le titre de l'écran devient

 (0*$ ghellings@devjenkins01:/opt/somepackage/software/subdirectory)

Je veux qu'il modifie uniquement l'état actif pour qu'il lise toujours soit

`0$ jen1` or `(0*$ jen1)`

Existe-t-il un moyen de verrouiller le nom de la fenêtre et d’empêcher de le changer?

Greg Hellings
la source

Réponses:

8

J'ai trouvé cela très tôt dans les tests RHEL 7 et cela me rendrait fou. Ce que j'ai découvert, c'est qu'il y a eu un changement /etc/bashrcdans RHEL 7 qui provoque le nommage des fenêtres screenet tmuxchange chaque fois qu'une commande comme cdou lsest exécutée. Dans l'écran de section *)

if [ -e /etc/sysconfig/bash-prompt-screen ]; then
    PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
## RHEL 7
    PROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'

## RHEL 6
    PROMPT_COMMAND='printf "\033]0;%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi

Donc, dans RHEL 7, le changement était de ] 0; à k dans la section PROMPT_COMMAND.

J'avais envisagé d'ouvrir un bug, mais je n'y suis jamais parvenu. Je le modifie généralement manuellement lors d'une nouvelle installation.

  • Modifications apportées pour mettre à jour la mise en forme
willg
la source
6

Très probablement, vous avez la PROMPT_COMMANDvariable définie sur quelque chose comme

printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"

J'ai exactement cela sur un système CentOS 7. Cela définit le titre de la fenêtre xterm après chaque commande, qui screensert de titre de fenêtre.

Désactivez simplement PROMPT_COMMANDvotre .bashrcou modifiez-le /etc/bashrcpour ne pas le définir.

katti
la source
Voir ci-dessous pour rendre cela plus permanent.
math
2

Si vous cochez .bashrcou /etc/bashrc, vous pouvez voir ifou casequi est lié à screen.

Dans mon cas, c'était quelque chose comme:

if [ -e /etc/sysconfig/bash-prompt-screen ]; then
    PROMPT_COMMAND=/etc/sysconfig/bash-prompt-screen
else
    PROMPT_COMMAND='printf "\033k%s@%s:%s\033\\" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'
fi

sous case $TERM indans le /etc/bashrcdossier.

Le problème était que je n'avais pas le fichier /etc/sysconfig/bash-prompt-screendonc PROMPT_COMMANDsous elseest utilisé.

Je viens de créer un /etc/sysconfig/bash-prompt-screenfichier vide , puis les titres des fenêtres d'écran ne sont plus modifiés dynamiquement!

GyuHyeon Choi
la source
Vous devez rendre le fichier vide exécutable ou vous obtiendrez un avertissement à chaque lancement de bash (par exemple lors de la connexion pour tout le monde).
math