Como alterar a cor de fundo dos aplicativos curses?

4

Eu odeio esse plano de fundo azul que está em toda parte em aplicativos ncurses como: irssi, mc, tig, ... eu quero mudar essa cor, como posso fazer isso?

Eu sei que o comando midnight tem temas, mas e as configurações globais para todos os programas CLI? Descobri que há setterm no Linux e vidcontrol no FreeBSD, mas vidcontrol não funciona para mim, e acho que não é isso que eu preciso porque é para o material VESA. Estou trabalhando aqui com o ssh.

    
por holms 03.08.2012 / 22:49

2 respostas

7

Alguns terminais como o xterm permitem redefinir as cores através de arquivos de recursos ou dinamicamente, e se forem expostos corretamente na entrada terminfo para $ TERM, você pode fazer isso com:

tput initc 4 1000 0 0

Altere a cor ANSI 4 (normalmente azul) para RGB (1000, 0 0), que é vermelho brilhante.

Se o terminal não suportar a redefinição de cores (consulte infocmp -1 | grep initc ), você também pode, para aplicativos que usam terminfo, induzi-los a enviar sequências de escape diferentes para solicitar a cor 4 (azul).

infocmp -x > terminal.info

Edite terminal.info , substitua o nome do terminal por algo como "myterm" e edite a propriedade "setab" (defina o plano de fundo ANSI).

Em vez de

setab=\E[4%p1%dm

Isto é:

tput setab 4

envia ^ [[44m, altere para:

setab=\E[4%?%p1%{4}%=%t1%e%p1%d%;m

O %? .... é um if-then-else para enviar "1" quando solicitado "4" e o outro solicitado.

Então

tput setab 4

enviará ^[[41m , (vermelho) e tput setab 5 enviará ^[[45m

Em seguida, compile com:

TERMINFO=$HOME/.terminfo tic -x terminal.info

e use-o como:

TERMINFO=$HOME/.terminfo TERM=myterm the-application-to-trick

Isso só funciona se o aplicativo usar o banco de dados terminfo para enviar sequências para o terminal.

    
por 25.08.2012 / 21:28
3

se você mudar sua variável TERM para um terminal que não suporta cores ANSI, você não verá mais nenhum fundo azul.

    
por 05.08.2012 / 12:48