_NET_WM_NAME을 현재 Linux에서 실행 중인 명령으로 설정합니다.

_NET_WM_NAME을 현재 Linux에서 실행 중인 명령으로 설정합니다.

저는 X와 dwm과 함께 Arch Linux를 사용하고 있습니다. 나는 단순한 st가 아닌 내가 실행 중인 명령을 반영하는 st(이 형편없는 터미널)의 창 제목을 갖고 싶습니다. 예를 들어, CPU 사용량을 모니터링하기 위해 htop을 실행하는 경우 제목을 htop -st로 지정하고 싶습니다. 어떻게 해야 합니까?

편집: 열려 있는 터미널에서 기능을 캡처하는 대신 Xorg 서버에서 이 작업을 처리하고 싶습니다.

답변1

처럼xterm또는 대부분의 다른 터미널 에뮬레이터:

printf '\033]2;%s\033\\' whatever

나머지는 쉘이 결정합니다. 예를 들어 bash에서는 DEBUG트랩을 사용할 수 있습니다.

set_title(){
   local cmd=$BASH_COMMAND
   case $cmd in
   fg) cmd=$(jobs %); cmd=${cmd##"${cmd%  *}  "};;
   fg\ *|%*) cmd=$(jobs "${cmd#fg }"); cmd=${cmd##"${cmd%  *}  "};;
   esac
   printf '\e]2;%s\e\\' "${TERM%%-*} ${cmd//[$'\e\a']/#}"
}
trap set_title DEBUG

다음을 사용하여 해당 창 속성을 설정할 수도 있습니다.

xprop -id "$WINDOWID" -f _NET_WM_NAME 8u -set _NET_WM_NAME whatever

그러나 이것은 su, ssh, screen, tmux 등에서는 안정적으로 작동하지 않습니다.

관련 정보