![Saída tmux de 256 cores no terminal de 256 cores, saída de 8 cores no terminal de 8 cores](https://rvso.com/image/164713/Sa%C3%ADda%20tmux%20de%20256%20cores%20no%20terminal%20de%20256%20cores%2C%20sa%C3%ADda%20de%208%20cores%20no%20terminal%20de%208%20cores.png)
Eu gostaria de tmux
escolher automaticamente o modo de 256 cores, ou seja, ter uma variável de ambiente
TERM=tmux-256color
dentro tmux
quando a variável de ambiente
TERM=xterm-256color
foi configuradofora.
Comportamento padrão
Emulador de terminal de 256 cores
O comportamento atual é tmux
escolher o modo de 8 cores em qualquer caso: use um emulador de terminal que suporte 256 cores, ou seja, Gnome Terminal ou xterm, e certifique-se de que ele suporta 256 cores
echo $TERM; tput colors
# xterm-256colors
# 256
então comece tmux
. Por padrão tmux
mudará para 8 cores:
echo $TERM; tput colors
# screen
# 8
Emulador de terminal de 8 cores
Se, em vez disso, você mudar para um terminal de 8 cores, ou seja, mudando para /dev/tty2
pressionando Ctrl+Alt+F2, você obterá
echo $TERM; tput colors
# linux
# 8
e dentro tmux
do mesmo velho
echo $TERM; tput colors
# screen
# 8
Modo forçado de 256 cores
Posso forçar tmux
a escolha do modo de 256 coresadicionando o seguinte a~/.tmux.conf
set -s default-terminal "tmux-256color"
Contudo, isto também se aplica se oemulador de terminal externonão suportava 256 cores para começar. Não é isso que eu quero.
Modo adaptável de 256 cores
Háum problemae umPerguntas frequentesno GitHub que afirma definir um de (as pessoas estão relatando parâmetros contraditórios)
set -ga terminal-overrides ",xterm-256color*:Tc"
set -sa terminal-overrides ",xterm-256color*:Tc"
set -ga terminal-overrides ",*256col*:Tc"
set -sa terminal-overrides ",*256col*:Tc"
devo tmux
escolher o modo de cores do terminal, mas nenhum deles funciona na minha instalação (tmux 3.0 no Arch).
Existe uma maneira definitiva de escolher tmux
8 ou 256 cores, dependendo do que o emulador de terminal atual suporta?
Responder1
Isso não é algo que o tmux possa fazer inteiramente por você, porque não pode alterar TERM em programas que já estão em execução, por exemplo, se você desconectar de um terminal com xterm-256color e reconectar a um terminal com xterm.
Você pode fazer isso sozinho, no entanto. O TERM do cliente está disponível no formato client_termname. Então você pode colocar algo assim no seu PS1 ou .profile ou qualquer outra coisa:
if [ -n "$TMUX" ]; then
T=$(tmux display -p '#{client_termname}')
case "$T" in
*-256color)
export TERM=tmux-256color
;;
*)
export TERM=tmux
;;
esac
fi
Obviamente, o padrão será tmux se você criar painéis em uma sessão não anexada (client_termname estará vazio) ou o TERM do cliente usado mais recentemente se você tiver uma sessão anexada a vários clientes.
Se você não quiser fazer isso em seu shell assim, você pode usar o gancho anexado ao cliente para alterar o terminal padrão - mas isso só se aplicará a novos painéis, não aos existentes.
Outra opção seria rodar com tmux-256color o tempo todo, e deixar o tmux traduzir a cor para baixo quando o terminal externo não puder fazer 256 cores.
Todo o conteúdo do FAQ sobre Tc é sobre cores RGB (cor verdadeira), não sobre o que você está perguntando.