URxvtとxtermでは、8色だけではなく256色をサポートする仮想端末を使用できます。私のIntel GMAグラフィックカードはKMSフレームバッファードライバーで十分にサポートされているので、私はTTYのみに取り組んでいます。残念ながら、MPlayer(-vo fbdev/fbdev2)やその他のフレームバッファーツールを使用すれば、さらに多くの問題を解決できますが、8色しかサポートしません。 TTYに8色以上を使用するように指示する方法はありますか?
確信が持てるようになりましたので、答えを修正します。
ANSIシーケンスがBIOSまたはカーネル外で処理されていると結論するのは誤りでした。実際、それらはカーネルで処理されます。 LinuxNewbies IRCチャンネル:drivers/char/vt.c
は、仮想端末ドライバが使用するDigital Equipment VT102端末のエミュレーションを実装します。
だから...決定的な答えとして、仮想端末のエスケープシーケンスを処理するソースコードを確認しました。仮想端末で256色のサポートが必要な場合は、エスケープシーケンスを解析するコードを拡張した後で独自のカーネルを構築する必要がありますより広い色仕様を処理します。
この関数はcsi_m()と呼ばれます。変更は、Xベースのターミナルエミュレータを拡張して、より豊富なカラーコードを指定するエスケープシーケンスを処理するものと同様にする必要があります。おそらく他にも変更が必要になるでしょうが、ここから始めます。
256色のRXVT/xterm/URXVT/etcは、terminfoとTERM
変数の設定によって定義されます。ほとんどのLinuxディストリビューションでは、仮想端末は/etc/inittab
で定義され、端末が使用できる色の数を定義するデフォルトの端末タイプを使用します。
TTYに8色以上を使用するように指示する方法はありますか?
はい。
フレームバッファーを確認してください が正しい解像度/ビット深度を使用していることを確認してください。たとえば、カーネルオプションにvga=773
を追加して、1024x768と256色(8ビットの色深度)を取得してください。
別のTERMを設定します(例:export TERM=foo
)。正しいものを見つけるために実験する必要があります。機能するものが見つかった場合は、/etc/inittab
を変更して、仮想端末でデフォルトで実行されるようにすることができます(次のセクションを参照)。
この記事 はあなたのために働くかもしれない他のオプションを議論します。 Qingy(QingyはGettYではない) をgettyの代替として推奨し、TERM変数の切り替えがオプションではない場合に探しているものを提供する可能性があります。
Gettyの交換について言えば、途中でgettyをGNU screen
に置き換える手順を見たことがあります。現時点ではリンクが見つかりませんが、screen
には256色のTERMがあるため、調べてみてください。
/etc/inittab
は、次のような行を使用して仮想端末をセットアップします。
# Format:
# <id>:<runlevels>:<action>:<process>
#
1:2345:respawn:/sbin/getty 38400 tty1
2:2345:respawn:/sbin/getty 38400 tty2
3:2345:respawn:/sbin/getty 38400 tty3
これは/sbin/getty
のマンページです(私のDebianシステムのものなので、技術的にはagetty
プログラムです):
SYNOPSIS
agetty [-8ihLmnw] [-f issue_file] [-l login_program] [-I init]
[-t timeout] [-H login_Host] baud_rate,... port [term]
最後のbaud_rate,... port [term]
に注意してください。これは/etc/inittab
行のコマンドと一致します(/sbin/getty 38400 ttyN
)-[term]
引数がないため、デフォルトが取得されます(ログイン直後にecho $TERM
を実行します)仮想コンソールで、システムが使用しているものを確認します)。再びマンページから:
ARGUMENTS
term The value to be used for the TERM environment variable. This over‐
rides whatever init(8) may have set, and is inherited by login and
the Shell.
動作するTERMを見つけたら、inittabのgetty行を変更して、最後に適切なTERMを追加します。
1:2345:respawn:/sbin/getty 38400 tty1 TERM-with-256-colors
2:2345:respawn:/sbin/getty 38400 tty2 TERM-with-256-colors
Fbtermを見てください-256色モードで実行できる代替フレームバッファーです(TTYからrootとして実行するだけです)。
私はそれで混合成功しました-一部のアプリケーションは正常に動作し、256色を報告します。ただし、Emacs(TTYで256色が必要だった主な理由)が機能していないようです。ここでそれについて少し議論がありますが、それは本当に解決されません:
http://lists.gnu.org/archive/html/emacs-devel/2011-08/msg00989.html
ただし、mplayerは動作するはずです。