Cambiar el título del terminal en Mac OS X

39

¿Cómo puedo cambiar arbitrariamente el título de una ventana de Terminal en Mac OS X? He visto esta pregunta y esta cosa de envoltura mágica , pero creo que es solo un simple comando de Mac OS X.

Dan Rosenstark
fuente
Debe tener en cuenta que no hay nada específico de OS X sobre esto: la respuesta funcionará en casi cualquier terminal.
Andrew Aylett
¿Es específico de Bash entonces?
Dan Rosenstark
@Andrew Aylett, ¿entonces el script que puse en mi respuesta (a continuación) también funcionará en las distribuciones de Linux?
Dan Rosenstark
Sí, debería funcionar en cualquier lugar (con un shell derivado de sh) que use terminales unix-y.
Andrew Aylett

Respuestas:

48

Este artículo te dice cómo.

Básicamente, utiliza secuencias de caracteres que se repiten en la pantalla para informar al terminal qué título debe mostrar.

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

En el ejemplo anterior, cualquiera que sea el título de la variable se establece mientras se convierte en el título del terminal. Por supuesto, podría tener el título en la cadena para hacer eco como:

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

Pero la primera forma hace que sea un poco más fácil de usar y / o extender más tarde.

Dan McGrath
fuente
Excelente. ¿Podría incluir un script de muestra (como este? echo -n -e "\033]0;$1\007") En su respuesta para que pueda marcar la mejor respuesta, por favor?
Dan Rosenstark
2
printf puede ser más confiable: printf "\033]0;%s\007" "$title_variable"(las diversas opciones y comportamientos de echo no son los mismos en todos los sistemas, shells o incluso opciones de shell) Además, las asignaciones variables en bash no deberían tener espacios alrededor del signo igual.
Chris Johnsen
1
Usé $ * y dentro de una función, por lo que no tendría que citar mi cadena de título.
BeepDog 01 de
¿Hay alguna manera de cambiar el título desde un programa en C? El programa en el que estoy pensando ejecuta animación basada en ncurses.h, así que no estoy seguro de cómo hacer eco en el terminal :-(
phs
OK: solo fprintf (stdout, ..) funciona. Debería haberlo intentado antes de preguntar.
Phs
34

Agregar lo siguiente a su ~/.profilelogrará el mismo efecto:

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

Y luego un rápido title 'et voila'clasificará todas tus pestañas.

techpeace
fuente
¿Por qué es un problema si tiene muchas funciones en .profile? ¿hay un límite?
tgkprog
1
IDK por qué, pero tuve que editar .bash_profile en lugar de .profile
Nakilon
2
O: alias title="printf '\033]0;%s\007'".
kenorb
export alias title="printf '\033]0;%s\007'"
Mwayi
También puedes agregarlo usando sudo nano /etc/bashrc. Esto debería ejecutarse para todos los usuarios. Reinicie la sesión de terminal o haga source /etc/bashrcpara aplicar sus cambios.
Eugene Kulabuhov
8

Remix de la respuesta de Dan MgG:

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

Almacénelo en un archivo llamado / usr / bin / title (¡usando sudo!) Y modifíquelo en + x. Luego, desde cualquier lugar, simplemente puede escribir

title 'Trying to Figure This GIT Thing Out'

y obtienes un pequeño título agradable.

(La sintaxis puede variar si no está en OSX, si lo entiendo correctamente)

Dan Rosenstark
fuente
Si estás en una de esas versiones más nuevas de OS X, puedes hacerlo en su /usr/local/bin/titlelugar.
Samy Bencherif
2

Como alternativa a las soluciones de línea de comandos basadas en sh, la aplicación OS X Terminal tiene la preferencia de cambiar el título de la siguiente manera: en el menú Terminal-> shell hay una opción de "editar título", selecciónela y podrá cambiar el título fácilmente.

user572813
fuente
1

En OS X, las preferencias de terminal se almacenan en ~/Library/Preferences/com.apple.Terminal.plist.

El título del terminal se almacena en la WindowTitlepreferencia.

J.Money
fuente
0

Gracias por esto. Acabo de agregar una función a mi .bashrc:

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

En mi opinión, "stit" = un atajo conveniente para "set_title". Y ahora, cuando quiero establecer el título de mis ventanas sobre la marcha, escribo:

stit "[new window title]"
signetmac
fuente
0

La respuesta marcada como Mejor respuesta funciona bien ... esto es lo que hice ...

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

esto establecerá el nombre de la nueva pestaña en WorkerTab1 y luego ejecutará otros comandos como "cd", etc.

Bates
fuente