
Existe um comando que pode ser usado para alterar o esquema de cores do Terminal Mac OS X? Gosto da ideia de poder mudar as cores dependendo dos scripts que executo. Até agora, estou apenas mudando a cor do meu prompt do bash com o PS1, o que é bom, mas não tão perceptível quanto eu gostaria.
Responder1
Dependendo do queexatamentevocê deseja realizar, aqui estão algumas idéias em AppleScript usando seus estilos de Terminal. Eles são mais robustos do que tput
, porque são redefinidos por prompts coloridos. etc (pelo menos para mim).
Isso define todas as guias que executam Python (nenhum servidor SSH disponível para teste no momento) para Homebrew, as outras para Ocean:
tell application "Terminal"
repeat with w from 1 to count windows
repeat with t from 1 to count tabs of window w
if processes of tab t of window w contains "Python" then
set current settings of tab t of window w to (first settings set whose name is "Homebrew")
else
set current settings of tab t of window w to (first settings set whose name is "Ocean")
end if
end repeat
end repeat
end tell
salve como script e execute osascript Name.scpt
sempre que quiser recolorir seus shells (é claro que você pode agrupar isso como um script de shell ou algo assim).
Se você quiser exibir todos os processos de longa duração de forma diferente, use a seguinte condição:
if busy of tab t of window w is true then
Ou você pode definir o estilo de uma única guia, selecionada manualmente:
on run argv
tell application "Terminal" to set current settings of tab (item 1 of argv as number) of front window to first settings set whose name is (item 2 of argv)
end run
Execute assim:
osascript StyleTerm.scpt 3 Homebrew
-> A terceira aba da janela frontal do Terminal ganha o estilo Homebrew!
Se você deseja modificar as janelas de fundo, substitua "janela frontal" por uma expressão entre parênteses, como logo após "tab". Se você sempre quiser modificar a "guia atual" selecionada, use selected tab
em vez de tab (item 1 of argv as number)
.
Adicione o seguinte ao seu .bash_profile
se a primeira solução for muito trabalho manual para você:
PROMPT_COMMAND='osascript "/path/to/Name.scpt"'
Agora ele é executado antes de cada prompt (único problema: não depois de iniciar algo, ou seja ssh
. Mas este tópico não é sobre truques sofisticados do bash. Este é apenas um ponteiro.)
Responder2
Seus scripts podem usar o tput
comando para definir cores de maneira portátil. Experimente o script a seguir e você verá o terminal claro com um fundo ciano escuro com algum texto em ciano brilhante.
#!/bin/bash
tput setab 6
tput clear
tput setaf 14
echo Hello World
Você pode ver mais informações sobre isso emman 5 terminfo
na seção chamada "Manipulação de cores".
Você pode fazer as mesmas coisas repetindo as sequências de escape que seu terminal reconhece diretamente. Será mais rápido, mas pode não funcionar usando outro programa de terminal. Muitos deles reconhecem sequências xterm e aqui está como seria o script acima usando-as.
#!/bin/bash
printf "\033[48;5;6m" # or "\033[46m"
printf "\033[H\033[2J" # your system's clear command does something similar
printf "\033[38;5;14m" # or "\033[96m"
echo Hello World
Há mais informações sobre sequências de controle xtermaqui.
Responder3
Você pode usar o applescript para dar a cada novo terminal um tema aleatório.
Edite o seu .bash_profile
e adicione este comando
osascript -e "tell application \"Terminal\" to set current settings of front window to some settings set"
Se você obtiver o mesmo terminal de tema aleatório, poderá acessá-lo ⌘I
e configurá-lo manualmente.
Isso é mais útil se você tiver muitos temas de terminal com aparência diferente. Existem muitos sites para isso, se você olhar ao redor.
Responder4
Este AppleScript funciona para mim no OS X 14.3 (e as outras respostas não).
tell application "Terminal"
repeat with i in windows
try
set current settings of tabs in i to settings set "Solarized Dark"
end try
end repeat
end tell
O aplicativo Terminal parece ter mudado a forma como expõe suas guias e janelas no OS X 14.3, para que você obtenha erros de maneira confiável ao iterar pelas guias de algumas de suas janelas. Mas estas não parecem ser janelas reais, então você pode simplesmente ignorá-las (o que eu faço com o try ... end try
bloco).
Eu costumo incorporar pequenos scripts como este em meus scripts de shell da seguinte forma:
osascript -e "tell application \"Terminal\"
repeat with i in windows
try
set current settings of tabs in i to settings set \"Solarized Dark\"
end try
end repeat
end tell"
Eu pessoalmente uso isso para alternar automaticamente entre temas claros e escuros em meu terminal (só preciso abrir uma nova guia do terminal ou executar minha color_mode
função). Você pode ver meu código completo para fazer issono meu repositório dotfiles.