デュアルヘッドディスプレイの両方のモニターでアプリケーションをフルスクリーン表示するにはどうすればいいですか?

デュアルヘッドディスプレイの両方のモニターでアプリケーションをフルスクリーン表示するにはどうすればいいですか?

私は 2 台の Ubuntu 10.4 マシンを持っています (Ubuntu はますます多くの xorg.conf 設定を隠し続けているため、どこにあるのかわからなくなっています)。1 台はデュアル ヘッドで動作するラップトップです。DP1 は内部画面、VGA1 は外部モニターです。どちらも 1600x900 で動作します。もう 1 台のマシンはデスクトップで、VGA1 と HDMI1 (実際には DVI アダプター付きのディスプレイ ポート) の両方が 1600x900 で動作します。したがって、どちらの場合もデスクトップは 3200x900 です。ラップトップで VNC サーバーを実行し、デスクトップから (SSH トンネル経由で) サーバーに接続します。フル スクリーン ホット キーを押すと、1 つのモニターにリモート マシンの 1600x900 ビューが表示され、もう 1 つのモニターにローカル デスクトップの半分が表示されます。「フル スクリーン」は 1 つのローカル モニターを埋め尽くすようにしか拡大されません。

通常、これは Web ブラウザ、電子メール クライアント、またはその他のアプリケーションをフル スクリーンにするときに必要なことです。フル スクリーンが実際に何を意味するのかを明確にする X マジックがいくつかあることは確かで、VNC クライアント アプリケーションは指示されたことを忠実に受け入れているだけです。通常のアプリケーションでは通常のフル スクリーン動作を維持したいのですが、別の 3200x900 マシンに VNC しているときは、フル スクリーンが両方のローカル ディスプレイにまたがって表示されるようにしたいです。ウィンドウのサイズを「閉じる」ように変更するだけでは十分ではありません。なぜなら、1 つのディスプレイの上部と下部にローカル パネルがまだあるからです (ただし、自動的に非表示にするように設定できます)。さらに、VNC クライアント アプリケーション ウィンドウの境界もあります (-notitle を尊重していないようです)。

X が「フルスクリーン」サイズについて単一のアプリケーションに嘘をつくようにする良い方法はありますか? すべてのアプリケーションに嘘をつくようにできますか? xrandr --noprimary効果がないようです。

答え1

調べてみたところ、私が仮説を立てたX11マジックの現代版は、実はウィンドウマネージャマジックだった。_NET_WM_STATE_フルスクリーン私のVNCクライアントは実際にそのリクエストを使用しており、単一のモニターに拡張されています。最初に設定する必要があるようです。_NET_WM_フルスクリーンモニターどのモニターを上端/下端/左端/右端として使用するか記述する必要がありますが、そうではありません。ただし、dpkg からソースを取得して、ハックしてみました。_NET_WM_FULLSCREEN_MONITORS を使用しても、正しい動作を引き出すことができませんでした。VNC クライアントは、3200x900 にする必要があることを認識しており、上部のウィンドウでそのサイズにサイズ変更しようと数回 (30 回) 試みます (XA_WM_NORMAL_HINTS でベースと最大の幅と高さの両方を設定し、XResizeWindow() を使用します) が、常に無視されます。おそらく、compiz が誤動作しているのでしょうか。

しかし、VNC クライアントには、ウィンドウ マネージャーを経由せずに X を直接処理するコードもあります。WM 検出コードを削除すると、ルート ウィンドウがより直接的に変更され (XtNoverrideRedirect、最上部への XReparentWindow、XMapRaised など)、うまく機能します (フルスクリーン解除機能の検出コードも無効にしている限り)。おそらく、さらにうまく機能します。VNC クライアント ウィンドウをフルスクリーン解除するまで、Alt + Tab キーやその他のウィンドウ管理キーがリモート マシンに伝わります。

したがって、これはハッキーで、いくつかの落とし穴*があるかもしれませんが、少なくとも今のところは、私の考えでは許容できる動作をするようになりました。

*: フルスクリーンを解除しても、ルート ウィンドウや覆われていた他のウィンドウは適切に再描画されません。ただし、別のビューポートに切り替えてから元に戻すと、強制的に再描画されるため、これは許容できる回避策です。

答え2

検討すべきもう 1 つの可能性としては、一部のプログラムの起動時に特定のサイズ/場所に強制的に設定できる機能があるかもしれません。

次のように、E17 アイコン経由で Opera を実行するコマンドを定義します。

/usr/local/bin/opera-11.01 -geometry 1600x3200-0+100 %U

Opera ウィンドウのサイズと位置を設定します。

Xemacs では場所を制御することはできませんが、init.el で起動時に実行するウィンドウのサイズを指定できます。

(set-frame-size (ウィンドウフレーム) 140 80 )

これらはあなたの状況にぴったりの解決策ではありませんが、実行しているソフトウェアをフル(ダブル)スクリーンに相当する特定のサイズ/場所に設定することを検討できるかもしれません。すべてのソフトウェアにそのようなオプションがあるわけではありませんが、検討する価値はあるかもしれません。

関連情報