TTY à 256 couleurs?

Avec URxvt et xterm, il est possible d'utiliser un terminal virtuel prenant en charge 256 couleurs au lieu de seulement huit. Puisque ma carte graphique Intel GMA est bien prise en charge par le pilote KMS framebuffer, je travaille exclusivement sur l'ATS. Malheureusement, il ne supporte que huit couleurs bien qu'avec MPlayer (-vo fbdev / fbdev2) et d'autres outils framebuffer beaucoup plus peuvent être adressés. Existe-t-il un moyen de dire à l'ATS d'utiliser plus de huit couleurs?

Je révise ma réponse maintenant que je suis sûr des choses.

Il était erroné de conclure que les séquences ANSI étaient traitées via BIOS ou autrement en dehors du noyau; En effet, ils sont manipulés dans le noyau. J'ai trouvé ce que j'avais manqué avant grâce à hnaz_ sur la chaîne IRC LinuxNewbies: drivers/char/vt.c implémente une émulation d'un terminal d'équipement numérique VT102 qui est utilisé par le pilote de terminal virtuel.

Donc … en tant que réponse définitive, après avoir passé en revue le code source qui gère les séquences d'échappement pour les terminaux virtuels: Si vous voulez un support de 256 couleurs sur les terminaux virtuels, vous devrez créer votre propre noyau après avoir étendu le code qui analyse les séquences d'échappement Pour gérer les spécifications de couleur plus larges.

La fonction s'appelle csi_m (). Les modifications devront être similaires à celles qui étendent les émulateurs de terminal basés sur X pour gérer les séquences d'échappement en précisant les codes de couleurs plus riches. Il y aura également d'autres changements nécessaires, mais c'est là que vous allez commencer.

Vos 256 couleurs RXVT / xterm / URXVT / etc sont définies par terminfo et le paramètre de la variable TERM . Dans la plupart des distributions Linux, vos terminaux virtuels sont définis dans /etc/inittab et utilisent un type de terminal par défaut qui définit le nombre de couleurs que le terminal peut utiliser.

Existe-t-il un moyen de dire à l'ATS d'utiliser plus de huit couleurs?

Oui.

  • Assurez-vous que votre framebuffer utilise la résolution correcte / la profondeur de bits. Essayez d'ajouter vga=773 aux options du noyau, par exemple, pour obtenir 1024×768 et 256 couleurs (profondeur de couleur 8 bits).

  • Définissez un TERME différent (par exemple, export TERM=foo ). Vous devrez expérimenter pour trouver la bonne. Si vous trouvez celui qui fonctionne, vous pouvez modifier votre /etc/inittab afin que vos terminaux virtuels fonctionnent par défaut (voir la section suivante).

  • Cet article décrit d'autres options qui peuvent fonctionner pour vous. Il recommande Qingy (Qingy n'est pas GettY) en tant que remplaçant getty, et peut vous donner ce que vous cherchez si la modification des variables TERM n'est pas une option.

  • En ce qui concerne les remplacements de getty, je jure que j'ai vu des instructions pour remplacer getty avec l' GNU screen quelque part en cours de route. Je ne trouve pas le lien pour le moment, mais comme il existe un TERM 256 couleurs pour l' screen , vous pourriez l'examiner.


/etc/inittab utilise des lignes comme celle-ci pour configurer des terminaux virtuels:

 # Format: # <id>:<runlevels>:<action>:<process> # 1:2345:respawn:/sbin/getty 38400 tty1 2:2345:respawn:/sbin/getty 38400 tty2 3:2345:respawn:/sbin/getty 38400 tty3 

Voici la page de manuel sur /sbin/getty (de mon système Debian, donc c'est techniquement le programme agetty ):

 SYNOPSIS agetty [-8ihLmnw] [-f issue_file] [-l login_program] [-I init] [-t timeout] [-H login_host] baud_rate,... port [term] 

Notez le baud_rate,... port [term] there at the end. Cela correspond à la commande dans la ligne /etc/inittab ( /sbin/getty 38400 ttyN ) – notez qu'il n'y a pas d'argument [term] , donc nous obtenons un défaut (run echo $TERM juste après votre connexion à une console virtuelle Pour voir ce que votre système utilise). De la page de manuel à nouveau:

 ARGUMENTS term The value to be used for the TERM environment variable. This over‐ rides whatever init(8) may have set, and is inherited by login and the shell. 

Si vous trouvez un TERM qui fonctionne, modifiez les lignes getty dans votre inittab et ajoutez le TERM approprié à la fin:

 1:2345:respawn:/sbin/getty 38400 tty1 TERM-with-256-colors 2:2345:respawn:/sbin/getty 38400 tty2 TERM-with-256-colors 

Jetez un coup d'oeil à fbterm – c'est un remplaçant remplaçant qui peut fonctionner en mode 256 couleurs (il suffit de l'exécuter en tant que root à partir d'un TTY)

J'ai eu un succès mitigé avec elle – certaines applications fonctionnent bien et rapportent 256 couleurs; Cependant, Emacs (la principale raison pour laquelle je voulais 256 couleurs sur TTY) ne semble pas fonctionner; Il y a un peu de discussion à ce sujet ici, mais cela ne se résout pas vraiment:

http://lists.gnu.org/archive/html/emacs-devel/2011-08/msg00989.html

Cependant, mplayer devrait fonctionner!

Les séquences d'échappement ANSI pour définir le premier plan et les couleurs de fond du texte sont ce qui limite les choses ici.

De la mémoire, ces séquences ressemblent à une évasion [01; 34m. Il y a des codes dans les années 30 pour le premier plan et je pense que les années 40 pour l'arrière-plan.

Je ne pense donc pas qu'il existe un moyen d'atteindre ce que vous cherchez.