ローカル ホストのターミナルと tmux に美しいテーマを適用できるドットファイルがたくさんあります。私は kitty、fish、tmux を使用しています。色を適切に定義し、全体的な一貫性を保つために、次のファイルを使用しています。
- .Xresoures
- キティ.conf
- 魚プロンプト.魚
- .tmux.conf
私もリモート サーバーを持っていますが、これは同じ arch + fish + tmux を実行し、まったく同じドットファイルを使用しています。ただし、サーバーに SSH 接続すると、すべてがまったく異なって見えます。
Google で調べてみると、奇妙な設定をたくさん追加するように指示するチュートリアルが多数見つかりますが、実際に内部で何が起こっているのかを説明しているものはありません (また、ご覧のとおり、どれも機能しませんでした)。
これを機能させるために私が試したことは次のとおりです(理由はよくわかりませんが):
- tmux.conf に追加:
set^[[3m -g default-terminal "xterm-kitty"
set-option^[[3m -ga terminal-overrides ",xterm-kitty*:Tc"
- xterm-kitty terminfoファイルを追加しました
TERM
ログイン時に環境変数をxterm-kittyに変更する
これらがどのように機能するかを示すリソースがあれば嬉しいです。 ありがとうございます!
編集 :
わかりやすくするために、私が持っている の値は次のとおりですTERM
。
- ローカルホスト上:
xterm-kitty
- tmux内のローカルホスト上:
xterm-256color
- ssh を開いた直後のリモート ホストで:
xterm-kitty
- tmux のリモートホスト上:
xterm-256color
すべてのファイルはgitリポジトリを使用して同期されており、すべてのバージョンは同一です。両方のホストterminfo
に関連する同じファイルを転送しました。また、xterm-kitty
これスクリプトを実行すると、両方のホストですべての色が適切に表示され、同一であることがわかります。
また、tmux を使用せずにリモート マシンにログインすると、さらに別の色の組み合わせが生成されることにも気付きました (どこでも同じ fish 構成ファイルが使用されています)。
答え1
default-terminal
tmux 内のデフォルトを設定しますTERM
。これを - に設定しないでください。tmuxは xterm や kitty ではありません。コンピュータ上に存在する場合は に設定し ( をチェック)、存在しない場合は にxterm-kitty
設定します。tmux-256color
infocmp tmux-256color
screen-256color
TERM
同様に、シェル プロファイルをすべての端末に対して同じ設定にしないでください。
この行は、に設定されている場合はターミナルが真の (RGB) カラーをサポートしていることを意味するterminal-overrides
ことを tmux に伝えます(したがって)。TERM
xterm-kitty
Tc
TERM
tmux の内部では、tmux 内のプログラムに、何と通信しているか (tmux) を伝えます。tmuxTERM
の外部では、tmux に何と通信しているか (この場合は kitty) を伝えます。
ローカルでは動作するが、ssh 経由では動作しない場合は、次のようなことが考えられます。
tmux の外部では異なります。ローカル コンピューターと SSH 経由の両方で tmux を起動する直前に同じ内容が表示されることを
TERM
確認しましたか?echo $TERM
tmux の設定は実際には同じではありません。本当に同じですか?
terminal-overrides
ある場所で必要な場合は他の場所でも必要になりますが、そうでない場合は必要ありません。xterm-kitty
両方のコンピューターに存在し、同じものであることを確認して下さい。 を確認してくださいinfocmp xterm-kitty
。異なる tmux バージョン。同じですか? 確認してください
tmux -V
。
答え2
ローカルマシンで tmux を使用していて、リモートマシンに ssh を実行している場合、インデックス付き (256 色) の代わりに (またはそれに加えて) RGB カラーを使用できることをリモート セッションが認識する方法はありません。これは、tmux の "Tc" オーバーライドがリモート セッションに表示されないためです。
これを回避するには、対応する端末の説明を変更します。デフォルト端末tmuxの設定、例えば、使用する設定を追加することでターミナルオーバーライド端末の説明用のテキストファイルに、tic
それを(各マシンで)コンパイルします。たとえば(デフォルト端末はtmux
):
infocmp -x tmux >foo
printf '\tTc,\n' >>foo
tic -x foo
キティはよくある質問、しかし「-x」は無視されますinfocmp
。
考慮すべき残りのポイントがいくつかあります。
作成されたバイナリファイルをコピーする
tic
信頼できない(複数の理由により)。リモート側で同じ端末記述が利用できる場合、リモートアプリケーションが端末記述を使用していると仮定すると、(より)一貫した動作が得られます。コンテンツむしろ名前端末の説明。
答え3
なんとか修正できました! 与えられたすべての回答の組み合わせに、重要な追加変数が 1 つ加わりました。
必要な手順:
- 使用される変数がすべてのホストとすべての tmux 内で同じであることを確認します
TERM
(最終的にはxterm-kitty
ホスト上で直接、およびtlux-256color
TMUX セッション内で使用しました)。ニコラス・マリオットに感謝。 Tc;
私が使用している端末のinfocmpに追加するには、このスニペットはトーマス・ディッキー氏によって提供されました:
infocmp -x tmux-256color >foo
printf '\tTc,\n' >>foo
tic -x foo
set -g fish_term24bit 1
fish に trucolor モードを強制的に使用させるために、config.fish に追加します。