· KLDP.org · KLDP.net · KLDP Wiki · KLDP BBS ·
Linuxdoc Sgml/Xterm-Title

xterm-title mini howto

xterm-title mini howto

winni@xpilot.org

version 1.3 1996년 10월 22일 번역: 최종환 saxboy@saxboy.pe.kr
다음은 xterm-title mini howto를 번역한 것입니다. 번역하면서 우리말로 옮겨서 어색할 것 같은 부분은 그냥 영어로 썼습니다. 그리고 번역은 의역을 위주로 하였고 저자의 의도와 어긋나지 않는 범위에서 약간의 말을 바꾼 곳도 있습니다. 참고로 저자가 필리핀인 인듯 한데, 이름에 특수 문자가 있는듯..해서 글자가 깨진 관계로 E-mail address만을 표기했습니다.

1. 소개

"귀찮지 않아요?" 라고 대부분 물어봅니다. 전 xterm -T "쓰고 싶은말" \ -n "아이콘 이름도 바꿀수 있네.." & 라고 써서 xterm 타이틀바에 쓰고 싶은 말을 씁니다. 그렇게 하면 되겠지만, xterm을 띄우고 나서 타이틀 바를 바꾸고 싶으면 어떡하죠?

xterm이 떠있을때 타이틀을 바꾸고 싶으면 특수문자열을 보내주면 됩니다. 이런 특수한 문자열을 "escape sequence"라고 부르고, 동작은 하지만 화면에는 나오지 않는 것이 보통이죠. 예를 들어서 <ctrl-v><Esc><c><Enter>를 누르면 xterm을 리셋시킬수 있습니다. (화면을 지우는 것 말입니다. ) 이때 <ctrl-v>는 bash가 <esc><c>를 알아먹게 하려고 쓰는 겁니다.

저는 키 여러개를 누르는 것을 <>로 구분하니까 주의하세요.

그러면, xterm의 타이틀바와 아이콘 이름을 바꾸려면 (xterm이 떠 있을때) 다음 escape-sequence를 주세요.

<esc> <]> <2> <;> 타이틀 바 이름을 바꿀때

<esc> <]> <1> <;> 아이콘 이름을 바꿀때

이 문자열을 xterm이 알아먹게 만들려면 커맨드라인에서 치지 말고, 'echo'프로그램을 사용하세요.

echo -e "\033]2; 쓰고 싶은 말. \007"
이미 예상했겠지만 \033은 esc를 8진수로 쓴 것이고 '-e'는 echo가 이런 식으로 써도 알아듣게 만들어 주는 옵션입니다. 문자열을 다 썼으면 "이쁘게 삑삑거리는" <ctrl-g>로 끝내야 합니다.

위에서 본 것을 써먹기 좋은 곳이 있는데 바로 커맨드프롬프트를 xterm타이틀에 쓰는겁니다. ? 커맨드프롬프트를 이렇게 쓴다고 생각해봐요.

   export PS1='\u@\h:\w> '
그러면 커맨드 프롬프트가 이렇게 보이겠죠.
   winni@FeilSurf:~/mail>
이때 디렉토리를 "/somewhere/else"로 옮기면 어떻게 될까요? 그렇죠, 프롬프트가 길어져서 타이핑할 자리가 줄어들겠죠. 이렇게 말입니다.
   winni@FeilSurf:/somewhere/else 
좀 이상하지만 타이틀 바에다가 이렇게 쓰고 싶다면...
   export PS1='\033]2; \u@\h:\2 \007bash> '
그러면 escape-sequence는 xterm으로 들어가고 프롬프트에는 이것만 남습니다.
   bash> _
유감스럽지만 PS1은 60자정도까지만 쓸 수 있고, 그래서 아무때나 위에 있는 것처럼 하면 되는 것 아닙니다. 'cd'같은 쉘 내부 명령어를 바꿔서 위와 같이 할 수도 있지만, 그러면 스크립트를 돌릴때 타이틀바가 아주 이상하게 되어 버리죠. (cd할 때 마다 타이틀바가 바뀌니까 말이죠. ) (역주: alias cd '\033]2; .... ' <- 이런 식으로 쓰면 )

제일 좋은 방법은 환경변수 "PROMPT_COMMAND"를 바꾸는 방법입니다. 이 변수에 있는 내용은 프로그램이 실행되고, bash가 프롬프트를 다시 찍기전에 치환됩니다. 다음과 같이 하면 네트웍을 쓸수 있는 곳에서 xterm을 많이 열어두었을때 유용하게 쓸수 있습니다.

   export PROMPT_COMMAND='echo -ne "\033]2;$LOGNAME$HOST  Dir: $PWD\007\033]1;$LOGNAME@$HOST\007"'
특히 윈도우매니저에서 "window list"에서도 제대로 보입니다. 완벽을 기해서 xterm안에 있을때만 이변수가 셋팅되도록 하면 됩니다.
   if [ "$TERM" = "xterm" -o "$TERM" = "xterm-color" -o \
        "$TERM" = "rxvt" -o "$TERM" = "vs100" ]
   then 
     PS1='bash> '
     PS2='bash>> '
     PS1='bash>>> '

     export PROMPT_COMMAND='echo -ne "\033]2;$LOGNAME$HOST  Dir: $PWD\007\033]1;$LOGNAME@$HOST\007"'
   fi

"bash>"를 프롬프트에 써주는 것은 커맨드라인이 안정적이도록 도와줍니다. gnuplot이나 ncftp, gap, kash같은 프로그램들은 자기 이름을 쓰는 경우가 많기 때문입니다. 이렇게까지 해도 ytalk같이 서브쉘을 부르는 프로그램에서는 또 엉망이 되죠. 그러면..

   unset PROMPT_COMMAND
를 해 주세요.

linux 즐겁게 쓰세요 - winni@xpilot.org

CREDITS:

Ville Voutilainen vvoutila@raita.oulu.fi Noticed the ;s are missing from the escape-sequence in the "first half" of the document.

PS:

다른 프로그램들에서 곧바로 "escape-sequences"를 쓰지 마세요. (역주: 커맨드라인에서 그냥 쓴다거나 하는 식으로...) 프로그램이 환경변수 '$TERM"에서 받도록 그냥 두세요. 자세한 사항은 tput(1)을 보면 됩니다. ( man 1 tput 이라고 하면 됩니다. )

PS2:

xterms에서 쓰는 escape-sequence들을 알고 싶으면 rxvt소스코드를 보세요. "doc/"디렉토리 안에 "xterm.seq"라는 화일이 있습니다.




sponsored by andamiro
sponsored by cdnetworks
sponsored by HP

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2010-01-29 00:25:34
Processing time 0.0168 sec