私はウィンドウマネージャやデスクトップ環境なしでアーチLinuxシステムを実行しています。複数の端末が必要な場合はtmuxを使用してください。 tmuxなしでttyで実行するとsudo showconsolefont
予想されるシンボルセットが表示されますが、tmuxを開いて実行するとsudo showconsolefont
他のシンボルの重複セットが表示されます。
私のフォントはter-124b
Terminusシリーズです。
スクリーンショットでは、トップ出力はtmuxでキャプチャされ、実行したときと同じように見えますsudo showconsolefont
。一番下の出力には異なる記号が含まれていますが、ファイルにリダイレクトしてからそのファイルにcat
リダイレクトすると同じように見えます。diff
それらを分析すると、それらが同じであると報告されます。
tmuxでshowconsolefontの出力が異なるのはなぜですか?このコマンドの要点は、現在のフォントで使用可能なすべてのシンボルを表示することです。 tmuxの内部と外部で同じフォントを使用していますが、なぜ違いがあるのかわかりません。これには、いくつかの単純なLinuxフォントの概念が欠けていると確信しています。誰かが私に指摘することができますか?
$TERM
tmuxに値があることを確認し、デフォルト値がその値であることを確認しようとしましたがlinux
(私のttyと同じ$TERM
)、特に違いはありませんでした。 ( set -g default-terminal "linux"
)
答え1
簡単に言えば:tmux
256項目をすべてフォントで表示することはできません。
長い:
ソースコードを見ると少しぎこちないですが、その理由は(参照KBD - LinuxキーボードツールWebページ)tarballをお勧めしますが、提案されているようにgit-cloningを使用できます。ソースコードの参照。これshowconsolefont
プログラムがこのようなことをする
- 開いている指定されたデバイス、
- 確認するこれは快適、
- 得る現在のモードでUTF-8が使用されていることを確認し、
- 作る仮想(マイナー)画面マップ
- 得る現在の画面マップ
- 印刷並べ替え...
- 各行に、フォントを表示するために配列の文字を再マップします。
- また覆うコンソールモードと画面マッピング
showconsolefont
256項目(256 - 32文字の制御文字の代わりに)を表示できるのは、コンソールに直接送信されたコードを再マップするためです。実際にはそうでしょう330x9b
処理が異なるため制御します。十分近いです。 showconsolefont
印刷可能なように見える文字が書かれていますが、実際に描かれている文字は1行ずつ変わっています。
1つの注目すべき点は、コンソールデバイスに対するすべての変更は、実際のデバイスのファイル記述子を使用し、文字配列が標準出力に書き込まれることです。これを実行すると外部ティモックス、これらは同じデバイス。しかし走っている~へ tmux
、標準出力は次のとおりです。その他デバイス(特殊マッピングを文字から分離する擬似端末)。たとえば、シェルがコンソールにリダイレクトされる場合
$ tmux
$ sudo su -
# exec >/dev/console
# showconsolefont
あなたは見るでしょう部分興味深いキャラクター。ただし、疑似端末は、キャリッジの戻り/改行を期待どおりに表示せず、ステータス行が正しくtmux
描画されない可能性があります。
(外部tmux
):
読み取り可能な出力を得るためにルートのターミナルモードを設定する方法があるかもしれませんが、いくつかの作業がなければ不可能または達成するshowconsolefont
ことtmux
ができます。