この動作はすでに可能ですか?
Linuxではすべてが可能です。Xをいじっていて、ヘルプが必要な場合はブラウザを実行する必要があるため、Xserverに関するいくつかの基本的な知識、テストする時間、およびシステムが必要になります。
私の意見では、3つの可能な解決策があります:
Multimonitor-setupsはXineramaを使用します。私が考えることができる最も簡単な解決策は、3番目の仮想画面を構成に追加し、xdotoolを使用してそこにウィンドウを移動することです。このソリューションにはいくつかの欠点がありますが、一般的には不可能な異なるXserver間でウィンドウを移動する手間を必要としません。
それは別の間のウィンドウ移動することはできませんのでXサーバーを、私たちは次のようにプロキシの種類を必要とするxmoveかXpra私たちのためにこれを行うには。その後、ウィンドウは別のXfvbセッションに住んで、ウィンドウを非表示にします。セッションにアタッチおよびデタッチできます。
使用しているメソッドに関係なく、モニターのプラグが抜かれたときにイベントが必要です。このイベントは、画面が切断されたときと再接続されたときにトリガーされます。スクリプトをデーモン化して、イベントを監視できます。
さまざまな理由から、Xpraを使用したソリューションをお勧めします。私はあなたにそれをする方法のいくつかのヒントを与えることができるだけです。ソリューションは完全ではありませんが、開始する必要があります。
Xineramaソリューション
セットアップ
Xineramaのセットアップは、静的構成に拡張する必要があります。https://help.ubuntu.com/community/XineramaHowToを参照してください
偽の3番目の画面とXdummyも参照してください
影響を受けるウィンドウを取得する
xdotoolを使用して、ウィンドウを検索できます。その後、それらの位置を確認して移動できます。私は2つのモニターが1920x1080
設定されていると仮定しています。以下は、すべてのウィンドウを右から左のxinerama画面に移動します。
while read xwindowid; do
eval $(xdotool getwindowgeometry --shell "$xwindowid")
if (( X > 1920 && X <= (1920 * 2))); then
xdotool windowmove --relative $WINDOW -1920 y
fi
done <<< "$(xdotool search --screen 0 '.*')"
これで、モニターが接続されている場合、ラップトップ画面(screen0)からすべてのウィンドウを3番目(仮想)の画面に移動できます。同時に、3番目の画面に保存されているウィンドウを最初の画面に移動できます。
XPRAソリューション
Xpraを使用してウィンドウを移動するには、すべてのウィンドウを事前にXpraで管理する必要があります。システムの起動時にXpraを使用してデスクトップ全体を起動する必要があります。2回は1つは作業を行うメインデスクトップで、もう1つは主に仮想デスクトップです。
xpra start-desktop :99
xpra start-desktop :1 --exit-with-children −−attach
これで、接続されていない画面用のWindowsを別のxpraセッションで実行し、モニターが切り替わったときにそこからアタッチ/デタッチできます。
xpra attach :99
xpra detatch :99
また、開始されたxpraディスプレイ間でウィンドウを非表示から通常に手動で移動する場合に便利な、廃止されたgnomeシェル拡張機能もあります。:99
:0
行事