2008-10-05 15 views
7

J'ai 256 couleurs qui fonctionnent très bien dans mon terminal (test scripts here), mais il cesse de fonctionner lorsque j'utilise ncurses (via Ruby-ncurses). L'impression des séquences d'échappement indiquées sur cette page fonctionne bien, mais lorsque j'initialise les arrêts 'puts' de ncurses, je ne peux pas afficher les couleurs avec les diverses fonctions de changement de couleur/sortie de chaîne ncurses que j'ai trouvées. Ce qui donne?Obtenir 256 couleurs de ruby-ncurses

Répondre

5

njsf: Vous étiez en partie ici, et après bricoler beaucoup plus je l'ai finalement eu à travailler. Merci de votre aide. L'histoire: XTerm (et rxvt, et Eterm) supportent 256 couleurs via des séquences d'échappement (ce que je voyais) mais 'tput colors' dira '8' et ncurses ne pourra pas les atteindre, parce que ncurses joue bien et tenter d'accéder via terminfo.

Pour le bénéfice de toute personne ayant des douleurs similaires:

Je trouve que je dois installer le ncurses terme (Ubuntu) package pour obtenir/lib/terminfo/x/xterm-256color et d'autres 256color fichiers terminfo . Ensuite, j'ai mis mon TERM à xterm-256color et ajouté la ligne '* customization: -color' à mon ~/.Xdefaults, couru 'xrdb -merge ~/.Xdefaults' pour le charger, et à partir de là j'ai 256 couleurs support dans les nouveaux xterms.

+0

Yep , est venu ici pour suggérer de configurer votre terminal correctement .. Aussi un peu cher pour tous les lecteurs drive-by. Mac OS X Terminal.app par exemple ne supporte que 16 couleurs, donc vous utilisez iTerm, ou XTerm sur X11 ou l'oublier! – ocodo

7

Je ne suis pas sûr si ce serait toute l'histoire, mais assurez-vous que vos capacités de terminal fournissent en effet la description 256 couleurs. Quelle est la valeur de la variable d'environnement TERM?

Essayez de le définir sur xterm-256color et réexécutez-le. ncurses devrait alors obtenir les séquences d'échappement de couleur appropriées.

Vous pouvez également tester les capacités du terminal et la sortie de couleur du terminal avec le programme que nous utilisons au développement SXEmacs:

http://www.triatlantico.org/tmp/tty-colors.c

Compile avec TTY couleurs gcc-TTY colors.c -lncurses

EDIT: Notez que juste parce que les scripts qui se trouvent sur le net produisent les 256 couleurs, ce n'est pas "tout ensemble". Les programmes de curseurs s'appuient sur terminfo et termcap et sur la variable d'environnement TERM pour savoir comment interagir avec le terminal. Donc, pour qu'une application curses puisse utiliser les 256 couleurs, il faut définir la variable TERM sur un nom de terminal existant qui supporte 256 couleurs. Le programme C ci-dessus vous montre ce ncurses pense au sujet de votre terminal, non seulement la sortie des séquences xterm comme la plupart des scripts font [même celui de X.org]

2

mise

ENV [ 'TERM'] + = '-256color' si ENV [ 'TERM'] == # 'xterm' activer 256 couleurs

travaille sur ubuntu 10.04 +