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.