본문 바로가기

터미널에서 트루컬러 이맥스 사용하기

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

저는 터미널로 iTerm2를 사용합니다. 그리고 iTerm2는 트루컬러(24bit True Color)를 지원하는 터미널입니다. 그런데 이상하게도 이맥스(Emacs)를 터미널 모드로 띄워보면 GUI 모드와 색상이 다른 경우를 종종 볼 수 있습니다. 이는 사용하는 터미널 타입이 트루 컬러 모드가 아니기 때문에 나타나는 어쩔 수 없는 증상입니다.

터미널에서 트루컬러를 제대로 지원하기 위해서 약간의 트윅(tweak)이 필요합니다. 참고로 이 트윅은 개인적으로 macOS에서 iTerm2로만 확인했기 때문에 다른 OS나 터미널 앱에서는 어떻게 되는지는 잘 모른다는 것에 주의 부탁드립니다.

우선 xterm-24bit.terminfo 라는 파일을 만들고 아래 내용을 붙여 넣습니다.

xterm-24bit|xterm with 24-bit direct color mode,
   use=xterm-256color,
   sitm=\E[3m,
   ritm=\E[23m,
   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 -o ~/.terminfo xterm-24bit.terminfo

이 명령이 실행되면 이제 xterm-24bit라는 터미널 모드를 사용할 수 있습니다. 셸의 터미널 모드는 TERM 환경변수로 지정할 수 있으며 아래의 커맨드로 현재 셸의 터미널 타입을 바꿀 수 있습니다.

export TERM="xterm-24bit"

이후 emacs -nw 커맨드로 터미널에서 이맥스를 실행시켜서 확인해 봅시다. 참고로 -nw 옵션은 GUI용으로 빌드된 이맥스를 터미널에서도 기동시킬 수 있게 해주는 옵션입니다.

이상하게도 GUI 버전 보다 더 아름답게 느껴지네요?

잘 동작 하나요?

 

필요하다면 위 TERM 환경 변수를 설정하는 코드를 ~/.zshrc~/.bashrc와 같은 셸 초기화 스크립트에 넣어놓으면 편하게 쓸 수 있습니다.

다만 특정 터미널 도구에서 24bit 색상 모드는 문제가 발생하는 경우가 있습니다. 이럴 때는 트루 컬러를 사용할 소프트웨어에만 위 터미널 모드를 적용하도록 하는 방법이 있습니다. 예를 들어 일상적으로는 xterm-256color등의 표준(?) 터미널을 사용하다가 emacs에서만 트루 컬러 모드를 적용하기 위해 아래와 같은 alias를 만들 수도 있습니다.

alias emacs="TERM=xterm-24bit /usr/local/bin/emacs -nw"

이렇게 하면 이 alias가 적용된 셸에서 emacs 커맨드는 항상 트루 컬러 모드로 동작하게 됩니다. 물론 emacs의 경로는 자신의 상황에 맞게 입력해야겠지요?

관련된 글들

 

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

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

seorenn.tistory.com

728x90
반응형

댓글