Alterar a cor do PS1 com base na cor do plano de fundo?

12

Aprendi que posso mudar o formato do PS1, principalmente a cor da corda. Então, é possível alterar a cor com base na cor de fundo do shell? Ou, como posso detectar a cor de fundo do shell?

prosseek
fonte

Respostas:

4

Até onde eu sei, não há como consultar as cores do emulador de terminal. Você pode alterá-los com \e]4;NUMBER;#RRGGBB\a(onde NUMBERé o número da cor do terminal (0–7 para cores claras, 8–15 para cores brilhantes) e #RRGGBBé um valor hexadecimal da cor RGB) se o seu terminal suportar essa sequência (referência: ctlseqs ).

Mecanismos poderosos de esquema de cores geralmente possuem uma configuração de plano de fundo escuro ou claro que você deve fornecer para indicar se possui um plano de fundo preto ou cinza escuro ou um plano de fundo branco ou cinza claro.

Quando você está configurando para si mesmo, geralmente basta decidir que você sempre usará a mesma cor de fundo.

Gilles 'SO- parar de ser mau'
fonte
Você pode obter o número de cores suportado na entrada termcap observando "cores de tput", mas em muitos casos isso indica um número baixo, como 8, porque o suporte termcap para terminais de 256 cores é realmente fraco.
12Re
1
@slacy Para> 99% dos terminais de hoje, os dados termcap / terminfo são irrelevantes: são todas pequenas variações do xterm, e os detalhes que diferem, como o número de cores, não são refletidos no valor TERMe, portanto, não podem ser obtido do meio ambiente.
Gilles 'SO- parar de ser mau'
4

Se você estiver usando o gnome-terminal, poderá obter a cor de fundo de qualquer perfil, neste caso, o perfil Padrão, como

   $ gconftool-2 --get /apps/gnome-terminal/profiles/Default/background_color
   #E12FE12FC74D

então você pode decidir como definir seu prompt adequadamente.

Diego Torres Milano
fonte
2

Com o xterm, você pode consultar a cor do plano de fundo com a \e]11;?\asequência de escape. Você precisa ler a resposta do terminal. Há um xtermcontrolcomando que faz isso para você:

~$ xtermcontrol --get-bg
rgb:b0b0/b0b0/b0b0
Stéphane Chazelas
fonte
O mesmo funciona no gnome-terminal e provavelmente em outros emuladores de terminal (mas definitivamente nem todos).
precisa saber é o seguinte