Xrandr 명령어 중에 transform 옵션에 대한 설명을 부탁드립니다

얼마 전에 데스크탑 게시판에 lightdm 해상도 문제에 대한 질문을 올리면서 함께 hdmi 로 출력된 화면 사이드 부분이 조금씩 짤리는 문제에 대해서도 질문을 했었는데요 더 검색을 하다 보니까 xrandr 의 transfomr 옵션으로 해결한 사례가 있는 것 같던데 이것은 이쪽 게시판의 성격에 더 맞는 것 같아서 별도로 질문을 드립니다.

해결한 사람은 아래의 명령어를 주었다는데요…

xrandr –output HDMI1 –transform 1.05,0,-35,0,1.05,-19,0,0,1

그래서 저도 그대로 따라하려고 하니 두 가지 문제가 발생했습니다.

하나는 man xrandr 을 해 보니까 output 옵션은 사라졌고, 그것이 display 옵션으로 바뀐 것 같아서 그렇게 대치하고 명령을 주면 이제는 transform 옵션을 인식하지 못하겠다고 하며 실행이 되지 않네요. 어떤 식으로 명령을 주어야 하는지 알았으면 하고요.

다른 하나는 뒤의 파라미터 값이 무려 9개가 있는데 man의 설명을 아무리 봐도 수식이 들어간 설명이다 보니 도통 무슨 소리인지 모르겠습니다. 그래서 혹시 능력자분이 계신다면 아래 설명을 보시고 각 파라미터에 어떤 값을 입력해야 하는지 알려주신다면 대단히 고맙겠습니다. (아마도 a 부터 f 까지만 알면 될 것 같은데요.)

–transform a,b,c,d,e,f,g,h,i
Specifies a transformation matrix to apply on the output. Auto‐
matically a bilinear filter is selected. The mathematical form
corresponds to:
a b c
d e f
g h i
The transformation is based on homogeneous coordinates. The
matrix multiplied by the coordinate vector of a pixel of the
output gives the transformed coordinate vector of a pixel in the
graphic buffer. More precisely, the vector (x y) of the output
pixel is extended to 3 values (x y w), with 1 as the w coordi‐
nate and multiplied against the matrix. The final device coordi‐
nates of the pixel are then calculated with the so-called
homogenic division by the transformed w coordinate. In other
words, the device coordinates (x’ y’) of the transformed pixel
are:
x’ = (ax + by + c) / w’ and
y’ = (dx + ey + f) / w’ ,
with w’ = (gx + hy + i) .
Typically, a and e corresponds to the scaling on the X and Y
axes, c and f corresponds to the translation on those axes, and
g, h, and i are respectively 0, 0 and 1. The matrix can also be
used to express more complex transformations such as keystone
correction, or rotation. For a rotation of an angle T, this
formula can be used:
cos T -sin T 0
sin T cos T 0
0 0 1
As a special argument, instead of passing a matrix, one can pass
the string none, in which case the default values are used (a
unit matrix without filter).

사이드에 보더가 생긴다는 말씀으로 보아 TV 겸용 모니터를 사용하시는 것 같은데
HDMI 사용시 블랙 보더에 의해 사이드가 짫리는 현상이 있습니다.

모니터 옵션을 주의 깊게 살펴 보십시오. pixel 늘리기가 되었든 스크린 해상도 wide mode가 되었든
HDMI에 대응하는 옵션이 반드시 있으므로 주의 깊게 살펴 보시기 바랍니다.

이 현상은 언더스캔 또는 오버 스캔과는 다른 개념이므로 유의 하시기 바랍니다.

언더스캔에 대한 질문을 하셨던데 아래 처럼 적용하시면 됩니다.

xrandr --output HDMI-0 --set underscan auto

또는

xrandr --output HDMI-0 --set underscan on

답변 감사합니다.

현재 HDMI 단자가 있는 티비를 사용하고 있고요 저도 디스플레이 쪽에서 해결할 수 있는 문제가 아닌가 싶어서 메뉴를 찬찬히 보았지만 이상하게 그런게 보이지 않더군요. (티비는 중국제 하이얼 제품입니다.)

그리고 사이드에 보더가 생긴다기보다는 정상적인 화면의 가장자리 부분이 티비 화면에 다 들어오지 못하는 모습이라고 보시면 되겠습니다. 그래서 언더스캔으로 해결해야 될 문제가 아닌가 싶었던 것이고요.
참고로 현재 맥에서는 똑같은 증상이 있었지만 언더스캔을 조절해서 해결했고 윈도에서는 전혀 그런 현상이 발생하지 않았습니다.

말씀해 주신 명령어를 입력해 봤는데 아래와 같은 메시지를 내보내더군요.

xrandr --output HDMI3 --set underscan auto
X Error of failed request: BadName (named color or font does not exist)
Major opcode of failed request: 140 (RANDR)
Minor opcode of failed request: 11 (RRQueryOutputProperty)
Serial number of failed request: 45
Current serial number in output stream: 45

이것은 무슨 말인지 더 모르겠네요. ^^;; 계속 도움을 주실 수 있다면 고맙겠습니다.

인식자가 틀렸습니다. 다시 확인해 보시기 바랍니다. 중국 제품은 모르겠습니다만 잘 찾아 보시기 바랍니다.

방금 리부팅을 하고 다시 처음에 기재한 명령을 입력해 보니 이번에는 제대로 실행이 되더군요. 원인이 무엇이었는지는 모르겠지만 옵션과 파라미터 모두 제대로 인식을 했습니다. 그러면서 화면의 위치가 조금 바뀌었습니다만 오히려 각각 오른쪽과 아래쪽으로 조금씩 이동했더군요. 그래서 파라미터 값을 이리저리 바꿔가며 계속 시도해 보았지만 파라미터 값이 9개나 되다 보니 상관관계를 알아내기가 쉽지 않네요. 간혹 어떤 수치값에서는 위에 나왔던 에러메시지를 출력하기도 하는군요.

아무래도 위의 매뉴얼 설명에 대한 이해가 필수인 것 같습니다.