tmux가 "default-terminal" 설정을 무시하는 이유는 무엇입니까?

tmux가 "default-terminal" 설정을 무시하는 이유는 무엇입니까?

현재 기울임꼴 글꼴은 tmux 외부에서만 작동하므로 tmux 내에서 제대로 작동하기를 원합니다. 연구에 따르면 이는 설정을 통해 수행할 수 있으므로 default_terminaltmux.conf에 다음이 있습니다. 그러나 이것은 아무것도 달성하지 못하는 것 같습니다. 내 이해는 이것이 $TERM을 설정해야 하지만 여전히 로 설정되어 있다는 것입니다 . screen로 시작하는 tmux를 실행하더라도 여기서 무슨 일이 일어나고 있는 걸까요?TERM=tmux-256colorscreen

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

答え1

나는 터미널 데이터베이스 screen와 그 파생물이 screen-256color이탤릭체 텍스트에 대한 지원을 전혀 선언하지 않는다고 생각합니다. 이는 명백할 수 있습니다. 예:

tput sitm | xxd

...인쇄아무것도 없다screen, 이는 터미널이 -like로 선언할 때 요청 시 기울임꼴 모드로 전환하도록 지시하는 이스케이프 시퀀스가 ​​없음을 의미합니다 .

그러나 적어도 RHEL 9 호스트에서는 tmux TERM위의 명령줄이 인쇄하는 것처럼 식별자 데이터베이스가 기울임꼴 모드를 지원합니다.

00000000: 1b5b 336d                                .[3m

이후 다음을 통해 지원을 테스트할 수 있습니다.

echo $(tput sitm) test $(tput sgr0)

, 여기서 "test"라는 텍스트는 이탤릭체로 인쇄되어야 합니다.

sitm텍스트의 색상과 모드를 다시 기본값으로 재설정하는 tput동안 기울임꼴로 전환하는 데 필요한 이스케이프 시퀀스를 생성하는 터미널 불변 옵션입니다 ("SGR" 약어는 "그래픽 렌더링 선택"을 나타냄).sgr0

하다아니요TERM자신이 무엇을 하고 있는지 모르고 시스템이 어떤 식으로든 손상되었다고 확신하지 않는 한, 쉘이나 터미널 에뮬레이터가 알려진 곳을 제외한 모든 곳에 설정하십시오. TERM터미널 에뮬레이터를 지정하면 쉘이 이를 알 수 있는 방법이 없습니다(글쎄, 그것은 단지 알 수 있다통과하다TERM먼저 문의해 보세요. 그렇죠? )

TERM나는 수년에 걸쳐 얼마나 많은 사람들이 잘못된 장소에 설치하지 않도록 경고를 받아야 하는지 모르겠습니다 (실제로는모두장소), 그러나 인터넷에서의 확산은 분명합니다. 단, 설정하는 데 너무 오랜 시간이 걸리지 않도록 하십시오. 그렇지 TERM않으면 절대적으로, 공격적으로, 진심으로 하나의 터미널 에뮬레이터만 사용하도록 확인하지 않는 한 뭔가가 망가질 가능성이 높습니다. 하지만 당신은 모릅니다. 또한, 제가 말했듯이, 설정이 필요하다면 TERM시스템 어딘가에서 시스템이 손상될 것입니다. 이는 먼저 거기에서 무언가를 손상시키지 않는 한 충분히 현대적인 OS에서는 이상한 일입니다.

마찬가지로, tmux의 옵션을 또는 또는 파생 항목( ) 이외의 것으로 설정하지 마십시오 default-terminal. 매뉴얼 페이지에서는 합당한 이유로 이렇게 하지 말라고 경고합니다.screentmux{screen,tmux}{.,-}*tmux

tmux가 제대로 작동하게 하려면 다음을 수행하세요.~ 해야 하다"screen", "tmux" 또는 그 파생 항목으로 설정합니다.

멀티플렉서는아니요set-option default-terminal xterm-256color"Xterm" 을 제거했다고 생각한다면 set-option terminal-overrides ...아마도 "해킹"을 재고하게 만들 수 있는 일련의 문제가 발생하기를 기다리고 있을 것입니다. 터미널에서 수행하는 작업에 따라 첫 번째 해킹 등을 "수정"하기 위해 추가 해킹이 필요 없이 올바른 렌더링이 미묘하게 깨집니다.

tmux나는 이것이 기본적으로 사용된 이유가 당시에 인기가 있었고 terminfo 데이터베이스가 이를 지원했기 때문이라고 생각합니다 (참신하기보다는). 오늘날 나는 많은 배포판이 이를 명시적으로 지원한다고 생각하므로 (또는 설치된 terminfo 데이터베이스에 따라 유사한 파생물) 그 이상도 그 이하도 아닌 딱 필요한 것일 수 있습니다.screenTERMscreentmuxtmuxset-option default-terminal tmuxtmux-256color

答え2

제가 파티에 늦을 수도 있지만, 누군가 여기에 도착하는 데 도움이 될 수도 있습니다. 트루 컬러 설정과 관련하여 이 문제와 몇 가지 다른 문제가 발생했습니다. 아직 이 내용을 배우는 중이므로 여러 가지 수정 사항이 혼합되어 있을 수 있지만 tmux-256color설정 방법과 트루 컬러 작업/단계에 대한 정보는 다음과 같습니다. .

  1. TERMalacritty 구성에서 var를 변경하는 것은 권장되지 않습니다 . 이 작업은 파일 .tmux.conf에서 수행 해야 합니다.

  2. 몇 시간 후에 내가 tmux에 대해 발견한 중요한 세부 사항 중 하나는 특정 구성이 다음을 수행하지 않는 한 다시 로드되지 않는 것 같다는 것입니다.모든 세션을 종료하세요. 따라서 새로운 내용이나 수정 사항을 시도할 때 세션에서 작업하고 다시 로드할 때마다 세션을 종료하여 변경 사항이 적용되는지 확인하세요.이것이 (tmux new / :kill-session) 워크플로입니다..

  3. 기본 터미널을 으로 설정하기 전에 tmux-256color두 가지 작업을 수행했습니다. (이 부분이 실제로 관련이 있는지 아니면 세션을 종료해야 하는 2번 지점에 불과한지 현재 제가 알아낸 것입니다.)

  • 설정하다alias tmux="tmux -2"
  • tmux-256color의 terminfo 구성 파일을 가져옵니다.sudo apt install ncurses-term
  1. 나는 tmux 3.2를 가지고 있으며 다음과 같이 터미널과 기능을 설정하고 있습니다.
set -g default-terminal "tmux-256color" 
set -as terminal-features ",xterm-256color:RGB"

어쨌든 포인트 3과 4는 문제와 그다지 관련이 없을 수 있으므로 포인트 2가 원인일 수 있습니다. 하지만 3번과 4번은 다음 도전에 직면할 사람에게 맡기겠습니다.

関連情報