tmux
が256色モードを自動的に取得するようにしたい、つまり環境変数を設定したい
TERM=tmux-256color
insidetmux
環境変数の場合
TERM=xterm-256color
設定されましたoutside。
現在の動作では、tmux
はどのような場合でも8色モードを選択します。256色をサポートするターミナルエミュレーター、つまりGnome Terminalまたはxtermを使用し、256色をサポートしていることを確認します。
echo $TERM; tput colors
# xterm-256colors
# 256
次に、tmux
を開始します。デフォルトでは、tmux
は8色に切り替わります。
echo $TERM; tput colors
# screen
# 8
代わりに、8色の端末に切り替える場合、つまりCtrl + Alt + F2を押して/dev/tty2
に切り替えると、次のようになります。
echo $TERM; tput colors
# linux
# 8
tmux
の内部は同じ古い
echo $TERM; tput colors
# screen
# 8
tmux
に256色モードを選択させることができます~/.tmux.conf
に以下を追加します
set -s default-terminal "tmux-256color"
ただし、これは、外部端末エミュレーターが最初から256色をサポートしていなかった場合にも当てはまります。これは私が望むものではありません。
GitHubには 問題 と [〜#〜] faq [〜#〜] があります(人々は矛盾するパラメーターを報告しています)
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色のいずれかを選択させる決定的な方法はありますか?
たとえば、xterm-256colorを使用して端末からデタッチし、xtermを使用して端末に再接続した場合、すでに実行されているプログラムのTERMを変更できないため、これはtmuxが完全に実行できることではありません。
ただし、自分で行うことはできます。クライアントのTERMは、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
明らかに、これは、接続されていないセッションでペインを作成する場合はデフォルトでtmuxになり(client_termnameは空になります)、複数のクライアントに接続されているセッションがある場合は、最後に使用したクライアントからTERMになります。
このようにシェルで実行したくない場合は、クライアントに接続されたフックを使用してdefault-terminalを変更できますが、これは新しいペインにのみ適用され、既存のペインには適用されません。
もう1つのオプションは、常にtmux-256colorで実行し、外部の端末が256色を実行できない場合にtmuxに色を変換させることです。
FAQ Tcに関するものはすべてRGBカラー(トゥルーカラー)に関するものであり、あなたが求めているものではありません。