GNU/Linux >> Tutoriales Linux >  >> Linux

¿Tmux, Término y soporte de 256 colores?

Introducción

Mi pregunta surge de la necesidad de entender por qué Tengo ahora (después de varias pruebas) Terminal y tmux admite 256 colores y tput colors diciéndome que solo hay 8 de ellos.

Antecedentes

Comencemos desde el principio.

Estoy usando un Ubuntu caja, Guake , tmux , Vim y me encanta el tema Solarizado . Se veían bastante horribles, así que decidí habilitar la compatibilidad con 256 colores y jugar un poco.

Veamos qué pasa con mi Terminal . tput colors dice que hay 8 colores. Yo personalmente los configuro en morado, a la izquierda y por supuesto a la derecha tenemos 2 tonos diferentes de azul. $TERM dice xterm . (Para tener las ls coloreadas Yo eval esto en mi .bashrc .)

Vim también se ve bien, a pesar de que lo llamo con el 256 bandera en un entorno donde 256 colores no compatible.

set t_Co=256
let g:solarized_termcolors=256
colorscheme solarized

El único que se queja del espacio de color reducido es tmux . Llamando a tmux proporciona los resultados esperados "incorrectos".

Pero llamando a tmux con el -2 flag hace que todo funcione bien, mágicamente .

Ahora lo único que entiendo es que -2 es equivalente a export TERM=screen-256color (fuente).

Guake se comporta de manera análoga a Terminal y ambos responden xterm a la pregunta echo $TERM .

Pregunta

Básicamente, ¿alguien entiende por qué todo funciona incluso si no debería?

  • ¿Soy sádico porque me quejo de por qué funcionan las cosas? Tal vez.
  • ¿Hay una mejor razón? Claro:me gustaría arreglar la apariencia de otras cajas de Ubuntu en mi oficina y me gustaría entender por qué las cosas funcionan o no funcionan.

Experimentos adicionales

Ejecutando este script (ligeramente modificado) en mi xterm proporciona el siguiente resultado:256 colores, pero solo 16 se muestran correctamente.

Luego, cambiando el perfil del terminal, también cambian estos 16 colores.

Más pruebas están siguiendo.

De izquierda a derecha, de arriba a abajo, tenemos Solarizado tema de color, dircolor ansi-dark y 256dark , luego por defecto (Tango ) esquema de color, dircolor ansi-dark y 256dark .

Observación :en teoría el dircolor ansi-dark en Solarizado el esquema de color debe haber coincidido estrechamente con el dircolor 256dark . Esto no está sucediendo claramente para los archivos enumerados específicos. En cambio, esto sucede bastante cuando en el directorio de trabajo hay carpetas , archivos de texto y enlaces simbólicos . Conclusión :no se ha prestado mucha atención al codificar el 256dark colores.

Conclusiones preliminares

xterm admite 256 colores, a pesar de lo que tput colors dice. Los programas pueden consultar el ansi paleta (personalizable por el usuario) o definir sus colores, eligiendo entre un total de 256 colores.

Respuesta aceptada:

Hay información sobre la compatibilidad con 256 colores en las preguntas frecuentes de tmux.

Relacionado:¿Lista de shells que admiten la palabra clave `local` para definir variables locales?

Desafortunadamente, detectar la cantidad de colores que admite el terminal no es sencillo, por razones históricas. Consulte Comprobar cuántos colores admite mi emulador de terminal para obtener una explicación. Esto significa que

  • tmux no puede determinar de forma fiable si el terminal admite más de 8 colores;
  • tmux no puede comunicar de manera confiable a la aplicación que admite más de 8 colores.

Cuando estás en tmux, la terminal con la que estás interactuando es tmux. No es compatible con todas las secuencias de control de xterm. En particular, no es compatible con OSC 4 ; … secuencia de control para consultar o establecer valores de color. Debe usar eso mientras ejecuta directamente en xterm, fuera de tmux.

Si ejecuta tmux -2 , entonces tmux comienza con compatibilidad con 256 colores, incluso si no cree que su terminal admita 256 colores (que es bastante común).

De forma predeterminada, tmux se anuncia a sí mismo como screen sin compatibilidad con 256 colores. Puede cambiar el valor de TERM en .tmux.conf para indicar compatibilidad con 256 colores:

set -g default-terminal "screen-256color"

Puede usar TERM=xterm-256color o TERM=screen-256color en Ubuntu. Estos valores solo causarán problemas si inicia sesión en una máquina remota que no tiene una entrada termcap/terminfo para estos nombres. Puede copiar las entradas a su directorio de inicio en la máquina remota; esto funciona con la mayoría de las implementaciones modernas de terminfo.

# From the Ubuntu machine to a machine that doesn't have *-256color terminfo entries
ssh somewhere.example.com mkdir -p .terminfo/s .terminfo/x
scp -p /lib/terminfo/s/screen-256color somewhere.example.com:.terminfo/s/
scp -p /lib/terminfo/x/xterm-256color somewhere.example.com:.terminfo/x/

Linux
  1. Compartir sesiones de terminal de Linux con Tmux y Screen

  2. RedHat y SUSE anunciaron la retirada del soporte para OpenLDAP

  3. ¿Cómo compilar e instalar Python con soporte OpenSSL?

  4. ¿Conseguir que 256 colores funcionen en Tmux?

  5. ¿Qué emuladores de terminal admiten el modo de control Tmux?

Personalizando mi terminal Linux con tmux y Git

Cómo instalar y usar Tmux (terminal multiplexor) en Linux

Cómo agregar compatibilidad con PHP-FPM en el servidor web Apache y Nginx en Ubuntu 18.04

Cómo instalar y usar Tmux (terminal multiplexor) en el sistema Linux

¿Hay alguna manera de hacer que Nano admita el autocompletado y el cierre automático de corchetes?

grep para el término y excluir otro término