Modifier le titre du terminal sous Mac OS X

39

Comment changer arbitrairement le titre d'une fenêtre de terminal sous Mac OS X? J'ai vu cette question et cette affaire de magie magique , mais je pense qu'il ne s'agit que d'une simple commande Mac OS X.

Dan Rosenstark
la source
Il convient de noter qu’il n’ya rien de spécifique à OS X à ce sujet - la réponse fonctionnera à peu près sur n’importe quel terminal.
Andrew Aylett
Est-ce que c'est spécifique à Bash alors?
Dan Rosenstark
@ Andrew Aylett, donc le script que j'ai mis dans ma réponse (ci-dessous) fonctionnera aussi sur les distributions Linux?
Dan Rosenstark
Oui, cela devrait fonctionner n'importe où (avec un shell dérivé de sh) utilisant des terminaux unix-y.
Andrew Aylett

Réponses:

48

Cet article vous explique comment.

Essentiellement, vous utilisez des séquences de caractères rappelées à l'écran pour informer le terminal du titre qu'il doit afficher.

title='My first title'
echo -n -e "\033]0;$title\007"

Dans l'exemple ci-dessus, quel que soit le titre de la variable, il devient le titre du terminal. Bien sûr, vous pouvez simplement avoir le titre dans la chaîne pour faire écho, par exemple:

echo -n -e "\033]0;My first title\007"

Mais le premier moyen le rend un peu plus facile à utiliser et / ou à étendre plus tard.

Dan McGrath
la source
Excellent. Pourriez-vous inclure un exemple de script (comme celui-ci? echo -n -e "\033]0;$1\007") Dans votre réponse afin que je puisse la marquer au mieux, s'il vous plaît?
Dan Rosenstark
2
printf peut être plus fiable: printf "\033]0;%s\007" "$title_variable"(les différentes options et comportements d' écho ne sont pas les mêmes pour tous les systèmes, les shells ou même les options de shell) De plus, les affectations de variables dans bash ne doivent pas comporter d'espaces autour du signe égal.
Chris Johnsen
1
J'ai utilisé $ * et dans une fonction, donc je n'aurais pas à citer ma chaîne de titre.
BeepDog
Existe-t-il un moyen de changer le titre depuis un programme C? Le programme auquel je pense exécute une animation basée sur ncurses.h, donc je ne suis pas sûr de savoir comment faire écho au terminal :-(
phs
OK: Juste fprintf (stdout, ..) fonctionne. J'aurais dû essayer avant de demander.
phs
34

L'ajout de ce qui suit à votre ~/.profilevolonté aura le même effet:

# function for setting terminal titles in OSX
function title {
  printf "\033]0;%s\007" "$1"
}

Et puis un rapide title 'et voila'va trier tous vos onglets.

techpeace
la source
pourquoi est-ce un problème si vous avez plusieurs fonctions dans .profile? Y a-t-il une limite?
tgkprog
1
IDK pourquoi, mais devait éditer .bash_profile au lieu de
.profile
2
Ou: alias title="printf '\033]0;%s\007'".
Kenorb
export alias title="printf '\033]0;%s\007'"
Mwayi
Vous pouvez également l'ajouter en utilisant sudo nano /etc/bashrc. Cela devrait fonctionner pour tous les utilisateurs. Redémarrez la session de terminal ou faites-le source /etc/bashrcpour appliquer vos modifications.
Eugene Kulabuhov
8

Remix de la réponse de Dan MgG:

echo -n -e "\033]0;$1\007"

Stockez-le dans un fichier appelé / usr / bin / title (avec sudo!) Et chmod-le à + x. Puis de n'importe où vous pouvez simplement taper

title 'Trying to Figure This GIT Thing Out'

et vous obtenez un joli petit titre.

(La syntaxe peut varier si vous n'êtes pas sous OSX, si je comprends bien)

Dan Rosenstark
la source
Si vous utilisez l'une de ces nouvelles versions d'OS X, vous pouvez le faire à la /usr/local/bin/titleplace.
Samy Bencherif
2

En guise d'alternative aux solutions de ligne de commande basées sur sh, l'application Terminal OS X a la préférence de changer le titre de la manière suivante: Dans le menu Terminal-> shell, vous avez le choix "Éditer le titre", sélectionnez-le et modifiez-le. facilement.

utilisateur572813
la source
1

Sous OS X, les préférences de terminal sont stockées dans ~/Library/Preferences/com.apple.Terminal.plist.

Le titre du terminal est enregistré dans les WindowTitlepréférences.

J.Money
la source
0

Merci pour cela. Je viens d'ajouter une fonction à mon .bashrc:

    function stit() {
    echo -n -e "\033]0;$1\007"
}

Dans mon esprit, "stit" = un raccourci pratique pour "set_title". Et maintenant, quand je veux définir le titre de mes fenêtres à la volée, je tape:

stit "[new window title]"
Signetmac
la source
0

La réponse marquée comme Meilleure réponse fonctionne bien ... c'est ce que j'ai fait ...

tell application "Terminal"
    activate
    do script "echo -n -e \"\\033]0;WorkerTab1\\007\"; cd $HOME/folder1"
end tell

cela définira le nom du nouvel onglet sur WorkerTab1, puis effectuera d'autres commandes telles que "cd", etc.

Bates
la source