質問

端末で256色がうまく機能しています(テストスクリプトはこちら)が、ncurses(Ruby-ncurses経由)を使用すると動作しなくなります。そのページで指定されたエスケープシーケンスの印刷は正常に機能しますが、ncurses 'puts'を初期化すると動作が停止し、さまざまなncurses色変更/文字列出力関数で色を出力できません。何が得られますか?

役に立ちましたか?

解決 2

njsf:あなたは部分的にここにいました。そして、もっと多くのことをいじった後、最終的には機能するようになりました。ご協力いただきありがとうございます。ストーリー:XTerm(およびrxvt、およびEterm)はエスケープシーケンス(私が見ていたもの)を介して256色をサポートしますが、「tput colors」は「8」と表示され、ncursesはncursesがうまく再生されるため、それらを取得できませんterminfo経由でアクセスしようとしています。

同様の痛みがある人のために:

/ lib / terminfo / x / xterm-256colorおよびその他の256色のterminfoファイルを取得するには、ncurses-term(Ubuntu)パッケージをインストールする必要があることがわかりました。次に、TERMをxterm-256colorに設定し、行 '* customization:-color'を〜/ .Xdefaultsに追加し、 'xrdb -merge〜/ .Xdefaults'を実行してロードし、それから適切な256色を取得します新しいxtermでのサポート。

他のヒント

これがすべての話になるかどうかはわかりませんが、端末の機能が実際に256色の説明を提供することを確認してください。

TERM環境変数の値は何ですか? xterm-256colorに設定して再実行してください。 ncursesは適切なカラーエスケープシーケンスを取得する必要があります。

また、SXEmacs開発で使用するプログラムを使用して、端末の機能と端末のカラー出力をテストできます。

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

gcc -o tty-colors tty-colors.c -lncursesでコンパイル

編集: ネットで見つかったスクリプトが256色を出力するという理由だけで、「すべて設定」ではないことに注意してください。 cursesプログラムは、terminfoとtermcapおよびTERM環境変数に依存して、端末と対話する方法を見つけます。 したがって、cursesアプリが256色を使用できるようにするには、TERM変数を256色をサポートする既存の端末名に設定する必要があります。 上記のCプログラムは、ncursesが端末について考えるものを表示します。ほとんどのスクリプトが[X.orgのもの]のようにxtermシーケンスを出力するだけではありません

設定

ENV ['TERM'] + = '-256color' if ENV ['TERM'] == 'xterm'#256色をアクティブにする

ubuntu 10.04で動作します

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top