fakexrandr,鏡像假顯示 - X 請求失敗錯誤:BadMatch

fakexrandr,鏡像假顯示 - X 請求失敗錯誤:BadMatch

我需要在一台實體顯示器上建立鏡像假顯示器。我安裝了假克斯蘭德爾現在我的筆記型電腦的 1366x768(最大/首選)顯示器上有兩個假顯示器(683x768)。

當我運行xrandr --output eDP1~1 --same-as eDP1 --verbose命令時,我收到此錯誤:

在此輸入影像描述

*也xrandr --fb 683x768列印相同的錯誤。

菲利普·伯恩特(所有者/創建者假克斯蘭德爾)說“由圖形驅動程式實際應用任何設定。”在這個問題。但這對我來說並不是一個令人滿意的答案。

為了追蹤問題,我記錄了xrandr --verbose兩個實體顯示器設定的輸出。您可以關注以下提交這個儲存庫查看 的輸出行為xrandr --verbose

  • 在我這樣做之後,我意識到xrandr --output eDP1~1 --same-as eDP1命令正在嘗試分配current 683x768Screen 0:.但我的筆記型電腦上的圖形驅動程式或實體顯示器沒有683x768輸出選項/支援。也許這可能是問題所在。

總而言之:螢幕截圖中出現此錯誤的實際原因是什麼以及此問題的解決方法?

答案1

RandR 是 X11 伺服器的擴展,用於在伺服器的用戶端(= 應用程式)和圖形驅動程式之間傳遞輸出配置。大多數應用程式本身並不真正使用該協議,而是使用一個名為libXrandR. FakeXRandR 將該庫替換為仍向圖形驅動程式詢問配置的庫,但隨後會修改結果以欺騙應用程序,使其相信存在與實際完全不同的配置。由於如果嘗試更改假輸出之一,這必然會導致錯誤,因此它試圖透過將假輸出上的任何配置請求替換為針對原始物理輸出的更改請求來緩解最嚴重的問題。但是,如果您嘗試應用僅存在於假輸出上的分辨率,那麼這些當然仍然會失敗。

一個很好的類比可能是這樣的情況:您有一輛相當舊的汽車,能夠行駛 50 公里/小時。您現在想要在一條要求您能夠以 100 公里/小時的速度行駛的街道上行駛。 FakeXRandR 追求的解決方案是更換轉速表上的數字,這樣當您實際行駛50 公里時,指針現在顯示180 公里/小時。顯示我可以走了” 180,所以我很好”,他可能會接受這一點。但實際上你仍然無法開得更快,因為要做到這一點,你必須更換發動機,而不是儀表板上打印的數字。

長話短說:FakeXRandR 是不適合您任務的工具。

如果您確實需要在 RandR 層級上執行此操作,則必須在 X11 和核心程式碼中修補圖形驅動程式。我在 FakeXRandr 的另一個錯誤報告中寫了一些關於在哪裡找到的內容。如果您想要的只是讓螢幕的右半部鏡像到左側,則一個更簡單的解決方案是使用高級合成視窗管理器,例如康皮茲。合成管理器在應用程式視窗和您實際看到的內容之間新增重定向層。在這種情況下,這允許他們將每個視窗繪製兩次,首先在輸出的左側,然後在右側;這將有效地克隆你的輸出。要么已經有一個可用的插件(安裝所有 compiz 軟體包,特別是compizconfig-設定管理員、 ccsm,然後在其中搜尋您需要的內容),或者至少應該可以編寫一個不需要太多努力即可完成您想要的操作的程式。

相關內容