web-dev-qa-db-ja.com

別のモニターでウィンドウを開くにはどうすればよいですか?

マルチモニターでは、これまでウィンドウを手動でドラッグしてきました。デュアルヘッド設定で特定の画面でウィンドウを開く方法はありますか? (複数のXサーバーディスプレイと混同しないでください。)

何かのようなもの: SCREEN=2 firefoxまたはopen-in-screen 2 firefox

それが重要であれば、私の環境はKWinウィンドウマネージャを使用するKDEです。 KWinウィンドウルールはタイトルなどの一部のプロパティにのみ一致できますが、フィルターとして環境変数を見つけることができませんでした。

セカンダリディスプレイはプライマリ画面を拡張します。

$ xrandr -q
Screen 0: minimum 320 x 200, current 3520 x 1080, maximum 32767 x 32767
LVDS1 connected 1600x900+0+0 (normal left inverted right x axis y axis) 382mm x 214mm
   1600x900       60.1*+
   1024x768       60.0  
   800x600        60.3     56.2  
   640x480        59.9  
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 connected 1920x1080+1600+0 (normal left inverted right x axis y axis) 477mm x 268mm
   1920x1080      60.0*    50.0     59.9  
   1920x1080i     60.1     50.0     60.0  
   1680x1050      59.9  
   1280x1024      75.0     60.0  
   1440x900       59.9  
   1280x960       60.0  
   1280x720       60.0     50.0     59.9  
   1024x768       75.1     70.1     60.0  
   832x624        74.6  
   800x600        72.2     75.0     60.3     56.2  
   720x576        50.0  
   720x480        60.0     59.9  
   640x480        75.0     72.8     66.7     60.0     59.9  
   720x400        70.1  
DP1 disconnected (normal left inverted right x axis y axis)
9
Lekensteyn

いいえ、直接行うことはできません。 Xアーキテクチャーでは、表示される2つの物理モニターはアプリケーションからは認識できません。この抽象化を回避するには、可視ワークスペースのどの領域がどのモニターに対応するかを判別し、ウィンドウを正しいオフセットに配置する必要があります。

賢明なツールキットは-geometryオプションをサポートしています。これにより、アプリケーションは特定の位置に配置することをリクエストできます。このオプションが利用できない場合、EWMH/NetWM互換のXウィンドウマネージャーがあればwmctrlを使用して、既存のウィンドウを移動およびサイズ変更できます(wmctrl(1)を参照)、オプション-rおよび-e)。私はdevilspieを使用していくつかのウィンドウの配置を強制します。もちろん、選択したウィンドウマネージャーにはウィンドウの配置を強制する独自の機能があります。

devilspieを使用すると、Xウィンドウに特定のアクションを適用したり、Xウィンドウのプロパティを使用してさまざまなウィンドウやアプリケーションを識別したりできます。あなたにとって重要なルールはgeometry "<width>x<height>+<xoffset>+<yoffset>"です。

ただし、別の物理モニターが自分自身をいつ、どこで開始するかを常に計算する必要があります。しかし、これはそれほど難しくありません。xrandrは、出力名で始まる各行で"<width>x<height>+<xoffset>+<yoffset>の形式でモニターを使用する方法と場所を示します。

実装が変わる可能性があるので(そしてそうします!)、間違いなく機能する方法はありません。 wmctrlは通常、ウィンドウタイトルで機能し、ターゲットを識別します。 devilspieもそのクラスを参照できますが、Xウィンドウクラスを指定して、そのジオメトリを指定できないツールキットについては知りません。

もちろん、常に2つのxephyrインスタンスを開始して、左側の画面と右側の画面を塗りつぶし、DISPLAY環境変数を介して画面のアドレスを指定することもできますが、このソリューションには他の欠点もあります。

理論的には、ウィンドウの配置を管理する権限はウィンドウマネージャーです。したがって、ウィンドウマネージャーができないことをしたい場合は、ハックになり、これを実現する一般的な方法がない理由にもなります。

ただし、具体的なユースケースがAndroidエミュレーター...である場合、シェルでSCREEN=n fooappを指定するオプションを要求することとは大きく異なり、devilspieヒント:アプリケーションをウィンドウクラスで識別するのが最善であることがわかりました。

4
Bananguin

これはウィンドウマネージャー固有のソリューションです。これは、KDEのデフォルトのウィンドウマネージャーであるkwinでそれを行う方法です。

アプリケーションのタイトルバーを右クリックして、[その他の設定]-> [特別なアプリケーション設定]を選択した場合。

[ウィンドウマッチング]タブに移動します。 [ウィンドウプロパティの検出]ボタンをクリックします。次に、マウスカーソルでアプリケーションのメインウィンドウをクリックします。ウィンドウクラスなどを選択し、ウィンドウの位置情報なども取得します。

次に、[サイズと位置]タブをクリックします。 [ボックスの位置]と[ボックスのサイズ]をクリックし、両方の右側にあるドロップダウンボックスをクリックして、記憶するように設定します。

次に[OK]をクリックします。

次回アプリを実行するときは、同じサイズで同じモニター上にある必要があります。

私はこれをKDEで使用して、3モニター構成で左モニターのuRxvt端末を開き、毎回動作します。

幸運を。

4
rking

これは、デュアルモニターのセットアップ方法によって異なります。

XINERAMAを使用して両方のディスプレイをXのように見せている場合は、-geometryオプションを使用して、特定の場所に表示されるようにアプリケーションに要求します。ディスプレイを別の画面として設定している場合は、DISPLAYを使用してこれを実現します。

これらを試してみてください:

$ DISPLAY=0.0 xterm &
$ DISPLAY=0.1 xterm &

モニターが画面0と1の場合、これにより各モニターにxtermが生成されます。

3
casey

xdotoolxprop、&wmctrlを使用するこのメソッドに出くわしました。

以下のスクリプトが行うことは次のとおりです。

  1. アクティブなウィンドウを見つける
  2. 最大化された状態を取得して覚えてください
  3. 最大化を削除
  4. ジオメトリを取得する
  5. 新しい位置を計算する
  6. それを移動
  7. 以前の状態に基づいて最大化
  8. 上げる
  9. これを行うスクリプトは次のとおりです。

脚本

これにより、アクティブなウィンドウが他のモニターに移動します。並べてしか扱えません。水平、モニターの構成。

wid=`xdotool getactivewindow`
max_state=`xprop -id $wid _NET_WM_STATE`

wmctrl -ir $wid -b remove,maximized_vert,maximized_horz
eval `xdotool getwindowgeometry --Shell $wid`

new_x=1600
if [[ "$X" -ge "$new_x" ]]; then
  new_x=0
fi

xdotool windowmove $wid $new_x $Y
if [ -z "${max_state/*_NET_WM_STATE_MAXIMIZED_*/}" ]; then
  wmctrl -ir $wid -b add,maximized_vert,maximized_horz
fi

xdotool windowraise $wid

ソース:Xubuntu –モニター間でウィンドウを移動する

2
slm

同様の問題がありました。以下が見つかりました:

  1. ウィンドウのタイトルバーを右クリックして、[その他のアクション]-> [ウィンドウマネージャーの設定]を選択します。
  2. 左側の列で「フォーカス」を選択します。
  3. トグルオプション「マウスに続くアクティブスクリーン」。

他のデフォルトが指定されていない場合、ウィンドウは現在アクティブな画面に表示されます。上記の手順で、マウスの位置がこのアクティブな画面を定義します。

0
BiberBb