2008-10-05 25 views
7

Ich habe 256 Farben funktioniert gut in meinem Terminal (test scripts here), aber es funktioniert nicht, wenn ich Ncurses (über Ruby-Ncurses) verwenden. Das Drucken der auf dieser Seite angegebenen Escape-Sequenzen funktioniert gut, aber wenn ich ncurses initialisiere, funktioniert 'puts' nicht mehr und ich kann die Farben nicht mit den verschiedenen ncurses-Farbänderungs-/String-Ausgabefunktionen ausgeben, die ich gefunden habe. Was gibt?Erhalten von 256 Farben aus Ruby-Ncurses

Antwort

5

njsf: Sie teilweise direkt hier waren, und nach Basteln viel mehr Ich habe es schließlich zur Arbeit. Danke für Ihre Hilfe. Die Geschichte: XTerm (und rxvt und Eterm) unterstützen 256 Farben über Escape-Sequenzen (was ich sah), aber "tput-Farben" sagen "8" und ncurses werden nicht in der Lage sein, an ihnen zu kommen, weil Ncurses nett spielt und versuchen, über terminfo zuzugreifen.

Zum Wohl jemand mit ähnlichem Schmerz:

Ich fand ich brauche das ncurses-term (Ubuntu) Paket installieren Dateien zu erhalten/lib/term/x/xterm-256color und andere 256color term . Dann habe ich meinen TERM auf xterm-256color gesetzt und die Zeile '* customization: -color' zu meinen ~/.Xdefaults hinzugefügt, ran 'xrdb -merge ~/.Xdefaults', um sie zu laden, und von da an habe ich 256 Farben Unterstützung in neuen xterms.

+0

Yep , kam hierher, um vorzuschlagen, Ihr Terminal richtig einzurichten. Auch ein Leckerbissen für jeden Drive-by-Leser. Mac OS X Terminal.app zum Beispiel unterstützt nur 16 Farben, also entweder iTerm oder XTerm auf X11 oder vergessen Sie es! – ocodo

7

Ich bin mir nicht sicher, ob dies die ganze Geschichte wäre, aber stellen Sie sicher, dass Ihre Terminalfähigkeiten in der Tat für die Beschreibung der 256 Farben sorgen.

Was ist der TERM-Umgebungsvariablenwert? Versuchen Sie es auf xterm-256color einzustellen und führen Sie es erneut aus. ncurses sollte dann die richtige Farbe Escape-Sequenzen erhalten.

Sie können auch die Endgerätefähigkeiten testen und Terminal Farbausgabe mit dem Programm, das wir bei SXEmacs Entwicklung verwenden:

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

Compile mit gcc -o tty-Farben tty-colors.c -lncurses

EDIT: Beachten Sie, dass, nur weil die Skripte, die im Netz gefunden werden die 256 Farben, das ist nicht "alles eingestellt". Curses-Programme verlassen sich auf terminfo und termcap und die Umgebungsvariable TERM, um herauszufinden, wie mit dem Terminal interagiert werden kann. Damit eine Curses-Anwendung die 256 Farben verwenden kann, sollte die Variable TERM auf einen vorhandenen Terminal-Namen gesetzt werden, der 256 Farben unterstützt. Das C-Programm oben werden Sie zeigen, was ncurses über Ihr Terminal denkt, nicht nur die Ausgabe xterm Sequenzen wie die meisten Skripte tun [auch derjenige von X.org]

2

Einstellung

ENV [TERM] + = '-256color', wenn ENV [ 'TERM'] == 'xterm' # aktivieren 256 Farben

Werke auf ubuntu 10.04 +