Alterar o título do terminal no Mac OS X

39

Como posso alterar arbitrariamente o título de uma janela do Terminal no Mac OS X? Eu já vi essa pergunta e essa coisa mágica , mas acho que é apenas um simples comando do Mac OS X.

Dan Rosenstark
fonte
Observe que não há nada específico do OS X sobre isso - a resposta funcionará em praticamente qualquer terminal.
Andrew Aylett
É específico do Bash então?
Dan Rosenstark
@ Andrew Aylett, então o script que eu coloquei na minha resposta (abaixo) também funcionará nas distros do linux?
Dan Rosenstark
Sim, ele deve funcionar em qualquer lugar (com um shell derivado sh) que use terminais unix-y.
Andrew Aylett

Respostas:

48

Este artigo explica como.

Essencialmente, você usa seqüências de caracteres ecoadas na tela para informar ao terminal qual título deve exibir.

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

No exemplo acima, qualquer que seja o título da variável definido enquanto se torna o título do terminal. Obviamente, você poderia ter o título na string para ecoar, como:

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

Mas a primeira maneira torna um pouco mais fácil de usar e / ou estender mais tarde.

Dan McGrath
fonte
Excelente. Você poderia incluir um script de exemplo (como este? echo -n -e "\033]0;$1\007") Em sua resposta para que eu possa marcar a melhor resposta, por favor?
Dan Rosenstark
2
printf pode ser mais confiável: printf "\033]0;%s\007" "$title_variable"(as várias opções e comportamentos de eco não são os mesmos em todos os sistemas, shells ou mesmo opções de shell) Além disso, as atribuições de variáveis ​​no bash não devem ter espaços em torno do sinal de igual.
Chris Johnsen
11
Eu usei $ * e dentro de uma função, para não precisar citar minha string de título.
BeepDog 01/07
Existe uma maneira de alterar o título de dentro de um programa C? O programa que eu estou pensando é correr animação baseada em ncurses.h então eu não sei como fazer eco ao terminal :-(
phs
OK: Apenas fprintf (stdout, ..) funciona. Eu deveria ter tentado antes de perguntar.
Phs3 /
34

Se você adicionar o seguinte, ~/.profileobterá o mesmo efeito:

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

E então uma rápida title 'et voila'classificará todas as suas guias.

techpeace
fonte
por que é um problema se você tem muitas funções em .profile? existe um limite?
tgkprog
11
IDK por que, mas teve que editar Bash_profile vez de .profile
Nakilon
2
Ou: alias title="printf '\033]0;%s\007'".
Kenorb 14/05
export alias title="printf '\033]0;%s\007'"
Mwayi
Você também pode adicioná-lo usando sudo nano /etc/bashrc. Isso deve ser executado para todos os usuários. Reinicie a sessão do terminal ou faça source /etc/bashrcpara aplicar suas alterações.
Eugene Kulabuhov
8

Remix da resposta de Dan MgG:

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

Armazene-o em um arquivo chamado / usr / bin / title (usando o sudo!) E faça o chmod para + x. Então, de qualquer lugar, basta digitar

title 'Trying to Figure This GIT Thing Out'

e você ganha um bom título.

(A sintaxe pode variar se você não estiver no OSX, se bem entendi)

Dan Rosenstark
fonte
Se você estiver em uma dessas versões mais recentes do OS X, poderá fazê-lo /usr/local/bin/title.
Samy Bencherif
2

Como alternativa às soluções de linha de comando baseadas em sh, o aplicativo OS X Terminal prefere alterar o título da seguinte forma: No menu Terminal-> shell, há uma opção "editar título", selecione isso e você poderá alterar o título facilmente.

user572813
fonte
1

No OS X, as preferências do terminal são armazenadas em ~/Library/Preferences/com.apple.Terminal.plist.

O título do terminal é armazenado na WindowTitlepreferência.

J.Money
fonte
0

Obrigado por isso. Acabei de adicionar uma função ao meu .bashrc:

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

Na minha cabeça "stit" = um atalho conveniente para "set_title". E agora, quando quero definir o título das minhas janelas rapidamente, digito:

stit "[new window title]"
signetmac
fonte
0

A resposta marcada como Melhor resposta funciona bem ... foi isso que eu fiz ...

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

isso definirá o nome da nova guia como WorkerTab1 e ​​executará outros comandos como "cd" etc.

Bates
fonte