Comando do OS X Terminal para alterar temas de cores

17

Existe um comando que pode ser usado para alterar o esquema de cores do Mac OS X Terminal? Eu gosto da ideia de poder mudar as cores dependendo dos scripts que eu corro. 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.

satur9nine
fonte
O que eu quero fazer é mudar a cor do plano de fundo do terminal, como se fosse alterada da mesma maneira que Terminal -> Preferences -> Settingsexceto se eu quiser fazer isso com um comando. Eu quero criar um script que será parecido com este: changeBackgroundTheme; ssh; changeBackgroundTheme. Isso ajudará a me lembrar em que janelas estão atualmente ssh.
sixtyfootersdude

Respostas:

18

Dependendo do que exatamente você deseja realizar, aqui estão algumas idéias no AppleScript usando seus estilos de terminal. Eles são mais robustos que tput, porque isso é redefinido por avisos coloridos. etc (pelo menos para mim).

Isso define todas as guias que executam o 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 colorir novamente suas conchas (é claro que você pode envolvê-lo como um shell script ou algo assim).

Se você deseja exibir todos os processos de longa execução de maneira 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-o assim:

osascript StyleTerm.scpt 3 Homebrew

-> Terceira aba da janela frontal do Terminal obtém o estilo Homebrew!

Se você deseja modificar as janelas de segundo plano, substitua "janela frontal" por uma expressão entre parênteses, como logo após "tab". Se você sempre deseja modificar a "guia atual" selecionada, use em selected tabvez de tab (item 1 of argv as number).


Adicione o seguinte ao seu .bash_profilese a primeira solução for muito 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 esse tópico não é sobre truques sofisticados de qualquer maneira. Isso é apenas um ponteiro.)

Daniel Beck
fonte
6

Seus scripts podem usar o tputcomando para definir cores de maneira portátil. Experimente o seguinte script e você verá o terminal limpo em um fundo ciano escuro com algum texto ciano brilhante.

#!/bin/bash
tput setab 6
tput clear
tput setaf 14
echo Hello World

Você pode ver mais informações sobre isso na man 5 terminfoseção chamada "Manuseio de cores".

Você pode fazer as mesmas coisas repetindo as seqüências de escape que o seu terminal reconhece diretamente. Será mais rápido, mas pode não funcionar com outro programa do terminal. Muitos deles reconhecem sequências xterm e eis como seria o script acima ao usá-las.

#!/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 seqüências de controle xterm aqui .

Pausado até novo aviso.
fonte
Isso parece ter algum efeito sobre a cor, mas a setaf parece não fazer nada por mim. O que eu realmente gostaria é algo para mudar o tema do terminal do Mac OS, como o waiwai sugere, mas de forma programática e sem usar a GUI.
satur9nine
Existe uma maneira de mudar o tema que está sendo usado de maneira semelhante Terminal -> Preferences -> Settings?
sixtyfootersdude
@sixtyfootersdude: Provavelmente existe uma maneira de fazer isso osascript, mas eu não estou familiarizado com isso.
Pausado até novo aviso.
1

Você pode usar o AppleScript para dar a cada novo terminal um tema aleatório.

Edite 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, sempre poderá clicar ⌘Ie configurá-lo manualmente.

Isso é mais útil se você obtiver vários temas terminais com aparência diferente. Existem muitos sites para isso, se você olhar em volta.

G_Gus
fonte
Gosto disso. Eu criei um alias a partir deste comando para poder mudar aleatoriamente para uma nova configuração manualmente.
WeakPointer 10/10