답변:
xdpyinfo | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
명령 xdpyinfo
은 X 서버에 대한 다양한 정보를 표시합니다. 표준 출력에 많은 것을 씁니다. 그러나 단어로 시작하는 줄만 있으면 dimensions
되므로 사용 grep
합니다. 마지막으로 sed
결과를 정리하는 데 사용 합니다.
xdpyinfo
정보에 액세스 할 수없는 경우 오류 메시지를 인쇄하므로에 오류를 리디렉션하십시오 /dev/null
. 이러한 이유로 오류 리디렉션을 추가 할 수 있습니다 xdpyinfo 2> /dev/null
.. 따라서 전체 piple은 다음과 같습니다 xdpyinfo 2> /dev/null | grep dimensions | sed -r 's/^[^0-9]*([0-9]+x[0-9]+).*$/\1/'
. 이렇게하면 스크립트가 더 견고 해집니다.
xdpyinfo | grep dimensions
전체 해상도를 제공합니다. 모니터가 여러 개인 경우 모든 모니터의 합계가됩니다. xrandr --current
각 모니터의 해상도를 제공합니다.
이 스 니펫을 사용하여 전체 화면으로 이동하지 않고 rDesktop의 가능한 최대 해상도를 찾습니다.
Xaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f1)
Yaxis=$(xrandr --current | grep '*' | uniq | awk '{print $1}' | cut -d 'x' -f2)
산출:
Xaxis = 1280
Yaxis = 1024
마이너스 창 장식 (더 많거나 적음) :
MaxRes=$(($Xaxis-5))"x"$(($Yaxis-25))
산출:
MaxRes = 1275x999
전체 화면으로 이동하지 않고 rDesktop의 최대 해상도는 어느 것입니까?
종료 명령 :
rdesktop -u $User -P -z -5 -g $MaxRes $Host &
지금까지는 잘 작동하지만 철저히 테스트하지는 않았습니다.
또 다른 예는 다음과 같은 스크린 캐스트입니다 avconv
.
avconv -f x11grab -r 15 -s `xrandr --current | grep '*' | uniq | awk '{print $1}'` -i :0.0 -c:v libx264 ./output.mp4
xdpyinfo: Unable to open display "".
rdesktop [other_args] -g $(xrandr --current | grep '*' | uniq | awk '{print $1}')
.
xrandr --current | grep '*' | awk -v line="$SCREEN" 'NR==line{print $1}' | cut -d 'x' -f1
화면을 지정하려는 경우 (멀티 모니터 설정 사용) ( SCREEN
1 인덱스)
########################################## ## 비디오 녹화 프로그램과 함께 사용합니다. # window size --root option-화면 루트 창의 정보 echo $ (xwininfo -root | grep 'geometry'| awk '{print $ 2;}') # 출력 : 1024x768 + 0 + 0 # 높이 x 너비 + x + y 위치. ###################### ## 참조 매뉴얼 ## 남자 xwininfo
xwininfo -root|sed '/Height/!d;s/.* //'
높이와 xwininfo -root|sed '/Width/!d;s/.* //'
너비.
@ user31752와 @ eliezer-e-vargas의 답변을 결합한 두 가지 가능한 대안
더 간단한 정규식 :
$ xrandr --current | sed -n 's/.* connected \([0-9]*\)x\([0-9]*\)+.*/\1x\2/p'
1440x900
또는 잘라 내기 사용 :
$ xrandr --current | grep ' connected ' | cut -d ' ' -f 3 | cut -d '+' -f 1
1440x900
사용 grep '*' | uniq
@는 엘리-E-바가로부터는 (예. "화면 1440x900 59.90 * + 59.89")를 다른 광고를 얻을 xrandr를 출력 '연결'을 그렙은 (예를 간단 하나를 얻을 수있다. "LVDS1는 1440x900 배경 + 0 + 0 연결된 ..... ").
@ user31752에 의한 정규 표현식 사용은 좋으므로 사용중인 줄은 더 간단한 정규 표현식이 필요하거나 더 간단한 cut 명령으로 대체 될 수 있습니다.
xrandr 출력 예
$ xrandr --current
Screen 0: minimum 320 x 200, current 1440 x 900, maximum 8192 x 8192
LVDS1 connected 1440x900+0+0 (normal left inverted right x axis y axis) 331mm x 207mm
1440x900 59.90*+ 59.89
1360x768 59.80 59.96
1152x864 60.00
1024x768 60.00
800x600 60.32 56.25
640x480 59.94
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
vesa 표준은 모니터 화면 해상도를 읽는 방법을 제공합니다.
확장 디스플레이 식별 데이터 (EDID ) :이 표준은 디스플레이 정보를 최적으로 사용할 수 있도록 구성 정보를 전달할 데이터 형식을 정의합니다.
모니터는 일반적으로 여러 해상도와 화면 주사율을 지원합니다. 물론 누군가는 최대 (물리적)를 선호 할 것입니다.
이 모니터 데이터를 읽으려면 다음 솔루션 중 하나를 시도하십시오.
edid- 디코드
설치되지 않은 경우 다음을 입력하십시오.
sudo apt install edid-decode
그런 다음 edid
파일을 읽으십시오
edid-decode /sys/class/drm/card0-eDP-1/edid
읽다
함께 설치
sudo apt install read-edid
그런 다음 i2c를 통해 화면 모니터 데이터를 읽고 구문 분석하십시오.
sudo get-edid | parse-edid
EIDID 데이터를 Hexdump
edid-tools가 설치되지 않은 경우 다음과 같이 edid
16 진수 파일을 덤프 할 수 있습니다 .
hd /sys/class/drm/card0-eDP-1/edid
$( )
구문 (예 :)을 사용하여 변수에 넣습니다DIMENSIONS=$(xdpyinfo ...
. 그런 다음 사용하는sed
두 가지를 얻기 위해 다시 :WIDTH=$(echo $DIMENSIONS | sed -r 's/x.*//')
와HEIGHT=$(echo $DIMENSIONS | sed -r 's/.*x//')
.