Comando OS X Terminal para alterar temas de cores

Comando OS X Terminal para alterar temas de cores

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.scptsempre 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 tabem vez de tab (item 1 of argv as number).


Adicione o seguinte ao seu .bash_profilese 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 tputcomando 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 terminfona 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_profilee 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 ⌘Ie 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 trybloco).

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_modefunção). Você pode ver meu código completo para fazer issono meu repositório dotfiles.

informação relacionada