fakexrandr, 미러 가짜 디스플레이 - 실패한 요청의 X 오류: BadMatch

fakexrandr, 미러 가짜 디스플레이 - 실패한 요청의 X 오류: BadMatch

하나의 실제 모니터에 거울 가짜 디스플레이를 만들어야 합니다. 설치했습니다가짜xrandr이제 내 노트북의 1366x768(최대/선호) 모니터에 두 개의 가짜 디스플레이(683x768)가 생겼습니다.

명령을 실행하면 xrandr --output eDP1~1 --same-as eDP1 --verbose다음 오류가 발생합니다.

여기에 이미지 설명을 입력하세요

*또한 xrandr --fb 683x768동일한 오류가 인쇄됩니다.

필립 번트(소유자/창작자가짜xrandr)는 "실제로 설정을 적용하는 것은 그래픽 드라이버에 달려 있습니다."라고 말했습니다. ~에이 문제. 그러나 그것은 나에게 만족스러운 대답이 아니었습니다.

xrandr --verbose문제를 추적하기 위해 두 개의 물리적 모니터 설정에서 출력을 기록했습니다 . 다음에서 커밋을 따를 수 있습니다.이 저장소의 출력 동작을 확인합니다 xrandr --verbose.

  • 이 작업을 수행한 후 명령이 에 xrandr --output eDP1~1 --same-as eDP1할당하려고 한다는 것을 깨달았습니다 . 하지만 내 노트북의 그래픽 드라이버나 물리적 모니터에는 출력 옵션/지원이 없습니다 . 어쩌면 이것이 문제일 수도 있습니다.(이 문단의 정확성은 잘 모르겠습니다. 아마도 완전히 틀렸을 수도 있습니다.)current 683x768Screen 0:683x768

전체적으로: 스크린샷에서 이 오류가 발생한 실제 이유와 이 문제에 대한 해결 방법은 무엇입니까?

답변1

RandR은 서버의 클라이언트(= 애플리케이션)와 그래픽 드라이버 간의 출력 구성을 통신하는 데 사용되는 X11 서버의 확장입니다. 대부분의 애플리케이션은 실제로 프로토콜 자체를 사용하지 않고 대신 libXrandR. FakeXRandR은 이 라이브러리를 그래픽 드라이버에 구성을 요청하는 라이브러리로 대체하지만 그 결과를 조작하여 응용 프로그램이 실제와 완전히 다른 구성이 존재한다고 믿도록 속입니다. 가짜 출력 중 하나를 변경하려고 하면 필연적으로 오류가 발생하므로 가짜 출력에 대한 구성 요청을 원래의 물리적 출력에 대한 변경 요청으로 대체하여 최악의 문제를 완화하려고 합니다. 그러나 물론 가짜 출력에만 존재하는 해상도를 적용하려고 하면 여전히 실패할 수 있습니다.

좋은 비유는 시속 50km로 주행할 수 있는 꽤 오래된 자동차를 가지고 있는 경우입니다. 이제 당신은 100km/h의 속도로 운전할 수 있어야 하는 거리에서 운전하려고 합니다. FakeXRandR이 추구하는 솔루션은 실제로 50km를 주행할 때 바늘이 180kph를 표시하도록 회전 속도계의 숫자를 바꾸는 것입니다. 교통 통제소에서 정차하면 "경찰관님, 제 속도계에 가도 된다고 하더군요."라고 말할 수 있습니다. 180이면 괜찮아요"라고 하면 아마도 받아들일 것이다. 하지만 더 빨리 운전할 수는 없습니다. 그렇게 하려면 대시보드에 인쇄된 숫자가 아닌 엔진을 교체해야 하기 때문입니다.

tl;dr:FakeXRandR은 작업에 잘못된 도구입니다.

RandR 수준에서 이 작업을 정말로 수행해야 한다면 X11 및 커널 코드 모두에서 그래픽 드라이버를 패치해야 합니다.나는 FakeXRandr에 대한 또 다른 버그 보고서를 어디에서 볼 수 있는지에 대해 몇 가지 히트작을 썼습니다.. 더 간단한 해결책은 화면의 오른쪽 절반을 왼쪽에 미러링하는 것이라면 다음과 같은 고급 합성 창 관리자를 사용하는 것입니다.컴피즈. 합성 관리자는 애플리케이션 창과 실제로 표시되는 창 사이에 리디렉션 레이어를 추가합니다. 이를 통해 이 경우 각 창을 두 번 그릴 수 있습니다. 먼저 출력의 왼쪽에 그린 다음 오른쪽에 그립니다. 그러면 출력이 효과적으로 복제됩니다. 이를 위해 이미 사용 가능한 플러그인이 있습니다(특히 모든 compiz 패키지를 설치하십시오).compizconfig-설정-관리자, ccsm을 사용하여 필요한 것을 검색하세요.) 또는 최소한 별로 노력하지 않고도 원하는 것을 수행하는 코드를 작성하는 것이 가능해야 합니다.

관련 정보