2013-08-29 2 views
1

bash 스크립트에서 윈도우의 최대 크기 (즉, 화면 크기에서 화면 가장자리의 패널을 뺀 크기)를 얻으려고합니다. 나는 쿠분투를 사용하고 있지만 그것이 어떤 리눅스 시스템에서도 잘 작동한다면 좋을 것이다. xwininfo 창의 덕분에 크기를 얻을 다음Linux : 윈도우 경계 높이 가져 오기

wmctrl -r :ACTIVE: -b add,maximized_horz,maximized_vert 

과 :

현재 내 솔루션은 wmctrl를 통해 활성 창을 최대화하는 것입니다

xwininfo -id $(xdotool getactivewindow) 

를 불행히도, 난하지 않습니다 창의 크기는 윈도우의 크기와 경계입니다 (테두리를 제거하면 예상 한 값이됩니다).

그래서 제 질문은 다음과 같습니다

1 - 윈도우의 테두리를 제거하는 명령이 있나요? (나는 단지 그것을 수동으로하는 방법을 안다)

2 - 이것을하는 더 좋은 방법이 있습니까? 당신의 도움에 미리

감사합니다 (이 창을 최대화없이 할 수 있다면 좋을 수)

+0

'창의 크기와 창 테두리 (+)를 의미합니까?' – konsolebox

+0

하지만 실제로 산술적으로 계산할 수는 있지만 데이터가 실제로 표시되는 방식과 취할 방식을 알려줘야합니다. bash로 가능해야합니다. – konsolebox

+0

예, "빼기"대신 "및"이 유감입니다. – Zach

답변

3

... 내가 xwininfo -stats를 사용하는 경우 내가 실제로 내 경우에는 (0 테두리 너비를 얻을 수). 제목 표시 줄 높이 (창을 최대화 한 후)는 절대 상단 왼쪽 필드에서 얻습니다. 다음은 예상 높이를 알려줍니다.

eval $(xwininfo -id $(xdotool getactivewindow) | sed -n -e "s/^ Height: \+\([0-9]\+\).*/Height=\1/p" -e "s/^ Absolute upper-left Y: \+\([0-9]\+\).*/HeightTitleBar=\1/p") 
Height=$(($Height+$HeightTitleBar)) 

감사합니다.

1

이것은 당신의 높이, 너비 및 테두리 폭을 얻을 것입니다 : 그와

{ read __ WIDTH; read __ HEIGHT; read __ __ BORDER_WIDTH; } < <(xwininfo -id "$(xdotool getactivewindow)" | grep -o -e 'Height:.*' -e 'Width:.*' -e 'Border width:.*') 
echo "Height: $HEIGHT, Width: $WIDTH, Border width: $BORDER_WIDTH" 

당신 이제 $ HEIGHT, $ WIDTH 및 $ BORDER_WIDTH가 있습니다. 당신은 산술 식으로 사람들을 다시 계산할 수있다 : 나는 내가 무엇을 국경를 호출 한 것은 사실 제목 표시 줄 것을 깨달았다 http://tldp.org/LDP/abs/html/arithexp.html