앞서 쓴 터미널에서 트루컬러 이맥스 사용하기에 대한 글의 연장선의 내용입니다. 터미널에서 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
이렇게 해서 색상이 제대로 보이면 성공이고 안 되면 또다시 삽질의 나락으로 들어가시면 됩...😭
약간의 트릭
이 방법으로 색상 문제를 해결 하더라도 상황에 따라 다른 문제 하나가 더 있을 수 있습니다. 예를 들어 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가 아닐 때는 터미널의 기본 터미널 타입이 사용되니 호환성 문제도 아마 없을 것 같습니다.
관련된 글들
'기술적인 이야기 > 이맥스' 카테고리의 다른 글
파일/디렉토리 경로와 관련된 Emacs Lisp 함수들 (0) | 2020.03.23 |
---|---|
파일 읽어서 내용 수정하고 저장하기 (Emacs Lisp) (0) | 2020.03.23 |
터미널에서 트루컬러 이맥스 사용하기 (0) | 2020.02.07 |
Org Mode 테이블 스프레드시트 (1) | 2020.01.31 |
Org Mode 문서에 외부 이미지 넣기 (0) | 2020.01.14 |
댓글