본문 바로가기

Tmux에서 트루컬러 이맥스 사용하기

기술적인 이야기/이맥스 2020. 2. 8.
반응형

앞서 쓴 터미널에서 트루컬러 이맥스 사용하기에 대한 글의 연장선의 내용입니다. 터미널에서 24비트 트루컬러를 지원하더라도 Tmux 안에서 이맥스를 실행시킬 경우 색상이 이상하게 표시되는 경우도 있습니다. 이 경우는 아마도 tmux 가 사용하는 screen-256이라는 터미널 타입의 문제로 추측됩니다. 이 경우도 앞의 터미널 타입을 만드는 방식과 비슷한 방법으로 해결할 수도 있습니다.

우선 tmux 설정에 아래 내용을 추가합니다.

set -ga terminal-overrides ",st-256color:Tc"

이후 tmux 를 재시작합니다.

다음으로 아래 내용을 screen-24bit.terminfo 라는 파일에 저장합니다. 역시 위치도 상관은 없지만 셸에서 접근하기 편한 경로가 좋습니다.

# From [[info:efaq#Colors%20on%20a%20TTY][Colors on a TTY]]
# Use colon separators.
screen-24bit|screen with 24-bit direct color mode,
  use=screen-256color,
  setb24=\E[48:2:%p1%{65536}%/%d:%p1%{256}%/%{255}%&%d:%p1%{255}%&%dm,
  setf24=\E[38:2:%p1%{65536}%/%d:%p1%{256}%/%{255}%&%d:%p1%{255}%&%dm,
# Use semicolon separators.
screen-24bits|screen with 24-bit direct color mode,
  use=screen-256color,
  setb24=\E[48;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,
  setf24=\E[38;2;%p1%{65536}%/%d;%p1%{256}%/%{255}%&%d;%p1%{255}%&%dm,

그리고 위에서 작성한 파일이 있는 디렉터리에서 아래 커맨드를 실행합니다.

tic -x screen-24bit.terminfo

이제 screen-24bit 라는 터미널 타입이 생겼습니다. emacs를 아래 커맨드로 실행시켜 봅시다.

TERM=screen-24bit emacs -nw

이렇게 해서 색상이 제대로 보이면 성공이고 안 되면 또다시 삽질의 나락으로 들어가시면 됩...😭

터미널 안의 Tmux 안의 Emacs

 

약간의 트릭

이 방법으로 색상 문제를 해결 하더라도 상황에 따라 다른 문제 하나가 더 있을 수 있습니다. 예를 들어 Doom Emacs나 Spacemacs 등을 사용한다면 SPC q R 키 등으로 이맥스를 재시동 할 수 있는데 이 경우 터미널 타입이 원래대로 돌아가버려서 이맥스의 색상이 다시 이상해집니다. 이 경우 종료시키고 다시 위 커맨드로 띄울 수도 있지만 좀 귀찮은 편입니다.

개인적으로는 이 문제를 막기 위해 .zshrc.bashrc에 아래와 같은 설정을 한 줄 넣어 놓았습니다.

if [ $TERM = "screen-256color" ]; then
    export TERM='screen-24bit'
fi

tmux에서는 screen-256color라는 터미널 타입이 지정되니 tmux 안에서 기동 되는 셸에서는 터미널 타입을 screen-24bit로 바꿔버리는 트릭입니다. 이렇게 하면 emacs -nw 커맨드 만으로도 트루컬러 이맥스를 같이 사용할 수 있고, 이맥스 자동 재시동 시에도 색상이 바뀌는 문제를 막을 수도 있습니다. 그리고 tmux가 아닐 때는 터미널의 기본 터미널 타입이 사용되니 호환성 문제도 아마 없을 것 같습니다.

관련된 글들

 

터미널에서 Doom Emacs의 복사가 동작 안 하는 문제

터미널 환경이 원래 GUI랑은 조금 다르긴 해서 복사 및 붙이기(copy and paste) 환경이 호환이 안 되는 경우가 많다. macOS에서는 이 문제를 해결하기 위해서 pbcopy 나 pbpaste 같은 터미널 커맨드를 별도

seorenn.tistory.com

728x90
반응형

댓글