Comprobando cuántos colores admite mi emulador de terminal


Respuestas:


20

El valor de $TERMno proporciona mucha información sobre la cantidad de colores admitidos. Muchos terminales se anuncian como xtermy pueden admitir cualquier cantidad de colores (2, 8, 16, 88 y 256 son valores comunes).

Puede consultar el valor de cada color con la OSC 4 ; c ; ? BEL secuencia de control . Si cse admite el número de color , y si el terminal comprende esta secuencia de control, el terminal responderá con el valor del color. Si el número de color no es compatible o si el terminal no comprende esta secuencia de control, el terminal no responde nada. Aquí hay un fragmento de bash / zsh para consultar si el color 42 es compatible (redirigir a / desde la terminal si es necesario):

printf '\e]4;%d;?\a' 42
if read -d $'\a' -s -t 1; then … # color 42 is supported

Entre los terminales populares, xterm y los terminales basados ​​en la biblioteca VTE (Gnome-terminal, Terminator, Xfce4-terminal, ...) admiten esta secuencia de control; rxvt, konsole, screen y tmux no.

No sé de una manera más directa.


Gracias @Gilles. Esto se ve genial. ¿Puedo preguntar qué read -d $'\a' -s -t 1hace?
— Amelio Vazquez-Reina

1
@intrpc Lea la entrada hasta el primer \a(carácter de campana), sin hacer eco de entrada, con un tiempo de espera de 1 segundo.
— Gilles 'SO- deja de ser malvado'

55
@ l0b0 tput colorsconsulta la base de datos terminfo. Lo más probable es que tengas TERM=xterm. Xterm puede admitir al menos 2, 8, 16, 88 o 256 colores según la versión y las opciones de compilación y tiempo de ejecución, pero la base de datos terminfo solo puede almacenar un valor. Puede configurar TERM=xterm+256color, por ejemplo , pero se molestará cuando inicie sesión en una máquina que no tiene esta entrada en su base de datos termcap / terminfo.
— Gilles 'SO- deja de ser malvado'

2
@ l0b0 Su tubería obviamente no tiene nada que ver con el terminal. Necesita imprimir en la terminal ( printf … >/dev/tty) y luego leer desde la terminal ( read … </dev/tty). Xterm responde a la OSC 4; …; ? BELsecuencia inyectando teclas.
— Gilles 'SO- deja de ser malvado'



9

Puedes usar

$ tput colors

En mi instalación de Debian, tput es parte del ncurses-binpaquete que se instala por defecto.


66
Eso solo informará cuántos colores su terminal informa al medio ambiente TERM, no cuántos colores puede admitir si se le da un TERM
— color
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.