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

18

Citando a página man tmux :

A variável de ambiente TERM deve ser configurada para “screen” para todos os programas rodando dentro do tmux. Novas janelas terão automaticamente “TERM = tela” adicionada ao ambiente, mas é preciso tomar cuidado para não redefini-la nos arquivos de inicialização do shell.

É isso porque tmux session pode ser anexada a qualquer terminal (por exemplo, remoto), screen é o menor denominador comum? Se eu conheço meu terminal, posso forçá-lo sem resultados inesperados ou alguns recursos não suportados seriam interrompidos (como a rolagem)?

    
por sevo 01.11.2015 / 21:02

2 respostas

12

Ele faz isso para aproveitar a descrição do terminal instalado anteriormente para a tela GNU.

Ambos tmux e a tela fornecem aos aplicativos (mais ou menos) as descrições de terminal "mesmas" para simplificar a conexão de diferentes terminais. Os programas tmux e screen devem lidar com as diferenças entre o internal (TERM = screen) e o external (xterm, linux, etc). Portanto, a descrição do terminal screen 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 de "destaque" (que tecnicamente não é um recurso de terminal específico, mas sim uma abstração para a conveniência de aplicativos de curses). O tmux não possui essa limitação. Mas o TERM = tmux melhorado não é necessariamente "em qualquer lugar".
  • A tela do GNU tem um recurso para usar descrições de terminais híbridos. Dado o termo externo = xterm e a existência de "screen.xterm", ele escolherá aquele para o valor interno de TERM. (veja, por exemplo, o banco de dados do terminal ). O tmux não faz isso.
por 01.11.2015 / 21:14
5

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

'default-terminal' is now a session option. Furthermore, if this is set to 'screen-*' then emulate what screen does. If italics are wanted, this can be set to 'tmux' but this is still new and not necessarily supported on all platforms with older ncurses installs

    
por 01.11.2015 / 21:17

Tags