Los colores de TMUX y del terminal no son los mismos localmente y a través de ssh

Los colores de TMUX y del terminal no son los mismos localmente y a través de ssh

Tengo un montón de archivos dot que me permiten tener un tema bonito en mi terminal y tmux en mi host local. Yo uso kitty, fish y tmux. Para definir correctamente los colores y tener una coherencia global, utilizo los siguientes archivos:

  • .Xrecursos
  • gatito.conf
  • pescado_prompt.pescado
  • .tmux.conf

En mi servidor local, todo parece muy limpio: ingrese la descripción de la imagen aquí

También tengo un servidor remoto, que ejecuta el mismo arch + fish + tmux y usa exactamente los mismos archivos de puntos. Sin embargo, cuando se realiza SSH en el servidor, todo se ve completamente diferente:

ingrese la descripción de la imagen aquí

Tengo Google disponible y hay muchos tutoriales que te dicen que agregues un montón de configuraciones extrañas, pero ninguna explica realmente lo que realmente está sucediendo bajo el capó (además, como puedes ver, ninguna funcionó).

Esto es lo que intenté hacer para que funcionara (sin entender realmente por qué):

  • Agregado a tmux.conf:
set^[[3m -g default-terminal "xterm-kitty"
set-option^[[3m -ga terminal-overrides ",xterm-kitty*:Tc"
  • Se agregó el archivo terminfo xterm-kitty
  • Cambie la TERMvariable env a xterm-kitty al iniciar sesión

¡Me encantaría tener algunos recursos que indiquen cómo funciona todo esto! ¡Gracias!

Editar :

Para mayor claridad, aquí están los valores de TERMtengo:

  • En el servidor local:xterm-kitty
  • En el host local dentro de tmux:xterm-256color
  • En el host remoto directamente después de abrir ssh:xterm-kitty
  • En host remoto en tmux:xterm-256color

Todos los archivos se sincronizan mediante un repositorio de git, todas las versiones son idénticas. He transferido el mismo terminfoarchivo relacionado xterm-kittyen ambos hosts. Además, utilizandoestescript, puedo ver que todos los colores se muestran correctamente y son idénticos en ambos hosts.

También noté que iniciar sesión en la máquina remota sin tmux produce otra combinación de colores (el mismo archivo de configuración de pescado se usa en todas partes):

ingrese la descripción de la imagen aquí

Respuesta1

default-terminalestablece el valor predeterminado TERMdentro de tmux. No configure esto en xterm-kitty: tmux no es xterm ni kitty. Configúrelo tmux-256colorsi existe en su computadora (marque infocmp tmux-256color), de lo contrario screen-256color.

De manera similar, no establezca TERMen el shell perfiles iguales para todos los terminales.

La terminal-overrideslínea que tiene le dice a tmux que cuando se ve TERMconfigurado xterm-kittysignifica que el terminal admite color verdadero (RGB) (por lo tanto Tc).

TERMinside tmux le dice a los programas dentro de tmux con qué están hablando (tmux). TERMfuera de tmux le dice a tmux con qué está hablando (en este caso, kitty).

Si funciona localmente pero no a través de ssh, lo más probable es que:

  • TERMTmux exterior diferente . ¿Está seguro de que echo $TERMmuestra lo mismo inmediatamente antes de iniciar tmux tanto en su computadora local como a través de ssh?

  • Las configuraciones de tmux en realidad no son las mismas, ¿estás seguro de que lo son? Si lo necesitas terminal-overridesen un lugar lo necesitarás en el otro, si no, no lo necesitarás.

  • ¿Estás seguro de xterm-kittyque existe en ambas computadoras y es el mismo? Controlar infocmp xterm-kitty.

  • Diferentes versiones de tmux. ¿Estás seguro de que son iguales? Controlar tmux -V.

Respuesta2

Si está usando tmux en la máquina local y luego ejecuta ssh en la máquina remota, no hay forma de que la sesión remota pueda saber que puede usar colores RGB en lugar de (o además de) indexados (256 -colores). Esto se debe a que la anulación de tmux "Tc" no es visible para la sesión remota.

Puede solucionar este problema modificando la descripción del terminal que corresponde alterminal predeterminadoconfiguración de tmux, por ejemplo, agregando cualquier configuración que use conanulaciones de terminalesal archivo de texto para la descripción del terminal, y usandoticpara compilarlo (en cada máquina). Por ejemplo (si elterminal predeterminadoestmux):

infocmp -x tmux >foo
printf '\tTc,\n' >>foo
tic -x foo

gatito tiene unPreguntas más frecuentes, pero pasa por alto "-x" parainfocmp.

Quedan un par de puntos restantes a considerar:

  • Copiar los archivos binarios creados porticno es confiable (por más de una razón).

  • Si la misma descripción del terminal está disponible en el lado remoto, obtendrá un comportamiento (más) consistente, asumiendo que la aplicación remota usa la descripción del terminal.contenidoen lugar delnombrede la descripción del terminal.

Respuesta3

¡Logré arreglarlo! Fue una combinación de todas las respuestas dadas, con una variable adicional importante.

Pasos requeridos:

infocmp -x tmux-256color >foo
printf '\tTc,\n' >>foo
tic -x foo
  • Agréguelo set -g fish_term24bit 1a mi config.fish para obligar a los peces a usar el modo trucolor.

información relacionada