Mini Projeto: Altere a cor do terminal com base na hora do dia
-
23-09-2019 - |
Pergunta
Boa noite,
Eu sou muito novo no Unix, então talvez este mini projeto seja muito ambicioso. Esperando que alguém pudesse apontar na direção certa.
Trabalhando em um cubículo e não consigo ver como é a luz lá fora. Em geral, uso um terminal amarelo pela manhã (ensolarado) e um preto/verde depois das 3:00 (noite).
O que eu gostaria de fazer (em parte apenas para praticar minha festa). É escrever um script que, às 3:00, mude a cor de todos os meus terminais. Se isso funcionar, talvez eu os faça mudar a cada hora ou algo assim. Isso seria seguro? Isso é possível?
Aqui estão algumas das minhas especificações: Solaris 10 Bash Shell Gnome
Estou olhando para isso agora:Alterar o tema do terminal GNOME programaticamente
Solução
Se eu estivesse fazendo isso, eu começaria com Prompt_Command. O Bash executará esse script antes de exibir um prompt.
Você tem algumas opções. Você pode ter um script dentro de Prompt_Command:
PROMPT_COMMAND='if [ is_morning ]; then echo "MORNING_COLORS'; else echo "EVENING_COLORS"; fi
Ou você pode ter Prompt_Command executar um comando externo (que também pode ser um script bash ou você pode usar um idioma diferente, se quisesse) fazer todo o trabalho lá:
PROMPT_COMMAND=/path/to/setcolor_timeofday
O único buraco que vejo é que, se você tiver um programa em execução quando o tempo mudar (por exemplo, usando tail -f
Para assistir a um arquivo), o plano de fundo não mudará até que você retorne ao prompt do bash.
Outras dicas
Modificar o primeiro plano da concha e as cores de fundo via PS1 em Bash será a mais fácil, como apontado por outros aqui. A abordagem de R Samuel Klatchko com Prompt_Command é provavelmente a mais versátil. No entanto, isso tem desvantagens. O Bash só pode usar as cores de fundo 'monótona' e suas cores de primeiro plano/plano de fundo podem ser substituídas por qualquer aplicativo. A modificação do seu tema do terminal GNOME programaticamente, especialmente em tempo real, será muito mais difícil, mas produzirá resultados muito mais bonitos.
Usar Cron, é o agendador de empregos do Unix. E defina -o para executar um comando que muda .bashrc como na pergunta que você vinculou. O problema é que ele funcionará apenas para novos terminais, se você tiver aberto, não os alterará.