메뉴 바와 런처가 사용하는 공간을 고려한 후 사용 가능한 화면 크기를 가져옵니다.

메뉴 바와 런처가 사용하는 공간을 고려한 후 사용 가능한 화면 크기를 가져옵니다.

우분투 14.04를 사용하고 있습니다. xrandr 또는 xdpyinfo를 사용하여 화면 해상도를 얻는 방법을 알고 있습니다. 하지만 이러한 도구를 사용하면 사용 가능한 최대 데스크톱 크기를 얻을 수 있습니다.

사용 가능한 데스크탑 중 일부에 액세스할 수 있는 메뉴 표시줄이 상단에 있습니다. 사용 가능한 데스크탑의 일부를 차지하는 실행기가 왼쪽에 있습니다. 메뉴 표시줄과 실행 프로그램에서 사용하는 공간을 설명하는 bash 스크립트를 사용하여 실제 사용 가능한 데스크탑 크기를 어떻게 찾을 수 있습니까?

답변1

해결책

문제는 다음을 사용하여 지정되므로 bash:

IFS=', =' read -a area < <(xprop -root '_NET_WORKAREA')

용법

이것엑스그리고와이동등 어구,너비, 그리고높은모두 거기에 있습니다영역대량으로. 그런 다음 다음과 같이 사용할 수 있습니다.

echo "Top left of usable space: X is ${area[1]} and Y is ${area[2]}"
echo "Width is ${area[3]} and height is ${area[4]}"

레귤러 본 케이스

일반적인 Bourne 쉘로 제한되어 있다면 변수 이름을 지정하여 배열 부족 문제를 해결할 수 있습니다.엑스,와이,, 그리고시간:

xprop -root _NET_WORKAREA > /tmp/workarea$$
IFS=, read x y w h sluff < /tmp/workarea$$
x=${x#*=}
rm /tmp/workarea$$

추가 정보

X11 속성을 이해하려면, 예를 들어_NET_WORKSPACE, 보다확장된 창 관리자 프롬프트사양은 freedesktop.org에 있습니다.

답변2

너비와 높이를 얻는 가장 안정적인 방법은 다음과 같습니다.

#!/bin/bash

WINDOW_ID=$(wmctrl -a :ACTIVE: -v 2>&1 | grep -Eo "0x[0-9a-f]{8}")

wmctrl -ir $WINDOW_ID -b add,maximized_vert,maximized_horz

sleep 1

echo Width is $(wmctrl -lG | grep $WINDOW_ID | awk -v N=5 '{print $N}')
echo Height is $(wmctrl -lG | grep $WINDOW_ID | awk -v N=6 '{print $N}')
wmctrl -ir $WINDOW_ID -b remove,maximized_vert,maximized_horz

sleep값이 다를 수 있으므로 주의해야 합니다 .

답변3

많은 검색 끝에 내가 찾고 있는 정보를 반환하는 xprop 명령을 찾았습니다.

available_screen=$(xprop -root | grep -e 'NET_WORKAREA(CARDINAL)') #get available screen dimensions
    available_screen=${available_screen##*=} #strip off beginning text
    current_screen_width=$(echo $available_screen | cut -d ',' -f3 | sed -e 's/^[ \t]*//')
    current_screen_height=$(echo $available_screen | cut -d ',' -f4 | sed -e 's/^[ \t]*//')

관련 정보