Ich habe 256 Farben, die in meinem Terminal gut funktionieren ( Testskripte hier ), aber es funktioniert nicht mehr, wenn ich ncurses (über Ruby-ncurses) verwende. Drucken Sie die Escape-Sequenzen auf dieser Seite gegeben funktioniert gut, aber wenn ich ncurses initialisieren 'Puts' stoppt arbeiten und ich kann nicht die Farben mit einer der verschiedenen ncurses Farbe ändern/Zeichenfolge Ausgabefunktionen ausgeben, die ich gefunden habe. Woran liegt das?
Antworten
Zu viele Anzeigen?Ich bin mir nicht sicher, ob das die ganze Geschichte ist, aber vergewissern Sie sich, dass Ihr Terminal tatsächlich die 256-Farben-Beschreibung unterstützt.
Wie lautet der Wert der Umgebungsvariablen TERM? Versuchen Sie, sie auf xterm-256color zu setzen und führen Sie es erneut aus. ncurses sollte dann die richtigen Farb-Escape-Sequenzen erhalten.
Sie können auch die Fähigkeiten des Terminals und die Farbausgabe des Terminals mit dem Programm testen, das wir bei der Entwicklung von SXEmacs verwenden:
http://www.triatlantico.org/tmp/tty-colors.c
Kompilieren mit gcc -o tty-colors tty-colors.c -lncurses
EDIT: Beachten Sie, dass nur weil die Skripte, die im Netz zu finden sind, die 256 Farben ausgeben, das noch nicht "all set" ist. Curses-Programme verlassen sich auf terminfo und termcap und die TERM-Umgebungsvariable, um herauszufinden, wie sie mit dem Terminal interagieren können. Damit ein Curses-Programm die 256 Farben nutzen kann, sollte man die TERM-Variable auf einen existierenden Terminalnamen setzen, der 256 Farben unterstützt. Das obige C-Programm wird Ihnen zeigen was ncurses denkt über Ihr Terminal nach und gibt nicht nur die xterm-Sequenzen aus, wie es die meisten Skripte tun [sogar das von X.org].
Njsf: Du hattest teilweise recht, und nachdem ich noch viel mehr herumgebastelt habe, hat es schließlich funktioniert. Vielen Dank für deine Hilfe. Zur Geschichte: XTerm (und rxvt, und Eterm) unterstützen 256 Farben über Escape-Sequenzen (was ich gesehen habe), aber 'tput colors' sagt '8' und ncurses ist nicht in der Lage, auf sie zuzugreifen, weil ncurses nett spielt und versucht, über terminfo zuzugreifen.
Zum Nutzen aller, die ähnliche Schmerzen haben:
Ich fand heraus, dass ich das Paket ncurses-term (Ubuntu) installieren muss, um /lib/terminfo/x/xterm-256color und andere 256-farbige terminfo-Dateien zu erhalten. Dann setzte ich meinen TERM auf xterm-256color und fügte die Zeile '*customization: -color' zu meiner ~/.Xdefaults hinzu, führte 'xrdb -merge ~/.Xdefaults' aus, um sie zu laden, und von da an habe ich in neuen xterms die richtige Unterstützung für 256 Farben.