私の端末では 256 色が問題なく動作しています (テスト スクリプトはこちら) が、(Ruby-ncurses 経由で) ncurses を使用すると動作しなくなります。そのページに記載されているエスケープ シーケンスの印刷は正常に機能しますが、ncurses を初期化すると「puts」が機能しなくなり、見つけたさまざまな ncurses の色変更/文字列出力関数のいずれでも色を出力できません。何を与える?
3 に答える
これがすべての話かどうかはわかりませんが、端末の機能が実際に 256 色の説明を提供していることを確認してください。
TERM 環境変数の値は何ですか? xterm-256color に設定して再実行してみてください。ncurses は適切な色のエスケープ シーケンスを取得する必要があります。
SXEmacs 開発で使用するプログラムを使用して、端末の機能と端末の色出力をテストすることもできます。
http://www.triatlantico.org/tmp/tty-colors.c
gcc -o tty-colors tty-colors.c -lncurses でコンパイルします。
EDIT:ネット上で見つかったスクリプトが256色を出力するという理由だけで、それは「すべて設定」されていないことに注意してください。curses プログラムは、terminfo と termcap、および TERM 環境変数に依存して、端末と対話する方法を見つけます。したがって、curses アプリが 256 色を使用できるようにするには、256 色をサポートする既存の端末名に TERM 変数を設定する必要があります。上記の C プログラムは、ほとんどのスクリプトのように xterm シーケンスを出力するだけでなく、端末について ncurses がどう考えているかを示します [X.org のものでも]
njsf: あなたは部分的にここにいて、さらに多くのことをいじくり回した後、最終的に機能するようになりました。ご協力いただきありがとうございます。ストーリー: XTerm (および rxvt、Eterm) はエスケープ シーケンスを介して 256 色をサポートします (私が見たもの)。 terminfo 経由でアクセスしようとしています。
同様の痛みを持つすべての人のために:
/lib/terminfo/x/xterm-256color およびその他の 256 色の terminfo ファイルを取得するには、ncurses-term (Ubuntu) パッケージをインストールする必要があることがわかりました。次に、TERM を xterm-256color に設定し、「*customization: -color」という行を ~/.Xdefaults に追加し、「xrdb -merge ~/.Xdefaults」を実行してそれをロードし、それ以降は適切な 256 色になりました。新しい xterm でのサポート。
設定
ENV['TERM'] += '-256color' if ENV['TERM'] == 'xterm' # 256 色をアクティブ化
ubuntu 10.04 +で動作します