fakexrandr、ミラー偽ディスプレイ - 失敗したリクエストの X エラー: BadMatch

fakexrandr、ミラー偽ディスプレイ - 失敗したリクエストの X エラー: BadMatch

1台の物理モニターにミラーフェイクディスプレイを作成する必要があります。インストールしました偽造品そして今、私のラップトップの 1366x768 (最大/推奨) モニターに 2 つの偽のディスプレイ (683x768) が表示されています。

コマンドを実行すると、xrandr --output eDP1~1 --same-as eDP1 --verbose次のエラーが発生します:

ここに画像の説明を入力してください

*もxrandr --fb 683x768同じエラーを出力します。

フィリップ・ベルント(所有者/作成者偽造品)は「実際に設定を適用するかどうかはグラフィックドライバ次第です。」と述べています。この問題しかし、それは私にとって満足のいく答えではありませんでした。

問題を追跡するために、2台の物理モニターの設定での出力を記録しましたxrandr --verbose。コミットを追跡できます。このリポジトリの出力の動作を確認しますxrandr --verbose

  • これを行った後、コマンドが にxrandr --output eDP1~1 --same-as eDP1割り当てようとしていることに気付きました。しかし、私のラップトップのグラフィック ドライバーまたは物理モニターには出力オプション/サポートがありません。おそらくこれが問題かもしれません。(この段落の正確さはわかりません。完全に間違っている可能性もあります。)current 683x768Screen 0:683x768

全体として、スクリーンショットのこのエラーの実際の原因と、この問題の回避策は何ですか?

答え1

RandR は、X11 サーバーの拡張機能で、サーバーのクライアント (= アプリケーション) とグラフィックス ドライバーの間で出力の構成を通信するために使用されます。ほとんどのアプリケーションは実際にはプロトコル自体を話さず、代わりにと呼ばれるライブラリを使用しますlibXrandR。FakeXRandR はこのライブラリを、グラフィックス ドライバーに構成を要求しながらも結果を操作して、実際とはまったく異なる構成が存在するとアプリケーションに信じ込ませるライブラリに置き換えます。偽の出力の 1 つを変更しようとすると必然的にエラーが発生するため、偽の出力に対する構成要求を元の物理的な出力に対する変更要求に置き換えることで、最悪の問題を軽減しようとします。ただし、偽の出力にのみ存在する解像度を適用しようとすると、当然ながら失敗します。

わかりやすい例えとしては、時速 50 キロで走行できるかなり古い車を持っている場合が考えられます。そして、時速 100 キロで走行できる道路を運転したいとします。FakeXRandR が追求する解決策は、タコメーターの数字を置き換えて、実際には時速 50 キロで走行しているのに、針が時速 180 キロを示すようにすることです。交通規制で止められたら、「警官さん、スピードメーターは時速 180 キロで走れると言っているから大丈夫です」と言うことができ、おそらく警官はこれを受け入れるでしょう。しかし、実際にはまだそれ以上速く走ることはできません。なぜなら、それを行うには、ダッシュボードに印刷された数字ではなく、エンジンを交換する必要があるからです。

要約:FakeXRandR はあなたのタスクには適さないツールです。

これを本当に RandR レベルで実行する必要がある場合は、X11 とカーネル コードの両方でグラフィック ドライバーにパッチを適用する必要があります。FakeXRandrの別のバグレポートで、どこを調べるべきかについていくつかのヒットを書きました。より簡単な解決策としては、画面の右半分を左半分にミラーリングしたいだけなら、次のような高度な合成ウィンドウマネージャを使用することです。コンピズ合成マネージャは、アプリケーションウィンドウと実際に表示されているものの間にリダイレクトレイヤーを追加します。これにより、この場合、各ウィンドウを2回描画できます。最初は出力の左側に、次に右側に描画します。これにより、出力が実質的に複製されます。これにはすでにプラグインが用意されています(すべてのcompizパッケージをインストールしてください。特にcompizconfig 設定マネージャー、ccsm を検索して必要なものを探すなど)、少なくともそれほど労力をかけずに、必要なことを実行するスクリプトを作成することは可能であるはずです。

関連情報