VirtualBox 게스트 추가 기능이 Arch Linux, Lubuntu 및 openSUSE Tumbleweed를 포함한 여러 플랫폼에서 Enlightenment 20의 화면 해상도를 자동으로 조정할 수 없다는 것을 확인했습니다. 예를 참조하세요.이것저는 Arch Linux 포럼 게시물을 작성했기 때문에 다음 스크립트(에 저장됨)를 사용하고 있습니다 ~/.bashrc
.
xrandr --output VGA-0 --mode 1366x642
화면 해상도를 전체 화면으로 조정합니다. 문제는 내가 원하는 모드의 화면 높이가 642px가 아닌 경우가 있다는 것입니다. 예를 들어 방금 openSUSE Tumbleweed VM을 시작했는데 모드의 화면 높이가 671px입니다(화면 해상도를 조정하기 위해 수정 스크립트를 만들었습니다 xrandr --output VGA-0 --mode 1366x671
). 화면 높이가 642px와 일치하지 않으면 실행 시 xrandr --output VGA-0 --mode 1366x642
화면 해상도를 조정할 수 없으며 다음 오류 메시지가 반환됩니다 xrandr: cannot find mode 1366x642
. 그러나 이 모드의 화면 높이는 를 실행하여 확인할 수 있으며 xrandr
, 이는 내 openSUSE Tumbleweed VM에 출력을 제공합니다.
Screen 0: minimum 64 x 64, current 800 x 600, maximum 32766 x 32766
VGA-0 connected primary 800x600+0+0 0mm x 0mm panning 800x600+0+0
1366x671 60.00 +
2560x1600 60.00
2560x1440 60.00
2048x1536 60.00
1920x1600 60.00
1920x1080 60.00
1600x1200 60.00
1680x1050 60.00
1400x1050 60.00
1280x1024 60.00
1024x768 60.00
800x600 60.00*
640x480 60.00
출력을 필터링 xrandr
하여 올바른 화면 높이 값을 얻은 다음 에 전달할 수 있는지 궁금합니다 xrandr --output VGA-0 --mode 1366x<HEIGHT>
. 여기에 내가 사용할 스크립트가 있습니다( $H
원하는 필터에 의해 결정되는 모달 높이는 어디에 있습니까).
L=$(xrandr)
H=f($L) # Where f(x) is the filter I am hoping for.
xrandr --output VGA-0 --mode 1366x$H
답변1
다음을 사용할 수 있는 것 같습니다.
H=$(xrandr | awk '$1 ~ /^[[:digit:]]+x[[:digit:]]+$/ && $2 ~ /^[[:digit:]]+\.[[:digit:]]+$/ && $3 == "+" { print substr($1, index($1, "x")+1) }')
xrandr --output VGA-0 --mode 1366x$H
다음은 잘 구성된 awk 프로그램입니다.
'$1 ~ /^[[:digit:]]+x[[:digit:]]+$/ && \
$2 ~ /^[[:digit:]]+\.[[:digit:]]+$/ && \
$3 == "+" \
{ print substr($1, index($1, "x")+1) }'
$3 == "+"
올바른 선을 잡을 것 같은 간단한 것부터 시작했지만 약간의 편집증 $1
과 $2
점검을 추가했습니다. 이 print
줄은 $1의 일부를 인쇄합니다. 차원에서 "x"의 위치를 계산한 후 한 위치를 건너뛰고 거기에서 $1의 끝까지 인쇄합니다.