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:
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:
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
TERM
variable 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 TERM
tengo:
- 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 terminfo
archivo relacionado xterm-kitty
en 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):
Respuesta1
default-terminal
establece el valor predeterminado TERM
dentro de tmux. No configure esto en xterm-kitty
: tmux no es xterm ni kitty. Configúrelo tmux-256color
si existe en su computadora (marque infocmp tmux-256color
), de lo contrario screen-256color
.
De manera similar, no establezca TERM
en el shell perfiles iguales para todos los terminales.
La terminal-overrides
línea que tiene le dice a tmux que cuando se ve TERM
configurado xterm-kitty
significa que el terminal admite color verdadero (RGB) (por lo tanto Tc
).
TERM
inside tmux le dice a los programas dentro de tmux con qué están hablando (tmux). TERM
fuera 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:
TERM
Tmux exterior diferente . ¿Está seguro de queecho $TERM
muestra 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-overrides
en un lugar lo necesitarás en el otro, si no, no lo necesitarás.¿Estás seguro de
xterm-kitty
que existe en ambas computadoras y es el mismo? Controlarinfocmp 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 usandotic
para 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 por
tic
no 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:
- Garantizar que las
TERM
variables utilizadas sean las mismas en cada host y dentro de cada tmux (terminé usándolasxterm-kitty
en los hosts directamente ytlux-256color
dentro de las sesiones de TMUX).Gracias a Nicholas Marriott.. - agregar
Tc;
al infocmp de los terminales que uso, usandoeste fragmento proporcionado por Thomas Dickey:
infocmp -x tmux-256color >foo
printf '\tTc,\n' >>foo
tic -x foo
- Agréguelo
set -g fish_term24bit 1
a mi config.fish para obligar a los peces a usar el modo trucolor.