複数のモニターに分散して開いている複数のウィンドウがあるとします。次に、単一のモニターの使用に切り替えます(おそらく、ラップトップをドッキングステーションから取り外したためです)。これで、すべてのウィンドウが1つの画面に表示されます。
次に、マルチモニター構成に切り替えます。これで画面スペースが増えましたが、最初はすべてのウィンドウが1つのモニターに積み上げられています。あなたの窓が彼らが元々あったモニターに戻るならば、それは素晴らしいでしょう。
これを実現する方法について何かアイデアはありますか?
大まかなアイデアですが、 xdotool
を使用していくつかのコマンドを作成することで、必要なことを実現できます。次に、1つまたは2つのモニターが接続されている場合は、それに応じてそれらを実行できます。
この記事のタイトルでこれを行う方法のかなり良い例があります: Xubuntu –モニター間でウィンドウを移動する 。
セクションからの抜粋:アクティブウィンドウを他のモニターに移動する(ついに!)
これが私たちがする必要があることです:
これを行うスクリプトは次のとおりです。
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
また、xdotool
を利用する別のアプローチを見つけましたが、それをシェルスクリプトでラップして、ショートカットキーに関連付けることができました。この方法を使用すると、ウィンドウを選択してウィンドウを表示し、フォーカスを合わせることができます。ショートカットキーの組み合わせを押すと、アプリケーションが別のウィンドウに送信されます。記事のタイトルは次のとおりです。 モニター間でWindowsを移動する 。
このメソッドは、次のスクリプトwindowmove.sh
を提供します。
#!/bin/bash
if [ $1 -eq 2 ]
then
POS1=`xrandr --current | head -2 | tail -1 | cut -d 'x' -f1 | cut -d ' ' -f3`
POS2=0
else
POS1=0
POS2=0
fi
/usr/bin/xdotool windowmove `/usr/bin/xdotool getwindowfocus` $POS1 $POS2
exit 0
POS1は、xrandrの出力を使用してメイン画面の幅を計算します。スクリプトでウィンドウを右に移動できないが、ウィンドウを左に移動できる場合は、その行をPOS1 = 1920に置き換え、1920をメインモニターのピクセル単位の幅に置き換えてみてください。
次に、KeyboardBindingsアプレットを実行します。
$ gnome-keybinding-properties
注:これは、GUIを介してさまざまなディストリビューションのさまざまな場所から実行できます。
次の2つのアプリケーション起動を使用して、2つのキーバインディングを作成します。
./Scripts/windowmove.sh 1
./Scripts/windowmove.sh 2