xrandr --query를 사용하여 모니터 너비를 얻는 방법은 무엇입니까?

xrandr --query를 사용하여 모니터 너비를 얻는 방법은 무엇입니까?

변수 내부에 할당된 연결된 모니터를 찾기 위해 xrandr을 반복하는 쉘 스크립트가 있습니다. 해당 루프 내에서 연결된 모니터의 너비를 결정하는 또 다른 루프가 필요합니다.

어떻게 해야 하나요?

답변1

원하는 도구(예: grep, awk 등)를 사용하여 xrandr의 결과를 사후 처리할 수 있습니다.

$ xrandr --query
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
LVDS-1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 193mm
   1366x768      60.04*+
   1360x768      59.80    59.96  
VGA-1 disconnected (normal left inverted right x axis y axis)
SVIDEO-1 disconnected (normal left inverted right x axis y axis)

다음과 같은 "연결됨" 화면이 표시될 수 있습니다.

$ xrandr --query |grep -w 'connected'
LVDS-1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 193mm
#With grep , the use -w means grep for a word.

아니면 awk를 사용하세요:

$ xrandr --query |awk '/\<connected\>/{print}'
LVDS-1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 193mm

awk를 사용하면 위 출력의 다양한 필드를 인쇄할 수도 있습니다(awk 기본 필드 구분 기호는 공백임).

$ xrandr --query |awk '/\<connected\>/{print $1}'
LVDS-1
$ xrandr --query |awk '/\<connected\>/{print $3}'
1366x768+0+0

또는 공백, x, +와 같은 사용자 정의 필드 구분 기호를 사용하도록 awk에 요청할 수도 있습니다.

$ xrandr --query |awk -F '[ x+]' '/\<connected\>/{print $1,$3,$4}'
LVDS-1 1366 768

그러면 연결된 모든 화면을 처리하는 가장 쉬운 방법은 배열을 사용하는 것입니다.

$ IFS=$'\n' screens=( $(xrandr --query |awk -F '[ x+]' '/\<connected\>/{print $1,$3,$4}') )
$ for screen in "${screens[@]}";do
> echo "$screen" # or do whatever action you want to do with each screen
> done
LVDS-1 1366 768

관련 정보