web-dev-qa-db-ja.com

256色のTTY?

URxvtとxtermでは、8色だけではなく256色をサポートする仮想端末を使用できます。私のIntel GMAグラフィックカードはKMSフレームバッファードライバーで十分にサポートされているので、私はTTYのみに取り組んでいます。残念ながら、MPlayer(-vo fbdev/fbdev2)やその他のフレームバッファーツールを使用すれば、さらに多くの問題を解決できますが、8色しかサポートしません。 TTYに8色以上を使用するように指示する方法はありますか?

25
timn

確信が持てるようになりましたので、答えを修正します。

ANSIシーケンスがBIOSまたはカーネル外で処理されていると結論するのは誤りでした。実際、それらはカーネルで処理されます。 LinuxNewbies IRCチャンネル:drivers/char/vt.cは、仮想端末ドライバが使用するDigital Equipment VT102端末のエミュレーションを実装します。

だから...決定的な答えとして、仮想端末のエスケープシーケンスを処理するソースコードを確認しました。仮想端末で256色のサポートが必要な場合は、エスケープシーケンスを解析するコードを拡張した後で独自のカーネルを構築する必要がありますより広い色仕様を処理します。

この関数はcsi_m()と呼ばれます。変更は、Xベースのターミナルエミュレータを拡張して、より豊富なカラーコードを指定するエスケープシーケンスを処理するものと同様にする必要があります。おそらく他にも変更が必要になるでしょうが、ここから始めます。

10
pbr

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
7
quack quixote

Fbtermを見てください-256色モードで実行できる代替フレームバッファーです(TTYからrootとして実行するだけです)。

私はそれで混合成功しました-一部のアプリケーションは正常に動作し、256色を報告します。ただし、Emacs(TTYで256色が必要だった主な理由)が機能していないようです。ここでそれについて少し議論がありますが、それは本当に解決されません:

http://lists.gnu.org/archive/html/emacs-devel/2011-08/msg00989.html

ただし、mplayerは動作するはずです。

6
Seb

kmscon

kmscon は、Windowsシステム(X、ウェイランド)をインストールせずに256色とビデオを取得する方法です。

放棄されましたが、は現在 forkを介して維持されています。

インストールに関するドキュメントはスリムですが、READMEページ ここ で入手できます。


私はこれをインストールし、256色を必要とするコンソールアプリに使用しました(私の設定によりvim)。

インストール手順を注意深くお読みください。

1
user3751385