TMUX 및 터미널 색상은 로컬 및 SSH를 통해 동일하지 않습니다.

TMUX 및 터미널 색상은 로컬 및 SSH를 통해 동일하지 않습니다.

내 터미널에 예쁜 테마를 적용하고 로컬 호스트에 tmux를 적용할 수 있는 도트파일이 많이 있습니다. 나는 키티, 피쉬, tmux를 사용합니다. 색상을 적절하게 정의하고 전체적인 일관성을 유지하기 위해 다음 파일을 사용합니다.

  • .Xresources
  • 키티.conf
  • fish_prompt.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로그인 시 env 변수를 xterm-kitty로 변경하세요.

이 모든 것이 어떻게 작동하는지 알려줄 수 있는 자료가 있으면 좋겠습니다! 감사해요!

편집하다 :

명확성을 위해 내가 가지고 있는 가치는 다음과 같습니다 TERM.

  • 로컬 호스트에서:xterm-kitty
  • tmux 내부 로컬 호스트에서:xterm-256color
  • SSH를 연 직후 원격 호스트에서:xterm-kitty
  • tmux의 원격 호스트에서:xterm-256color

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

또한 tmux 없이 원격 시스템에 로그인하면 또 다른 색상 조합이 생성된다는 사실도 확인했습니다(모든 곳에서 사용되는 동일한 fish 구성 파일).

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

답변1

default-terminaltmux 내부에 기본값을 설정합니다 TERM. 이것을 다음으로 설정하지 마십시오 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에서는 작동하지 않는 경우 가장 가능성이 높은 것은 다음과 같습니다.

  • tmux 외부에서는 다릅니다 TERM. echo $TERM로컬 컴퓨터와 SSH를 통해 tmux를 시작하기 직전에 동일한 내용이 표시됩니까 ?

  • tmux 구성은 실제로 동일하지 않습니다. 확실합니까? 한 곳에서 필요하면 terminal-overrides다른 곳에서도 필요할 것이고, 그렇지 않으면 필요하지 않을 것입니다.

  • xterm-kitty두 컴퓨터 모두에 존재하며 동일합니까 ? 확인하다 infocmp xterm-kitty.

  • 다른 tmux 버전. 그것들이 똑같다고 확신하나요? 확인하다 tmux -V.

답변2

로컬 시스템에서 tmux를 사용하고 원격 시스템으로 ssh를 실행하는 경우 원격 세션에서 색인 대신(또는 추가로) RGB 색상을 사용할 수 있음을 알 수 있는 방법이 없습니다(256 -그림 물감). 이는 tmux "Tc" 재정의가 원격 세션에 표시되지 않기 때문입니다.

이 문제는 다음에 해당하는 터미널 설명을 수정하여 해결할 수 있습니다.기본 터미널tmux 설정(예: 사용하는 설정을 추가하여)터미널 재정의터미널 설명을 위한 텍스트 파일에 추가하고 다음을 사용합니다.tic(각 머신에서) 컴파일합니다. 예를 들어(만약기본 터미널~이다tmux):

infocmp -x tmux >foo
printf '\tTc,\n' >>foo
tic -x foo

키티는자주하는 질문, 그러나 "-x"를 간과합니다.infocmp.

고려해야 할 몇 가지 남은 사항이 있습니다.

  • 생성된 바이너리 파일 복사하기tic(여러 가지 이유로) 신뢰할 수 없습니다.

  • 원격 측에서 동일한 터미널 설명을 사용할 수 있는 경우 원격 애플리케이션이 터미널 설명을 사용한다고 가정하면 (더) 일관된 동작을 얻을 수 있습니다.콘텐츠보다는이름터미널 설명 중

답변3

문제를 해결했습니다! 그것은 하나의 중요한 추가 변수와 함께 주어진 모든 답변의 조합이었습니다.

필수 단계:

  • TERM사용된 변수가 모든 호스트와 모든 tmux 내부에서 동일한지 확인합니다. (저는 xterm-kitty호스트에서 직접 및 tlux-256colorTMUX 세션 내부에서 사용하게 되었습니다.)니콜라스 메리어트 덕분에.
  • Tc;다음을 사용하여 내가 사용하는 터미널의 infocmp에 추가하세요 .Thomas Dickey가 제공한 이 스니펫:
infocmp -x tmux-256color >foo
printf '\tTc,\n' >>foo
tic -x foo
  • set -g fish_term24bit 1물고기가 트루컬러 모드를 사용하도록 하려면 내 config.fish에 추가하세요 .

관련 정보