xterm 창의 현재 이름을 얻을 수 있습니까?

xterm 창의 현재 이름을 얻을 수 있습니까?

이번 자유민주당 지도서는xterm의 제목을 변경하는 방법을 보여줍니다.

xtitle명령을 사용하여 이 작업을 수행할 수도 있다는 것을 알고 있습니다 .

내 스크립트는 이러한 유형의 기술을 사용하여 장기 실행 작업을 호출하기 전에 xterm 창의 제목을 변경합니다.

장기 실행 작업이 완료된 후 제목을 이전 값으로 복원할 수 있도록 xterm 창 이름을 변경하기 전에 추출하고 싶습니다.

이것은 xtitle과 반대되는 것입니다. 이것이 가능합니까?

답변1

현재 타이틀을 쿼리하기 위한 제어 순서가 있지만 일반적으로 보안상의 이유로 비활성화됩니다. 이는 악성 프로그램이 마치 키보드로 입력하는 것처럼 분류된 텍스트 파일에도 임의의 문자 시퀀스를 삽입하여 먼저 제목을 설정한 다음 다시 보고하도록 요청하는 것을 허용하기 때문입니다. 따라서 헤더 스택이 도입되었습니다.

다음 명령은 현재 창과 아이콘 제목을 스택에 저장합니다.

echo -ne '\e[22t'

그러면 제목이 다음과 같이 설정됩니다 my title.

echo -ne '\e]0;my title\007'

그러면 이전 창과 아이콘 제목이 복원됩니다.

echo -ne '\e[23t'

답변2

스크립트를 사용하세요 xtitle.

인터넷에는 다양한 변형이 있지만 저는 다음과 같은 것을 사용하는 경향이 있습니다.xprop

http://www.shelldorado.com/scripts/cmds/xtitle

답변3

간단한 경우(아마도 가장 일반적인 경우) 현재 xterm에 대한 프롬프트를 쿼리하고 를 사용할 수 있습니다 xprop -id $WINDOWID WM_NAME. 쉘 스크립트에서 조작할 값을 추출하려면 다음과 같이 더 비용이 많이 드는 작업을 수행할 수 있습니다.

   curtitle=`xprop -id $WINDOWID WM_NAME|awk '{print $3}'|xargs echo`

bash만 사용하기(awk 및 xargs 호출을 피하기 위해):

   curtitle=`xprop -id $WINDOWID WM_NAME`
   curtitle=`eval echo ${x##*=}`

첫 번째 예의 xargs echo와 두 번째 예의 eval은 xprop이 값 주위에 넣은 따옴표를 제거하기 위한 것입니다.

제목 표시줄의 문자열 대신 아이콘 이름을 얻으려면 WM_NAME을 WM_ICON으로 바꾸십시오.

답변4

귀하의 질문을 올바르게 이해했다면 변수를 확인하여 현재 xterm 제목을 얻을 수 있습니다 $PROMPT_COMMAND. 예를 들면 다음과 같습니다.

$ echo $PROMPT_COMMAND 
printf "\033]0;%s@%s:%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"

(가독성을 위해 줄바꿈)으로 설정할 수 있습니다.

PROMPT_COMMAND=${PROMPT_COMMAND:+$PROMPT_COMMAND; }'printf "\033]\
0;%s@%s%s\007" "${USER}" "${HOSTNAME%%.*}" "${PWD/#$HOME/~}"'

관련 정보