Recentemente, mudei de rxvt-unicode para st . Isso significa que eu fui de $TERM=rxvt-unicode-256color
para $TERM=st-256color
.
Estou satisfeito com a mudança e quero continuar a usar o st
. No entanto, notei que certos aplicativos de terminal estão insatisfeitos com o novo $TERM
valor. Por exemplo, emacs
não será carregado st
com suporte a cores, a menos que eu o "engane" para pensar que $TERM
é algo reconhecível como $TERM=xterm-256color
.
Minha pergunta é: qual é o risco de simplesmente definir $TERM=xterm-256color
? Parece-me que a parte importante de $TERM=*-256color
é a 256color
parte e o valor de *
parece menos importante.
A parte importante do valor de
TERM
é que ele corresponda a uma entrada nos bancos de dados terminfo ou termcap e que essa entrada descreva corretamente seu terminal.Você não pode razoavelmente dizer aos softwares que seu terminal é XTerm, quando descaradamente não é. E é um erro absoluto pensar que outros emuladores de terminal usam todas as mesmas sequências de controle de entrada/saída que o XTerm ou fornecem todas as mesmas funcionalidades.
-256color
é simplesmente uma parte de um nome , não tem significado inerente para a maioria dos softwares (embora alguns poucos procurem sufixos de recursos). Ele (principalmente) só tem significado para os seres humanos, pois são os seres humanos que agrupam as entradas nos bancos de dados terminfo/termcap em famílias por seus nomes. Os sufixos de recurso em nomes de tipo de terminal são primários para humanos, não para softwares.O que tem significado para os softwares é se o registro no banco de dados com esse nome diz que o terminal suporta 256 cores e fornece as sequências de controle para usá-las nesse tipo de terminal.
Dito isto, o emacs faz suas próprias coisas e não depende simplesmente do banco de dados terminfo/termcap. Por exemplo, sabe-se que sua
frame-set-background-mode
função corresponde ao valor deTERM
against^\\(xterm\\|\\rxvt\\|dtterm\\|eterm\\)
, o que provavelmente está errado hoje em dia. A abordagem correta aqui é corrigir o emacs para que, finalmente, ele reconheça corretamente ost-256color
tipo de terminal (eputty-256color
,vte-256color
, e outros).Leitura adicional