256 colores en consola (tty)

11

Supongamos que tengo un sistema sin X server. Solo puedo iniciar sesión desde la consola. Parece que, por defecto, la consola de Linux solo admite 8 colores:

# tput colors
8

¿Es posible usar 256 colores en la consola, lo mismo que usaría en un emulador de terminal (es decir, terminador)?

Mientras busco en Google, he encontrado muchas preguntas similares (muchas de ellas mayores de 10 años), pero ninguna respuesta clara. Alguien sugiere usar framebuffer, otras personas sugieren agregar el argumento TERM a las opciones de arranque del kernel.

Por el momento, solo paso una opción adicional como parámetro de arranque del kernel:

append="video=1280x720"

Creo que pasar la resolución de video solo funciona en núcleos modernos con kernel mode settingsoporte, pero no estoy seguro de eso.

¿Es posible usar 256 colores en la consola moderna de Linux (tty)

¿Cómo?

Estoy usando Debian Wheezy con el kernel 4.1

ACTUALIZAR:

basado en la sugerencia de @muru, lo he intentado fbterm. Si bien funciona con 256 colores, tiene fuentes muy feas / ilegibles. Además, hay un cursor que parpadea constantemente en la esquina inferior izquierda, lo que me distrae.

¿Puedo usar 256 colores en la consola sin fbterm / framebuffer?

¿De dónde viene el límite de 8 colores en la consola?

Martin Vegter
fuente
@muru: gracias por la sugerencia. He actualizado mi pregunta.
Martin Vegter
Por supuesto, si se establece TERMque xterm-256colorpara la consola de Linux, usted sólo tiene que abrir otra lata de gusanos. Este enlace da una pista.
Thomas Dickey
RE: ACTUALIZACIÓN No tengo la fuente "fea / distorsionada", probablemente porque uso una fuente diferente. Podría ser incorrecto $TERM(tiene que ser fbterm antes de comenzar fbterm) o no el modo de video de 32 bits o ambos. Apague el cursor de la consola antes de comenzar fbtermy enciéndalo una vez que esté allí, usando tput. unix.stackexchange.com/questions/220330/…
Paul Wratt
Por cierto, también miré la fbtermfuente, y sería simple (pero lento) convertir las secuencias de código de escape para usar xterm-256coloren su lugar ( fbterm-xterm). El $TERMtambién tendría que ser inline con terminfoy termcapconvenciones de nomenclatura ( fbterm-xterm-256coloro fbterm-256color) a "ranura" en shell scripts existentes. Tenga en cuenta que se fbtermutiliza TERM=fbtermcomo un interruptor para activar la opción de 256 colores, de lo contrario, son 16 colores (o tal vez el mismo que el subyacente).
Paul Wratt hace

Respuestas:

2

La pregunta real consiste en estos dos elementos:

  • ¿Puedo usar 256 colores en la consola sin fbterm / framebuffer?

  • ¿De dónde viene el límite de 8 colores en la consola?

Al primero: aparentemente no. Todos los enfoques sugeridos usan fbterm. Al segundo: proviene de la descripción del terminal (también conocido como "entrada de terminfo"). Para la consola Linux, con TERMset to linux, eso dice que el terminal admite 8 colores. tput obtiene su información de la base de datos del terminal.

Uno de los elementos en el hilo citado dice que fbterm usa diferentes secuencias de escape para establecer colores que xterm. Si ese es el caso (y dada la propensión de los usuarios de Emacs a codificar cosas), no hay una entrada de terminal adecuada para fbterm.

Thomas Dickey
fuente
El emulador de terminal del kernel de Linux ha obtenido soporte SGR adicional en los últimos años: github.com/torvalds/linux/commit/… github.com/torvalds/linux/commit/… github.com/torvalds/linux/commit/…
JdeBP
1
claro, es posible que no haya leído el comentario de registro: debido a las limitaciones de hardware de las consolas VGA, los colores * se degradan a 16 primeros planos y 8 fondos. En las consolas fbdev sería posible admitirlas sin pérdida de calidad, pero agregar eso requeriría una gran cantidad de código. *
Thomas Dickey
Ya leí el comentario, hace mucho tiempo, por eso escribí que había obtenido un poco de soporte adicional de SGR . (-: Pero tenga en cuenta que, por lo tanto, no siempre es un límite de 8 colores como escribió en 2016 aquí.
JdeBP
Sigue siendo la misma paleta de 8 ANSI y 8 negrita / brillante ANSI como ha sido por más de 25 años (y ncurses ha tenido una entrada de Linux-16color desde 2009 ).
Thomas Dickey
Anteriormente he examinado la fuente del núcleo (aproximadamente en el momento del OP), y consideré que es un proceso simple permitir 256 colores ( linux-256color). Ese parche nunca se aceptaría en sentido ascendente por la misma razón que el comentario de Thomas Dickey anterior, "Debido a limitaciones de hardware". IE Linux debe funcionar en el mínimo común denominador.
Paul Wratt hace