プライマリモニタではなくモニタがプライマリモニタであると信じるようにプログラムをだます方法は?

プライマリモニタではなくモニタがプライマリモニタであると信じるようにプログラムをだます方法は?

XY問題の場合、状況によってはラップトップを使用し、時には外部モニターに接続します。外部モニタに接続すると、ノートパソコンの画面ではなくゲームが画面に表示されることを望みますが、メインモニタに表示されるようにハードコーディングされる傾向があります。 (切り替えると、メインモニターの解像度が制限される傾向があり、外部モニターの解像度がノートパソコンよりも高くなります。)私は、メインモニターをノートパソコンの画面に置くことを好みます。私とデフォルトのモニタを切り替えると、いくつかのKDEレイアウトが混乱します。

主な質問について:システムの残りの部分がこれをプライマリモニタとして認識せず、モニタがプライマリモニタであることを特定のプログラムに通知したいと思います。理想的には、モニターが接続されていないときにデフォルトでノートパソコンの画面に戻る方法で行われます。これを行う方法はありますか?

答え1

これはXYの問題かもしれません。

スパンモードでは、X11は通常開始x、y座標0,0を提供し、セカンダリ画面をその座標に水平または垂直に接続して「基本モニタ」ステータスを制御します。セッションマネージャはツールバーの場所に特定の画面を指定したり、アプリケーションが内部的にメイン画面を受け入れたりすることができますが、これはホーム画面と同じではありません。

外部ディスプレイがプライマリディスプレイであると考えるようにアプリケーションをトリックするのではなく、単一画面構成と複数画面構成用にセッション設定を別々に保存する拡張機能を使用してください。これを行うことができるgnome-shell拡張がありますが、KDEで何ができるのかわかりません。それでも、少なくとも最初は両方の画面のセッションを再構成する必要があります。

別の方法は、アプリケーションで使用する画面(コマンドラインオプション?内部設定?)を知らせるか、shimで実行して画面座標を再マップすることです(これも可能かどうかわかりません)。画面の一部で実行されているネストされたXサーバーを使用してこれを実行できます。ただし、これがゲームで使用されている場合、許容できないパフォーマンスに影響を与える可能性があります。

マルチヘッドモード(歴史的にはZaphodモードと呼ばれます)では、各画面に別々の座標系があり、ウィンドウを画面間でドラッグできません。たとえば、X11接続はDISPLAY = : 0として指定され、DISPLAY = : 0.0またはDISPLAY = : 0.1で画面を指定でき、アプリケーションを別の画面に簡単に強制できます。現在、Xサーバーがこのモードをサポートしているかどうかは、ディスプレイドライバとXサーバーがこれをサポートしていても、ウィンドウマネージャがサポートしていない可能性があります。

関連情報