tmux Salida de 256 colores en terminal de 256 colores, salida de 8 colores en terminal de 8 colores

tmux Salida de 256 colores en terminal de 256 colores, salida de 8 colores en terminal de 8 colores

Me gustaría tmuxseleccionar automáticamente el modo de 256 colores, es decir, tener una variable de entorno

TERM=tmux-256color

adentro tmuxcuando la variable de entorno

TERM=xterm-256color

se establecióafuera.

Comportamiento predeterminado

Emulador de terminal de 256 colores

El comportamiento actual es tmuxelegir el modo de 8 colores en cualquier caso: utilice un emulador de terminal que admita 256 colores, es decir, Gnome Terminal o xterm, y asegúrese de que admita 256 colores.

echo $TERM; tput colors
# xterm-256colors
# 256

entonces empezar tmux. Por defecto tmuxcambiará a 8 colores:

echo $TERM; tput colors
# screen
# 8

Emulador de terminal de 8 colores

Si en lugar de eso cambias a un terminal de 8 colores, es decir, si cambias a /dev/tty2presionando Ctrl+Alt+F2, obtendrás

echo $TERM; tput colors
# linux
# 8

y dentro tmuxde lo mismo de siempre

echo $TERM; tput colors
# screen
# 8

Modo forzado de 256 colores

Puedo forzar tmuxa elegir el modo de 256 colores.añadiendo lo siguiente a~/.tmux.conf

set -s default-terminal "tmux-256color"

Sin embargo, esto también se aplica si elemulador de terminal exteriorPara empezar, no admitía 256 colores. Esto no es lo que quiero.

Modo adaptativo de 256 colores

Hayun problemay unPreguntas más frecuentesen GitHub ese estado establece uno de (las personas informan parámetros contradictorios)

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"

Debería tmuxseleccionar el modo de color del terminal, pero ninguno funciona en mi instalación (tmux 3.0 en Arch).

¿Existe una forma definitiva de permitir tmuxseleccionar 8 o 256 colores, dependiendo de lo que admita el emulador de terminal actual?

Respuesta1

En realidad, esto no es algo que tmux pueda hacer completamente por usted mismo porque no puede cambiar TERM en programas que ya se están ejecutando, por ejemplo, si se desconecta de un terminal con xterm-256color y lo vuelve a conectar a un terminal con xterm.

Sin embargo, puedes hacerlo tú mismo. El TERM del cliente está disponible con el formato client_termname. Entonces puedes poner algo como esto en tu PS1 o .profile o lo que sea:

if [ -n "$TMUX" ]; then
    T=$(tmux display -p '#{client_termname}')
    case "$T" in
    *-256color)
         export TERM=tmux-256color
         ;;
    *)
         export TERM=tmux
         ;;
    esac
fi

Obviamente, esto será predeterminado en tmux si crea paneles en una sesión no adjunta (client_termname estará vacío), o en el TERM del cliente utilizado más recientemente si tiene una sesión adjunta a varios clientes.

Si no desea hacerlo en su shell de esta manera, puede usar el enlace adjunto al cliente para cambiar el terminal predeterminado, pero esto solo se aplicará a los paneles nuevos, no a los existentes.

Otra opción sería ejecutar tmux-256color todo el tiempo y dejar que tmux traduzca el color hacia abajo cuando el terminal externo no pueda reproducir 256 colores.

Todo el contenido de las preguntas frecuentes sobre Tc trata sobre el color RGB (color verdadero), no sobre lo que estás preguntando.

información relacionada