Por que o tmux define a variável TERM para a tela?

19

Citando a tmuxpágina de manual:

A variável de ambiente TERM deve ser configurada como "screen" para todos os programas em execução no tmux. Novas janelas terão automaticamente “TERM = screen” adicionado ao ambiente, mas é preciso ter cuidado para não redefinir isso nos arquivos de inicialização do shell.

Isso ocorre porque a tmuxsessão pode ser conectada a qualquer terminal (por exemplo, remoto), screensendo o menor denominador comum? Se eu conhecer meu terminal, posso forçá-lo sem resultados inesperados ou alguns recursos não suportados serão interrompidos (como rolagem)?

sevo
fonte

Respostas:

13

Faz isso para tirar proveito da descrição do terminal instalado anteriormente para a tela GNU.

O tmux e o screen fornecem aos aplicativos (mais ou menos) as "mesmas" descrições dos terminais para simplificar a conexão de diferentes terminais. Os programas tmux e screen devem lidar com as diferenças entre o interno (TERM = screen) e o externo (xterm, linux, etc). Portanto, a screendescrição do terminal foi instalada "em todos os lugares" (geralmente por ncurses).

Existem algumas diferenças:

  • A tela GNU tem um problema muito antigo que representa o recurso "destaque" (que tecnicamente não é um recurso de terminal específico, mas uma abstração para a conveniência de aplicativos de maldições). O tmux não tem essa limitação. Mas o TERM = tmux aprimorado não é necessariamente "em toda parte".
  • A tela GNU possui um recurso para usar descrições de terminais híbridos. Dado o TERM externo = xterm e a existência de "screen.xterm", ele escolherá isso para o valor interno do TERM. (veja, por exemplo, o banco de dados do terminal ). O tmux não faz isso.
Thomas Dickey
fonte
5

A partir do tmux 2.1 , você pode usar o tmux terminfo :

'terminal padrão' agora é uma opção de sessão. Além disso, se estiver definido como 'screen- *', emule o que a tela faz. Se quiser itálico, isso pode ser definido como 'tmux', mas ainda é novo e não é necessariamente suportado em todas as plataformas com instalações mais antigas do ncurses

jasonwryan
fonte