Recentemente, notei algo estranho. Se eu executar o comando sudo journalctl -f -u ModemManager
em rxvt-unicode
(esquerda) e xterm
(direita), rxvt-unicode
o amarelo não aparece quando a mensagem é de aviso.
Ambos os terminais possuem TERM=xterm-256color
e notei esse problema somente no amarelo, pois o vermelho aparece nos dois terminais.
Tentei diferentes sequências de escape, mas não consegui detectar o problema.
Parece que é um problema que apareceu em versões mais recentes,
systemd
com esse commit incluído pela primeira vez na versão 257.journalctl
codifica as sequências de escape para definir a cor em vez de consultar o banco de dados terminfo e nesse commit, eles mudaram:Que corresponde às sequências de escape retornadas pelo terminfo para xterm e rxvt para definir a cor de primeiro plano como 185:
(exceto que também fica em negrito com
1
depois de redefinir todos os atributos SGR com0
) para:(observe também o
#define ANSI_HIGHLIGHT_YELLOW ANSI_HIGHLIGHT_KHAKI3 /* Replacement yellow that is more legible */
abaixo).Mas:
Gera um amarelado
X
emxterm
(ou terminais baseados em vte, konsole, kitty ou Eterm pelo menos), mas a partir da versão 9.31, nãorxvt-unicode
.De acordo com a página do xterm sobre o problema , usar dois pontos seria a maneira correta de acordo com a ITU T.416 (ISO-8613-6) (que você pode obter por CHF 199; poucos desenvolvedores de terminais de código aberto teriam visto uma cópia), mas o xterm foi usado inicialmente
;
e é provavelmente por isso que todos os outros emuladores de terminal também o suportam, e alguns como o rxvt ainda não suportam dois pontos.O vermelho não é afetado porque permanece:
Que não usa a paleta de 256 cores.
Como solução alternativa, você pode fazer:
Em seguida
journalctl
, mudará para o amarelo de 16 cores (usando\e[0;1;33m
sequência), que, se seu terminal estiver configurado corretamente, provavelmente será ainda mais legível do que a cor KAKI3 e, pelo menos, deve ser configurável na maioria dos emuladores de terminal, incluindoxterm
erxvt-unicode
.