5 votes

gnome-terminal utilise des couleurs vives pour les caractères gras

gnome-terminal utilisé pour afficher les caractères avec une couleur et l'attribut gras dans une couleur plus vive que les caractères avec la même couleur mais sans attribut gras, pour un total de 16 couleurs possibles. La page des préférences propose toujours 16 couleurs à sélectionner, mais il semble qu'elle utilise toujours la rangée supérieure, même lorsque les caractères sont en gras. Je ne vois jamais la rangée inférieure de couleurs utilisée.

(C'est un problème lorsque je joue à Nethack, car j'ai l'habitude de voir les monstres et les objets en 16 couleurs distinctes).

Existe-t-il un moyen de retrouver l'ancien comportement avec les 16 couleurs ?

6voto

egmont Points 7095

Version courte : Veuillez essayer TERM=xterm nethack Il est fort probable que cela suffise.

Version longue :

Veuillez essayer et examiner la sortie du script de ma réponse à l'adresse suivante Impression d'une mire de 256 couleurs dans le terminal .

L'attribut dont vous parlez ( \e[1m ) a fait l'objet d'une confusion quant à savoir s'il signifie audacieux, brillant ou les deux à la fois. Avec l'apparition d'une palette étendue de 256 couleurs dans presque tous les émulateurs de terminaux, et par la suite le support des vraies couleurs dans certains (y compris gnome-terminal), la tendance est à l'utilisation de cet attribut pour signifier "gras". Il est évident que cet attribut n'est pas destiné à modifier les couleurs RVB directes, et il serait également problématique avec la palette de 256 couleurs (y aurait-il une correspondance entre ces indices, ou cela donnerait-il des couleurs en dehors de la palette ?)

Il existe plusieurs façons d'accéder aux 16 premières entrées de la palette. Les séquences d'échappement héritées des numéros 30-37 (avant-plan) et 40-47 (arrière-plan) représentent les 8 premières entrées. Les séquences d'avant-plan, si elles sont combinées avec le mode 1 (gras/lumineux), activent toujours leurs équivalents lumineux pour des raisons de compatibilité (par exemple, pour le mode nethack pour qu'il ressemble encore à ce qu'il était avant... soupir).

Les codes 90-97 (fg) et 100-107 (bg) correspondent aux 8 entrées suivantes de la palette, qui sont de toute façon les plus lumineuses.

Les nouvelles séquences d'échappement de la palette de 256 couleurs (38;5;0 - 38;5;255 pour fg, 48;5;0 - 48;5;255 pour bg) se comportent cependant différemment (suivant le comportement de xterm) : Ici, l'attribut 1 (gras/brillant) active uniquement l'audace et ne modifie pas la couleur.

Donc, dans votre cas, la différence est probablement que votre application émettait les anciennes séquences d'échappement, mais qu'elle émet maintenant les nouvelles (palette de 256 couleurs) qui font référence aux couleurs de la même palette, la seule différence étant que le mode 1 fonctionne différemment : cela signifie gras seulement ici au lieu de gras et brillant.

Ceci, à son tour (en remontant la chaîne de raisonnement) est probablement dû au fait que la variable d'environnement TERM prend par défaut la valeur xterm-256color, au lieu de xterm comme précédemment. Essayez d'inverser cette variable et voyez comment cela affecte votre application.

Quelque chose que je ne comprends pas sans investiguer (et que je n'investiguerai pas par manque de temps et d'intérêt) : nethack semble utiliser ncurses. ncurses ne permet pas à l'application de décider quel type de séquences d'échappement utiliser, il n'offre qu'un accès à 256 couleurs, et c'est l'affaire privée de ncurses de choisir la séquence d'échappement qu'il utilise pour les 16 premières couleurs. En fait, comme le montre la sortie de tput setaf y tput setab Dans le cas de TERM=xterm-256color, dans une syntaxe bizarre, il code une branche if-else pour les intervalles 0-7, 8-15 et 16-255, c'est-à-dire, pour autant que je sache, qu'il est censé émettre les séquences d'échappement héritées pour les 16 premières couleurs, ce qui, dans votre cas, devrait signifier que même avec TERM=xterm-256color, le comportement ne devrait pas changer par rapport à TERM=xterm. Je vous laisserais poursuivre vos recherches à partir d'ici, compte tenu des informations que vous avez reçues jusqu'à présent, par exemple en utilisant script pour enregistrer nethack et l'examiner avec un visualiseur de texte pour voir quels types de séquences d'échappement il émet.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X