tmuxは256色の端末で256色を出力し、8色の端末で8色を出力します。

tmuxは256色の端末で256色を出力し、8色の端末で8色を出力します。

tmux256色モードを自動的に選択したいと思います。つまり、環境変数があります。

TERM=tmux-256color

~へ tmux環境変数があるとき

TERM=xterm-256color

設定しました外部

基本動作

256色ターミナルエミュレータ

現在の動作は、tmuxすべての場合に8色モードを選択することです。 256色をサポートするターミナルエミュレータ(Gnome Terminalやxtermなど)を使用し、256色をサポートしていることを確認してください。

echo $TERM; tput colors
# xterm-256colors
# 256

それから始めてくださいtmux。デフォルトではtmux8つの色に切り替わります。

echo $TERM; tput colors
# screen
# 8

8色ターミナルエミュレータ

8色の端末に切り替えると、つまり/dev/tty2Ctrl + Alt + F2を押して切り替えると、次の結果が表示されます。

echo $TERM; tput colors
# linux
# 8

内側tmuxほど古い

echo $TERM; tput colors
# screen
# 8

強制256色モード

tmux256色モードを強制的に適用できますか?以下を追加して~/.tmux.conf

set -s default-terminal "tmux-256color"

ただし、これは次の場合にも当てはまります。外部端末エミュレータ256色は最初からサポートされていません。これは私が望むものではありません。

適応型256カラーモード

持つ一つの質問そしてよくある質問GitHubでは、ステートメントは次のいずれかを設定します(人々は競合するパラメータを報告します)。

set -ga terminal-overrides ",xterm-256color*:Tc"
set -sa terminal-overrides ",xterm-256color*:Tc"
set -ga terminal-overrides ",*256col*:Tc"
set -sa terminal-overrides ",*256col*:Tc"

端末のカラーモードを選択する必要がありますtmuxが、マイインストール(Archのtmux 3.0)では機能しません。

tmux現在、端末エミュレータがサポートしている色に応じて8色または256色を選択する明確な方法はありますか?

答え1

たとえば、xterm-256colorを使用して端末から切り離し、xtermを使用して端末に再接続すると、すでに実行されているプログラムでTERMを変更できないため、tmux自体が完全に実行できる操作ではありません。

しかし、自分で行うことができます。クライアント用語は client_termname 形式で提供されます。したがって、PS1や.profileなどに次のような内容を入れることができます。

if [ -n "$TMUX" ]; then
    T=$(tmux display -p '#{client_termname}')
    case "$T" in
    *-256color)
         export TERM=tmux-256color
         ;;
    *)
         export TERM=tmux
         ;;
    esac
fi

明らかに接続されていないセッションでPodを作成した場合(client_termnameは空です)、デフォルトはtmuxです。複数のクライアントにセッションが関連付けられている場合、デフォルトは最近使用したクライアントのTERMです。

このようにシェルで実行したくない場合は、クライアント側の接続フックを使用してデフォルトの端末を変更できます。ただし、これは既存のウィンドウではなく新しいウィンドウでのみ機能します。

別のオプションは、常にtmux-256colorで実行し、外部端末が256色を実行できない場合、tmuxに色をダウンコンバートさせることです。

Tcに関するFAQのすべてはRGBカラー(トゥルーカラー)に関するものであり、あなたが尋ねるものではありません。

関連情報