Affichage du nom de la session d'écran GNU et du titre de la fenêtre dans l'invite du shell


11

Existe-t-il un moyen de présenter le nom de la session GNU Screen et le titre de la fenêtre dans l'invite du shell (disons, l'invite Bash définie par PS1)?

Réponses:


14

L'écran fournit certaines variables d'environnement (à partir de la screenpage de manuel (1)):

STY              Alternate socket name.
WINDOW           Window number of a window (at creation time).

Le "au moment de la création" signifie que si vous renumérotez une fenêtre (en utilisant la numbercommande de l'écran ), le shell ne sera pas informé de la modification et $ WINDOW sera toujours le même que le premier numéro de fenêtre.

Vous pouvez utiliser quelque chose comme:

PS1='\u@\h(${STY}:${WINDOW}):\w$ '

1
Parfait! C'est ce que je cherchais. BTW, il existe un moyen d'obtenir le titre de la fenêtre, au lieu du numéro de fenêtre?
brandizzi

Pas que je sache, il n'y a pas d'api pour l'écran, et lorsque vous émettez des commandes il n'y a pas de sortie - il va à la fenêtre actuelle de l'écran. Par exemple screen -xr 2466 -X windows.
Arcege

Bien qu'il relève probablement du cas de renumérotation, existe-t-il un moyen d'accéder au nom de la fenêtre si elle est définie avec Ctrl-a A?
Thalis K.

1
Si GNU screena été compilé avec l' -Qoption (requête), vous pouvez exécuter certaines commandes, telles que titleet windowset afficher les données sur stdout, cependant, sans retour à la ligne.
Arcege

3

J'utilise toujours des noms de session d'écran précis. Ensuite, je peux ajouter la var STY env de l'écran, avec l'ID numérique supprimé (merci dimo414), à PS1. Je ne le décore pas avec des accolades ou quoi que ce soit parce que je ne suis pas toujours en session. Exemple simple:

PS1='\u@\h ${STY#[0-9]*.} \w$ '

1

J'utilise ceci:

(`echo ${STY} | sed -e 's/[0-9]*\.//g'`:${WINDOW}:`screen -Q title`)

supprime le numéro de processus ${STY}
inclus le numéro de fenêtre (comme mentionné "au moment de la création")
inclut le titre de la fenêtre (tel que renvoyé par screen -Q title)

Remarques:

  • première fois qu'il fonctionne, screen -Q attend une touche de retour
  • j'ai défini le titre de la fenêtre avec Ca CA et puis source mon .profile pour mettre à jour l'invite

5
L'utilisation ${STY#[0-9]*.}évite d'avoir à passer à travers sed.
dimo414
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.