Estou usando o alacritty 0.11.0 (8dbaa0bb) no Arch.
TERM
o tipo padrão é alacritty
, que funciona bem (truecolors etc) para tudo, exceto emacs de terminal. Em um terminal, o emacs não mostra truecolors.
No entanto, se eu export TERM=alacritty-direct
então tudo, incluindo o emacs, funcionar bem AFAICT.
Qual é a finalidade alacritty-direct
e quando deve ser usado?
Atualmente tenho isso em meu.zshrc
[[ "${TERM}" == "alacritty" ]] && export TERM=alacritty-direct
O objetivo
$TERM
é informar os programas sobre o que o terminal supostamente suporta. As capacidades reais do terminal não mudam (ele suporta cor direta em todos os momentos), mas muitos programas como o Emacs irão olhar para $TERM e consultar o banco de dados 'terminfo' associado para determinar se eles devem usar o modo de cor direta ou não .Portanto, você deve definir TERM como "alacritty-direct" quando desejar que esses programas sejam capazes de detectar o modo de cor direta.
(Idealmente, seu próprio terminal deve definir TERM com o valor desejado, para que esteja em vigor mesmo quando o terminal for solicitado a iniciar diretamente programas não shell, mas se você usar o terminal apenas da maneira "normal", então sua entrada ~/.zshrc provavelmente é boa o suficiente.)
Você pode usar
infocmp [-L] <name>
para imprimir a entrada do banco de dados terminfo para um terminal específico ou especificar dois nomes para que o infocmp os compare. Você verá que as duas entradas para alacritty diferem principalmente nas propriedadessetaf
esetab
('set_a_background' e 'set_a_foreground').Claro, existem muitos programas que não usam terminfo, mas fazem suposições codificadas com base em $TERM (por exemplo, eles podem ter incorporado suposições de que TERM=alacritty já indica suporte de cores diretas) ou mesmo aqueles que geram sequências de cores diretas incondicionalmente , caso em que não haverá efeito visível entre os valores 'alacritty' e 'alacritty-direct' – novamente, o valor $TERM não faz o terminal perder o suporte.
Por exemplo, no Vim é comum fazê-
set termguicolors
lo usar o modo direct-color independentemente do que $TERM indica, ou definir diretamente váriast_*
variáveis (correspondentes aos parâmetros 'termcap' - um antecessor do terminfo ainda encontrado em sistemas BSD).