複数のウィンドウが開いていて複数のモニターに分散しているとしましょう。その後、単一のモニターを使用するように切り替えます(おそらくドックからノートブックを取り出したからです)。これで、すべてのウィンドウが1つの画面に表示されます。
その後、マルチモニタ構成に戻ります。これで画面スペースが増えましたが、最初はすべてのウィンドウが単一のモニターに積み重ねられていました。ウィンドウを元のモニターに戻すことができればよさそうです。
これを達成する方法についてのアイデアはありますか?
答え1
xdoツール
おおよそのアイデアですが、以下を使用していくつかのコマンドを作成して欲しいものを得ることができます。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
シェルスクリプトでラップしてからショートカットキーに関連付けることができます。この方法では、ウィンドウを選択して上げてフォーカスを取得し、ショートカットキーの組み合わせをタップしてアプリケーションを別のウィンドウに送信できます。記事のタイトルは次のとおりです。モニタ間ウィンドウの移動。
この方法は次のスクリプトを提供します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をメインモニタの幅(ピクセル単位)に置き換えます。
次に、キーバインディングアプレットを実行します。
$ gnome-keybinding-properties
メモ:これは、さまざまなディストリビューションのさまざまな場所でGUIを介して実行できます。
次の2つのアプリケーション実行を使用して2つのキーバインディングを作成します。
- #1 バインディングコマンド:
./Scripts/windowmove.sh 1
- バインディング#2コマンド:
./Scripts/windowmove.sh 2
答え2
不要xdotool
。以下を使用してすべてのウィンドウ位置を記録し、簡単に復元できますwmctrl
。
記録:wmctrl -lG > ${rcfile}
場所:
while read row; do
IFS=" " read id g x y w h _ <<< ${row}
wmctrl -ir ${id} -e 0,${x},${y},${w},${h}
done < ${rcfile}