256 colori in console (tty)


11

Supponiamo che io abbia un sistema senza X server. Posso accedere solo dalla console. Sembra, per impostazione predefinita, la console Linux supporta solo 8 colori:

# tput colors
8

È possibile utilizzare 256 colori nella console, come farei in un emulatore di terminale (ovvero un terminatore)?

Mentre cercavo su Google, ho trovato molte domande simili (molte delle quali di età superiore ai 10 anni), ma nessuna risposta chiara. Qualcuno suggerisce di usare framebuffer, altri suggeriscono di aggiungere l'argomento TERM alle opzioni di avvio del kernel.

Al momento, passo solo un'opzione aggiuntiva come parametro di avvio del kernel:

append="video=1280x720"

Credo che passare la risoluzione video funzioni solo nei kernel moderni con kernel mode settingsupporto, ma non ne sono sicuro.

È possibile usare 256 colori nella moderna console linux (tty)

Come?

Sto usando Debian Wheezy con il kernel 4.1

AGGIORNARE:

sulla base del suggerimento di @muru, ho provato fbterm. Mentre funziona con 256 colori, ha caratteri molto brutti / confusi. Inoltre, c'è un cursore che lampeggia costantemente nell'angolo in basso a sinistra, che trovo distratto.

Posso usare 256 colori nella console senza fbterm / framebuffer?

Da dove viene il limite di 8 colori nella console?



@muru - grazie per il suggerimento. Ho aggiornato la mia domanda.
Martin Vegter,

Naturalmente, se si imposta TERMsu xterm-256colorper la console Linux, si aprirà semplicemente un'altra lattina di worm. Questo link dà un suggerimento.
Thomas Dickey,

RE: AGGIORNAMENTO Non ho il carattere "brutto / confuso", probabilmente perché uso un carattere diverso. Potrebbe essere sbagliato $TERM(deve essere fbterm prima di iniziare fbterm) o non modalità video a 32 bit o entrambi. Spegni il cursore della console prima di iniziare fbterme accendilo quando sei lì, usando tput. unix.stackexchange.com/questions/220330/…
Paul Wratt

A proposito, ho anche guardato l' fbtermorigine e sarebbe invece semplice (ma dispendioso in termini di tempo) convertire le sequenze di codici di escape da utilizzare xterm-256color( fbterm-xterm). Il $TERMdovrebbero anche essere sia allineata terminfoe termcapconvenzioni di denominazione ( fbterm-xterm-256coloro fbterm-256color) per "slot" in script shell esistenti. Si noti che fbtermutilizza TERM=fbtermcome interruttore per attivare l'opzione 256 colori, altrimenti i suoi 16 colori (o forse lo stesso del sottostante).
Paul Wratt

Risposte:


2

La vera domanda è composta da questi due elementi:

  • Posso usare 256 colori nella console senza fbterm / framebuffer?

  • Da dove viene il limite di 8 colori nella console?

Al primo: apparentemente no. Tutti gli approcci suggeriti usano fbterm. Al secondo: deriva dalla descrizione del terminale (aka "voce terminfo"). Per console Linux, con TERMset su linux, che dice che il terminale supporta 8 colori. tput ottiene le sue informazioni dal database del terminale.

Uno degli elementi nel thread citato dice che fbterm utilizza sequenze di escape diverse per impostare i colori rispetto a xterm. Se questo è il caso (e data la propensione degli utenti di Emacs a codificare le cose), non esiste una voce terminale adatta per fbterm.


L'emulatore di terminale del kernel Linux ha ottenuto un ulteriore supporto SGR negli ultimi anni: github.com/torvalds/linux/commit/… github.com/torvalds/linux/commit/… github.com/torvalds/linux/commit/…
JdeBP

1
certo - potresti non aver letto il commento del check-in: a causa delle limitazioni hardware delle console VGA, i colori sono * declassati a 16 primi piani e 8 sfondi. Sulle console fbdev sarebbe possibile supportarli senza perdita di qualità, ma aggiungendo che richiederebbe una quantità abbastanza grande di codice. *
Thomas Dickey,

Ho già letto il commento, da molto tempo, motivo per cui ho scritto che aveva ottenuto un ulteriore supporto SGR . (-: Ma nota che non è sempre un limite di 8 colori come hai scritto qui nel 2016.
JdeBP,

E 'ancora la stessa tavolozza di 8 ANSI e 8 grassetto / luminoso ANSI come è stato per 25 anni (e ncurses ha avuto una voce linux-16Color dal 2009 ).
Thomas Dickey,

In precedenza ho esaminato la fonte del kernel (circa il tempo dell'OP) e l'ho considerato un processo semplice per consentire 256 colori ( linux-256color). Quella patch non sarebbe mai stata accettata a monte per lo stesso motivo del commento di Thomas Dickey sopra, "A causa delle limitazioni hardware". Internet Explorer deve funzionare sul minimo comune denominatore.
Paul Wratt
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.