[PuTTY 홈페이지]
공개프로그램이면서 크기도 작고 깔끔하다. 상용 SSH 클라이언트의 경우 각 라인 첫번째 컬럼에 나오는 한글이 깨어져서 보이는데 PuTTY 는 그런 일도 없다.
위 홈페이지에서 한글을 사용하기 위해서는 레지스트리를 수정하여야 했으나, 이제 한글 지원 PuTTY 가 배포되었기 때문에 (아래에 다시 설명함) 그럴 필요 없음.
putty 0.52에서 한글이 그냥 잘 된다는 분도 계시던데,
저는 잘 안 되었다가, 해결해서 tip을 올립니다.
우선 putty 0.52를 다운받고, (http://www.chiark.greenend.org.uk/~sgtatham/putty/)
session을 하나 만들어서 save합니다.
regedit를 실행해서 PuTTY(혹은 SimonTatham)를 검색해서
하위 항목에 sessions중 한글 사용을 원하는 session을
선택합니다. 거기서 FontCharSet이 0으로 되어 있는데,
그걸 16진수 81(10진수 129)로 바꾸어 주면 됩니다.
거기에다, shell에서 LANG=ko_KR.EUC라고 설정하고,
vi에서 set encoding=euc-kr이라고 설정하면
한글 입력 및, 커서 이동시 한글이 안 깨어지고,
x,dw 등등이 2byte 단위로 잘 됩니다.
혹시라도 한글 사용 때문에 고생하셨던 분들은 도움이 되길.. ;-)
HKEY_CURRENT_USER - Software - SimonTatham - PuTTY - Sessions 에 각 세션들이 저장되어 있다.
(내가 무슨 부귀영화를 누리자고 이거에 손을 대서... 첩첩산중 기행기)
애초에 시작은 우연히 트위터에서 보고 이 테마 스크린샷(홈페이지 [2] 참고)에 반해서, gvim에 적용하는 것이었다. 이게 잘 적용이 되고 나니까 욕심이 생겼는데,
putty를 써서 리눅스 서버에 접속을 할 때, putty 배경색과 글자색을 검은색과 흰색을 또는 그 반대로 했더니 너무 강했다. 그리고 여러 서버에 접속할 때 어느 창이 어느 서버에 접속한 창인지 분간하기도 어려워서, 각 서버 세션마다 배경색을 적당히 밝은 계통으로 주었는데... 문제는 검은색,흰색,그 외 어떤 색을 택하더라도, ls의 출력이나 vim의 신택스 하일라이트 기능에서 일부 색상이 배경과 비슷해져서 정확히 알아보기가 힘들었음.
그래서 하는 김에 putty에도 적용해 보았다.
putty 설정은 [2]에서 다운로드받은 파일을 압축을 풀고 putty-colors-solarized 폴더에 들어가 보면, solarized_dark.reg와 solarized_light.reg 파일이 있다. 이걸 에디터로 열어서
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\Solarized%20Dark]
"Colour0"="131,148,150"
...
여기에서 Solarized%20Dark 부분에 내 putty 에 있는 기존 세션 이름으로 바꿔써 준 후, 시스템에 병합시키면 기존 세션의 컬러 설정이 바뀐다.
이게 나를 아주 공황상태에 빠뜨린 사건인데...
putty에 solarized를 적용하고 어느 순간 보니까, ls를 했을때 파일 속성별로 색상이 다르게 나오는 게 제대로 적용되질 않더라.
(solarized를 적용한 상태에서 ScreenUtility를 띄웠을 때만 색상이 제대로 안 나온다. 잘 보면 아예 색상이 똑같은 건 아니고, t.pl 같은 실행파일은 좀 어둡게 나온다)
screen을 띄우는 것이 ls의 출력에 영향을 준다면, 어째서 예전에는 아무 문제가 없었는가?
solarized 컬러를 putty에 적용하는 것은 putty의 색상 팔레트만 변경하는 건데, 왜 서버 쪽에서 ls의 출력이 영향을 받는가?
putty로 접속하면, 터미널 타입($TERM 환경변수로 확인가능)이 xterm으로 적용된다. (putty 설정에 접속-터미널 타입 문자열)
로긴할 때 /etc/profile.d 아래 있는 스크립트들이 실행되는데, 이 중에 colors.sh가 있다. (csh라면 colors.csh)
# color-ls initialization
alias ll='ls -l'2>/dev/null
alias l.='ls -d .*'2>/dev/null
COLORS=/etc/DIR_COLORS
[-e"/etc/DIR_COLORS.$TERM"]&&COLORS="/etc/DIR_COLORS.$TERM"[-e"$HOME/.dircolors"]&&COLORS="$HOME/.dircolors"[-e"$HOME/.dircolors.$TERM"]&&COLORS="$HOME/.dircolors.$TERM"[-e"$HOME/.dir_colors"]&&COLORS="$HOME/.dir_colors"[-e"$HOME/.dir_colors.$TERM"]&&COLORS="$HOME/.dir_colors.$TERM"[-e"$COLORS"]||returneval`dircolors --sh "$COLORS"`[-z"$LS_COLORS"]&&returnif! egrep -qi "^COLOR.*none"$COLORS>/dev/null 2>/dev/null ;then
alias ll='ls -l --color=tty'2>/dev/null
alias l.='ls -d .* --color=tty'2>/dev/null
alias ls='ls --color=tty'2>/dev/null
fi
중간 단락을 보면, 시스템에 있는 /etc/DIR_COLORS를 비롯해서 여러 경로에서 설정 파일을 찾는다. 위에서 아래로 내려오며 계속 덮어쓰니까, 존재하는 파일들 중 제일 아래에 매치되는 게 적용될 것이다.
터미널 타입이 xterm이고, 이 서버에는 /etc/DIR_COLORS.xterm이 있다. 따라서 이 파일이 선택된다.
dircolors --sh "$COLORS"를 실행하면 LS_COLORS변수를 세팅하고 export 하는 문구가 출력되며, 이걸 eval로 실행하여 적용한다.
(여기까지가 로그인 직후의 상황)
이제 screen을 실행하면, screen 위에서 터미널 타입은 screen이 된다.
그리고 screen위에서 쉘을 띄우는 것도 로그인 쉘로 간주하기 때문에, 또다시 저 colors.sh가 실행된다.
스크린 타입이 screen인데, DIR_COLORS.screen이라는 파일은 없고, 따라서 이번엔 /etc/DIR_COLORS 파일이 선택된다.
그런데 DIR_COLORS와 DIR_COLORS.xterm의 내용이 다르다! 예를 들어 디렉토리 이름의 경우
DIR_COLORS.xterm 에는 DIR 00;34, blue로 지정된다.
DIR_COLORS 에는 DIR 01;34, bold, blue로 지정된다.
이제 이 파일을 가지고 dircolors를 수행하고 eval을 거치면, LS_COLORS 변수의 값이 바뀐다. 디렉토리 이름이 굵게 표시되게 되었다.
요컨데, 지금까지도 screen을 띄우고 나면 ls 출력의 색상이 달라지고 있었던 거다.
(여기까지가 screen을 띄웠을 때의 상황)
그런데 나는 putty 설정에서(설정-창-색깔), "굵은 글씨를 다른 색깔로 표시"를 선택해 둔 상태였다. 그리고 putty의 팔레트 설정에서는(설정-창-색깔), 기본 ANSI색상 별로, 기본 글꼴과 굵은 글꼴용 색상을 지정할 수 있게 되어 있었다.2 이렇게 하면, 볼드체로 표시할 글자를 보통 폰트에다가 저 지정된 색상을 입혀서 출력한다.
기존에 사용하던 세션 설정에서는 굵은 글씨의 색상은 보통 글씨의 색상과 비교해서 단지 좀 밝게 보이도록 되어 있었기 때문에, 나는 색상이 달라졌다는 걸 깨닫지 못했던 것이었다. 그런데, solarized 테마는 굵은 글씨의 색상을 아예 무채색 계열로 바꿔버려서, 원래 글꼴의 색이 빨강이든 파랑이든, 볼드체가 되면 무채색으로 나오게 되어 있었던 것이다. (...)
putty 설정에서 "굵은 글씨를 다른 색깔로 표시"를 끄고, screen을 띄워 보고는... 망연자실:
ls는 나름 색상을 잘 처리해서 출력하고 있었는데, solarized 적용된 putty가 그걸 무채색으로 바꾸고 있었던 것.
부랴부랴 기존에 사용하던 putty에서, 저 옵션이 켜져 있는 상태로 screen을 띄우기 전후를 비교해봤더니...
위와 아래의 색이 다르다. screen을 띄우면 색이 밝아지고 있었다. (어떤 날은 심볼릭 링크의 색이 너무 밝아 불편하다는 느낌을 받고 어떤 날은 아니었는데... 그걸 기분탓으로만 여기고 있었다니 -_-;;;)
이제 원리와 원인을 다 알았으니, 해결책은 쉽다. 나는 딱히 굵은 글꼴로 바뀌는 걸 원치 않기 때문에, xterm에서의 설정을 screen에서도 쓸 수 있게 바꾸면 되겠다.
/etc/DIR_COLORS.xterm 파일을 ~/.dircolors로 복사한다. 이 경로가 우선순위가 더 높으니 항상 이게 적용될 것이다.
그런데 이 xterm용 파일 안에는 "screen" 터미널 타입에 대한 언급이 없어서, 이 상태로는 screen을 띄웠을 때 적용이 안 된다. 터미널 타입을 추가해줘야 한다.
# Below, there should be one TERM entry for each termtype that is colorizable
TERM linux
...
TERM color_xterm
TERM screen # 여기에 추가