web-dev-qa-db-ja.com

デュアルヘッドディスプレイの両方のモニターでアプリケーションをフルスクリーンにする方法は?

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

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

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

2
Eric Angell

掘りました。私が仮定したX11マジックの最新バージョンは、実際にはウィンドウマネージャーマジックです _ NET_WM_STATE_FULLSCREEN 。私のVNCクライアントは実際にその要求を使用しており、単一のモニターに拡張されています。最初に _ NET_WM_FULLSCREEN_MONITORS を設定して、どのモニターを上/下/左/右のエッジとして使用するかを説明する必要があるようですが、そうではありません。しかし、私はdpkgからソースを引き出し、それをハックするために掘り下げました。 _NET_WM_FULLSCREEN_MONITORSを使用しても、正しい動作を引き出すことができませんでした。 VNCクライアントは、3200x900に到達することを認識しており、トップウィンドウで数回(30)サイズ変更を試みます(XA_WM_NORMAL_HINTSでベースと最大の幅と高さの両方を設定し、XResizeWindow()を使用します)が、常に無視されます。おそらくcompizは誤動作していますか?

ただし、VNCクライアントには、ウィンドウマネージャーを経由せずにXを直接処理するためのコードもあります。 WM検出コードを切り取ると、ルートウィンドウがより直接的に変更され(XtNoverrideRedirect、上部のXReparentWindow、XMapRaisedなど)、それは魅力のように機能します(非フルスクリーン機能で検出コードも無効にする限り) )。間違いなくさらにうまく機能します。VNCクライアントウィンドウのフルスクリーンを解除するまで、alt-tabやその他のウィンドウ管理キーがリモートマシンに渡されるようになりました。

ですから、それはハッキーであるかもしれませんし、そうでなければいくつかの落とし穴*がありますが、少なくとも今のところ、私はそれが私の心の中で受け入れられるように振る舞うようになっています。

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

3
Eric Angell

探索する別の可能性は、いくつかのプログラムが起動時に特定のサイズ/場所に強制される機能である可能性があります。

次のようなE17アイコンを介してOperaを実行するコマンドを定義します:

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

これにより、Operaのウィンドウのサイズと場所が設定されます。

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

(set-frame-size(window-frame)140 80)

これらは状況に対する正確な解決策ではありませんが、実行しているソフトウェアをフル(ダブル)画面に相当する特定のサイズ/場所に設定することを検討できますか?すべての人がそのようなオプションを持っているわけではありませんが、おそらく調べる価値があります。

0
skm