Comment définir le titre d'un terminal avec la commande 'tput'?

9

J'ai découvert à travers cette réponse que je définissais les couleurs des terminaux dans mon invite de manière naïve depuis des années.

J'ai maintenant modifié mon .bashrc pour utiliser les commandes 'tput' afin de coloriser divers éléments de mon invite. Le seul code d'échappement que j'ai est le suivant:

TITLEBAR="\[\033]2; PROD - \u@\h:\w \007\]"

Est-ce que quelqu'un sait s'il existe un attribut tput / terminfo que je peux utiliser pour définir la barre de titre de ma fenêtre de terminal, afin de pouvoir éliminer cette fuite?

Murali Suriar
la source

Réponses:

9

Les capacités réelles sont tsl (To Status Line) et fsl (From Status Line), mais bien sûr, tous les terminaux ne l'ont pas. Sous Linux en particulier, vous devez définir votre terminal sur xterm + sl ou quelque chose de similaire.

Vous pouvez tester cela avec

export TERM=xterm+sl
echo `tput tsl` Hello world `tput fsl`; sleep 10

Je ne prendrais pas la peine de garder ces évasions dans .bashrc

codehead
la source
1
Il semble que ma copie d'Ubuntu ne dispose pas de ces informations sur le terminal. :( Je blâme les fichiers terminfo incomplets :)
David Pashley
1
écran, cependant, semble les soutenir très bien. Merci!
Murali Suriar
3
\033];est la séquence d'échappement xtermpour une "commande de système d'exploitation" . Je ne sais pas comment faire cela dans tput, mais s'il est possible de le faire via tput, ce serait une meilleure méthode pour le réglage du titre du terminal multiplateforme. Par exemple, sur xterm, cela entraînerait la séquence \033]0;Title\007. Voir aussi ici
Wyatt8740
@codehead Votre solution est gênante car si je tape export TERM=xterm+sl, alors je n'ai plus de syntaxe highting dans vim.
SebMa
2

Après avoir regardé le fichier terminfo xterm, je ne trouve aucun code identique à cette commande, donc je pense qu'il n'y en a pas.

Si vous êtes intéressé, la page de manuel terminfo répertorie toutes les commandes comprises par termcap et terminfo. J'ai décompilé le fichier de base de données terminfo en utilisant:

# infocmp -L xterm 
David Pashley
la source
2

Je ne peux pas commenter, donc une réponse supplémentaire:

Si vous utilisez tsl / fsl, assurez-vous de demander d'abord au terminal hs. hs doit être vrai si tsl / fsl (et autres * sl) sont pris en charge.

tput hs && { echo ....; }

la source
1
+1 si vous avez une référence pour cela.
l0b0
1

Pour plus d'informations sur les fonctionnalités spéciales du «mode vt100» de xterm, consultez le document Xterm Control Sequences dans la section Operating System Controls pour tous les détails sanglants.

Randall
la source