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색 터미널 에뮬레이터

/dev/tty2대신 Ctrl+Alt+F2를 눌러 8색 터미널로 전환하면 다음과 같은 결과 가 나타납니다.

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가 완전히 자체적으로 수행할 수 있는 작업은 아닙니다.

그러나 스스로 할 수 있습니다. 클라이언트의 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

분명히 연결되지 않은 세션에서 창을 생성하는 경우(client_termname은 비어 있음) tmux가 기본값이 되고, 여러 클라이언트에 세션이 연결된 경우 가장 최근에 사용한 클라이언트의 TERM이 기본값이 됩니다.

쉘에서 이와 같은 작업을 수행하고 싶지 않은 경우 클라이언트 연결 후크를 사용하여 기본 터미널을 변경할 수 있습니다. 그러나 이는 기존 창이 아닌 새 창에만 적용됩니다.

또 다른 옵션은 항상 tmux-256color로 실행하고 외부 터미널이 256색을 수행할 수 없는 경우 tmux가 색상을 변환하도록 하는 것입니다.

Tc에 관한 FAQ의 모든 내용은 RGB 색상(트루 컬러)에 관한 것이며 귀하가 묻는 내용이 아닙니다.

관련 정보