제목 표시줄에 xterm의 크기를 인쇄할 수 있습니까? WxH
터미널 크기를 조정할 때마다 업데이트되는 것과 같은 간단한 것을 원합니다 .
답변1
환경 변수 $COLUMNS
와 $LINES
. 그런 다음 문서화된 이스케이프 코드를 통해 헤더를 설정할 수 있습니다.Bash 프롬프트 HOWTO에서. 다음은 제목을 설정하는 일회성 명령입니다.
# The title text is the stuff between ; and \a
printf "\e]0;${COLUMNS}x${LINES}\a"
창 크기를 조정할 때 제목을 업데이트하는 방법이 있는지 모르겠습니다.그런 다음 터미널 크기가 변경될 때 xterm이 보내는 SIGWINCH 신호를 캡처할 수 있습니다. Bash를 사용하는 경우 다음을 입력하세요 ~/.bashrc
.
function update_title {
printf "\e]0;${COLUMNS}x${LINES}\a"
}
trap -- update_title SIGWINCH
경고하다:이 솔루션이 이상한 상호 작용을 일으킬 수 있다는 느낌이 듭니다. 창 크기를 조정할 때 일부 터미널 응용 프로그램이 이상하게 작동하는 것을 발견하면 위의 트랩을 비활성화하고 문제가 지속되는지 확인하십시오.
답변2
이것은 xterm에 내장된 기능이 아닙니다.
해당 터미널에서 대화형 셸을 실행하는 경우 프롬프트가 표시될 때마다 창 제목을 업데이트하도록 할 수 있습니다. 널리 사용되는 모든 쉘의 경우 변수 COLUMNS
및 는 LINES
터미널의 현재 크기를 반영하도록 업데이트됩니다. 프롬프트의 일부로 창 제목에 이스케이프 시퀀스를 설정할 수 있습니다(이스케이프 시퀀스의 너비가 0임을 쉘에 알려야 합니다. 그렇지 않으면 쉘이 커서 위치에 대해 혼동하게 됩니다). 프롬프트가 표시되기 전에 인쇄할 문자열입니다. Bash에서 창 제목을 현재 디렉터리로 설정하고 그 뒤에 창 크기를 설정하려면 다음과 같은 것을 사용할 수 있습니다.
set_term_title () {
printf '\[\033]2;%s %dx%d\007\]' "$PWD" "$LINES" "$COLUMNS"
}
PROMPT_COMMAND="$PROMPT_COMMAND
set_term_title"
zsh에서:
set_term_title () {
printf '\[\033]2;%s %dx%d\007\]' $PWD $LINES $COLUMNS
}
precmd+=set_term_title
쉘이 프롬프트를 표시하는 동안 창 크기를 조정하면 쉘은 다음을 받습니다.시그널 윈치신호. 이 신호에 대한 핸들러를 추가하십시오.
trap set_term_title SIGWINCH
명령을 실행하는 동안 창 크기가 조정되면 다음에 쉘이 프롬프트할 때만 제목이 업데이트됩니다. 이 경우 포그라운드 프로세스만 신호를 수신하므로 쉘은 결코 이를 발견하지 못하고 명령이 완료되거나 중단되고 쉘이 실행을 재개할 때만 업데이트된 정보를 쿼리할 수 있습니다.
터미널에서 실행되는 것과 독립적으로 제목을 업데이트하려면 일부 외부 구성 요소를 포함해야 합니다. 멋진 창 관리자라면 이 작업을 수행할 수 있어야 하지만 대부분은 그렇지 않습니다. Sawfish에서는 조정할 수 있습니다rewrite-window-title
정규식 기반 변환을 적용하는 대신 창 크기를 추가합니다.
당신은 그것을 사용할 수 있습니다xdotool
정보 가져오기 및 제목 변경:
(
title="$(xdotool getwindowname "$windowid")"
eval "$(xdotool getwindowgeometry --shell)"
title="${title% *} ${WIDTH}x${HEIGHT}"
xdotool set_window --name "$title" "$windowid"
)
xdotool getwindowgeometry
반환되는 크기는 문자가 아닌 픽셀 단위입니다 . 나는 무엇을 해야할지 모르겠다반응창 관리자의 협조 없이 창 크기를 조정합니다.