TMUX 및 터미널 색상은 로컬 및 SSH를 통해 다릅니다.

TMUX 및 터미널 색상은 로컬 및 SSH를 통해 다릅니다.

나는 localhost의 tmux를 사용하여 터미널에서 멋진 테마를 가질 수 있게 해주는 많은 도트 파일을 가지고 있습니다. 나는 키티, 피쉬, tmux를 사용합니다. 색상을 올바르게 정의하고 전체적인 일관성을 유지하기 위해 다음 파일을 사용합니다.

  • .X 리소스
  • 새끼 고양이 프로필
  • fish_tip.fish
  • .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 내의 localhost에서:xterm-256color
  • SSH를 연 후 원격 호스트에서 직접:xterm-kitty
  • tmux의 원격 호스트에서:xterm-256color

모든 파일은 git 저장소를 사용하여 동기화되며 모든 버전은 동일합니다. terminfo와 관련된 동일한 파일을 전송했습니다 . xterm-kitty또한,이것스크립트에서 모든 색상이 올바르게 표시되고 두 호스트 모두에서 동일하다는 것을 알 수 있습니다.

또한 tmux 없이 원격 시스템에 로그인하면 다른 색상 조합이 생성된다는 사실도 확인했습니다(어디에서나 동일한 물고기 프로필 사용).

여기에 이미지 설명을 입력하세요.

답변1

default-terminalTERMtmux 내에서 기본값을 설정합니다. 으로 설정하지 마세요 xterm-kitty. tmux는 xterm이나 kitty가 아닙니다. tmux-256color컴퓨터에 존재하는 경우 (선택)로 설정하고 infocmp tmux-256color, 그렇지 않은 경우 로 설정하십시오 screen-256color.

TERM마찬가지로 모든 터미널의 셸 구성 파일에 동일한 항목을 설정 하지 마세요 .

당신이 가지고 있는 라인은 tmux에게 설정을 terminal-overrides볼 때 터미널이 트루(RGB) 색상을 지원한다는 것을 의미합니다(그래서 ).TERMxterm-kittyTc

TERMinside tmux는 tmux 내부의 프로그램에게 그들이 말하는 내용(tmux)을 알려줍니다. TERM외부 tmux는 tmux에게 통신 중인 개체(이 경우에는 키티)를 알려줍니다.

로컬에서 실행되지만 SSH를 통해 실행되지 않는 경우 가장 가능성 있는 시나리오는 다음과 같습니다.

  • TERM외부 tmux와는 다릅니다. echo $TERMSSH를 통해 tmux를 시작하기 직전에 로컬 컴퓨터에 동일한 콘텐츠가 표시됩니까 ?

  • 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

문제를 해결해보세요! 이는 주어진 모든 답변과 하나의 중요한 추가 변수를 조합한 것입니다.

필요한 단계:

infocmp -x tmux-256color >foo
printf '\tTc,\n' >>foo
tic -x foo
  • set -g fish_term24bit 1물고기가 트루 컬러 모드를 사용하도록 강제하기 위해 내 config.fish에 추가되었습니다 .

관련 정보