256 couleurs dans la console (tty)

11

Supposons que j'ai un système sans X server. Je ne peux me connecter qu'à partir de la console. Il semble, par défaut, la console Linux ne prend en charge que 8 couleurs:

# tput colors
8

Est-il possible d'utiliser 256 couleurs dans la console, comme j'utiliserais dans un émulateur de terminal (c'est-à-dire un terminateur)?

En cherchant sur Google, j'ai trouvé de nombreuses questions similaires (beaucoup d'entre elles ont plus de 10 ans), mais aucune réponse claire. Quelqu'un suggère d'utiliser framebuffer, d'autres suggèrent d'ajouter l'argument TERM aux options de démarrage du noyau.

Pour le moment, je ne passe qu'une option supplémentaire comme paramètre de démarrage du noyau:

append="video=1280x720"

Je crois que l'adoption de la résolution vidéo ne fonctionne que dans les noyaux modernes avec kernel mode settingsupport, mais je n'en suis pas sûr.

Est-il possible d'utiliser 256 couleurs dans une console Linux moderne (tty)

Comment?

J'utilise Debian Wheezy avec le noyau 4.1

MISE À JOUR:

basé sur la suggestion de @muru, j'ai essayé fbterm. Bien qu'il fonctionne avec 256 couleurs, il a des polices très laides / déformées. En outre, il y a un curseur clignotant constamment dans le coin inférieur gauche, ce qui me dérange.

Puis-je utiliser 256 couleurs dans la console sans fbterm / framebuffer?

D'où vient la limite de 8 couleurs dans la console?

Martin Vegter
la source
@muru - merci pour la suggestion. J'ai mis à jour ma question.
Martin Vegter
Bien sûr, si vous définissez TERMà xterm-256colorla console Linux, vous suffit d' ouvrir une autre boîte de Pandore. Ce lien donne un indice.
Thomas Dickey
RE: UPDATE Je n'ai pas la police "laid / brouillé", probablement parce que j'utilise une police différente. Cela peut être faux $TERM(doit être fbterm avant de commencer fbterm) ou pas le mode vidéo 32 bits ou les deux. Désactivez le curseur de la console avant de commencer fbtermet activez-le une fois que vous y êtes, à l'aide de tput. unix.stackexchange.com/questions/220330/…
Paul Wratt
BTW J'ai également regardé la fbtermsource, et il serait simple (mais long) de convertir les séquences de code d'échappement à utiliser à la xterm-256colorplace ( fbterm-xterm). L' $TERMaurait aussi besoin d'être inline avec terminfoet les termcapconventions de nommage ( fbterm-xterm-256colorou fbterm-256color) à « slot » dans les scripts shell existants. Notez que fbtermutilise TERM=fbtermcomme interrupteur pour activer l'option 256 couleurs, sinon ses 16 couleurs (ou peut-être les mêmes que le sous-jacent).
Paul Wratt

Réponses:

2

La vraie question se compose de ces deux éléments:

  • Puis-je utiliser 256 couleurs dans la console sans fbterm / framebuffer?

  • D'où vient la limite de 8 couleurs dans la console?

Pour le premier: apparemment non. Toutes les approches suggérées utilisent fbterm. Pour le second: il vient de la description du terminal (aka "terminfo entry"). Pour la console Linux, avec TERMdéfini sur linux, cela signifie que le terminal prend en charge 8 couleurs. tput obtient ses informations de la base de données du terminal.

L'un des éléments du fil cité indique que fbterm utilise des séquences d'échappement différentes pour définir les couleurs que xterm. Si tel est le cas (et compte tenu de la propension des utilisateurs d'Emacs à coder en dur), il n'y a pas d'entrée de terminal appropriée pour fbterm.

Thomas Dickey
la source
L'émulateur de terminal du noyau Linux a acquis une prise en charge SGR supplémentaire ces dernières années: github.com/torvalds/linux/commit/… github.com/torvalds/linux/commit/… github.com/torvalds/linux/commit/…
JdeBP
1
Bien sûr - vous n'avez peut-être pas lu le commentaire d'enregistrement: en raison des limitations matérielles des consoles VGA, les couleurs sont * rétrogradées à 16 avant-plans et 8 arrière-plans. Sur les consoles fbdev, il serait possible de les prendre en charge sans perte de qualité, mais l'ajout nécessiterait une quantité de code assez importante. *
Thomas Dickey
J'ai déjà lu le commentaire, depuis longtemps, c'est pourquoi j'ai écrit qu'il avait gagné un support SGR supplémentaire . (-: Mais remarquez que ce n'est donc pas toujours une limite de 8 couleurs comme vous l'avez écrit en 2016 ici.
JdeBP
Il est toujours la même palette de 8 ANSI et 8 gras / brillant ANSI comme cela a été pour 25 ans (et ncurses a eu une entrée linux-16color depuis 2009 ).
Thomas Dickey
J'ai déjà examiné la source du noyau (à peu près au moment de l'OP) et je l'ai considéré comme un processus simple pour permettre 256 couleurs ( linux-256color). Ce correctif ne serait jamais accepté en amont pour la même raison que Thomas Dickey commente ci-dessus, "en raison de limitations matérielles". IE Linux doit fonctionner sur le plus petit dénominateur commun.
Paul Wratt