tmuxでshowconsolefontの出力が異なるのはなぜですか?

tmuxでshowconsolefontの出力が異なるのはなぜですか?

私はウィンドウマネージャやデスクトップ環境なしでアーチLinuxシステムを実行しています。複数の端末が必要な場合はtmuxを使用してください。 tmuxなしでttyで実行するとsudo showconsolefont予想されるシンボルセットが表示されますが、tmuxを開いて実行するとsudo showconsolefont他のシンボルの重複セットが表示されます。

私のフォントはter-124bTerminusシリーズです。

スクリーンショットでは、トップ出力はtmuxでキャプチャされ、実行したときと同じように見えますsudo showconsolefont。一番下の出力には異なる記号が含まれていますが、ファイルにリダイレクトしてからそのファイルにcatリダイレクトすると同じように見えます。diffそれらを分析すると、それらが同じであると報告されます。

tmuxでshowconsolefontの出力が異なるのはなぜですか?このコマンドの要点は、現在のフォントで使用可能なすべてのシンボルを表示することです。 tmuxの内部と外部で同じフォントを使用していますが、なぜ違いがあるのか​​わかりません。これには、いくつかの単純なLinuxフォントの概念が欠けていると確信しています。誰かが私に指摘することができますか?

$TERMtmuxに値があることを確認し、デフォルト値がその値であることを確認しようとしましたがlinux(私のtt​​yと同じ$TERM)、特に違いはありませんでした。 ( set -g default-terminal "linux")

答え1

簡単に言えば:tmux256項目をすべてフォントで表示することはできません。

長い:

ソースコードを見ると少しぎこちないですが、その理由は(参照KBD - LinuxキーボードツールWebページ)tarballをお勧めしますが、提案されているようにgit-cloningを使用できます。ソースコードの参照。これshowconsolefontプログラムがこのようなことをする

  • 開いている指定されたデバイス、
  • 確認するこれは快適
  • 得る現在のモードでUTF-8が使用されていることを確認し、
  • 作る仮想(マイナー)画面マップ
  • 得る現在の画面マップ
  • 印刷並べ替え...
  • 各行に、フォントを表示するために配列の文字を再マップします。
  • また覆うコンソールモードと画面マッピング

showconsolefont256項目(256 - 32文字の制御文字の代わりに)を表示できるのは、コンソールに直接送信されたコードを再マップするためです。実際にはそうでしょう330x9b処理が異なるため制御します。十分近いです。 showconsolefont印刷可能なように見える文字が書かれていますが、実際に描かれている文字は1行ずつ変わっています。

1つの注目すべき点は、コンソールデバイスに対するすべての変更は、実際のデバイスのファイル記述子を使用し、文字配列が標準出力に書き込まれることです。これを実行すると外部ティモックス、これらは同じデバイス。しかし走っている~へ tmux、標準出力は次のとおりです。その他デバイス(特殊マッピングを文字から分離する擬似端末)。たとえば、シェルがコンソールにリダイレクトされる場合

$ tmux
$ sudo su -
# exec >/dev/console
# showconsolefont

あなたは見るでしょう部分興味深いキャラクター。ただし、疑似端末は、キャリッジの戻り/改行を期待どおりに表示せず、ステータス行が正しくtmux描画されない可能性があります。

tmux内でshowconsolefontリダイレクト

(外部tmux):

一般的なディスプレイコンソールフォント

読み取り可能な出力を得るためにルートのターミナルモードを設定する方法があるかもしれませんが、いくつかの作業がなければ不可能または達成するshowconsolefontことtmuxができます。

関連情報