このような動作を実現したいと思います。ラップトップ画面を使用するとき、最初のワークスペースが使用されます。 2番目の画面を(HDMI経由で)接続すると、2番目のワークスペースが使用され、この2番目の画面で新しく開いたすべてのウィンドウが2番目のスペースに表示されます。
セカンドスクリーンのプラグを抜くと、すべてのウィンドウが作成されたワークスペースにとどまり、ラップトップのワークスペースを切り替えて表示できます。
この動作はすでに可能ですか?
この動作はすでに可能ですか?
Linuxではすべてが可能です。 Xserver についてのいくつかの基本的な知識、テストする時間とシステムが必要になります。Xをいじっていて、ヘルプが必要な場合はブラウザを実行する必要があるためです:-)
私の意見では、3つの可能な解決策があります:
Multimonitor-setupsは Xinerama を使用します。私が考えることができる最も簡単な解決策は、3番目の仮想画面を構成に追加し、xdotoolを使用してそこにウィンドウを移動することです。このソリューションにはいくつかの欠点がありますが、 異なるXserver間でウィンドウを移動する の労力を必要としませんが、これは一般に不可能です。
異なる Xservers 間でウィンドウを移動することはできないため、これを行うには xmove または Xpra のようなプロキシが必要です。その後、ウィンドウは別の Xfvb セッションに住んでウィンドウを非表示にすると思います。セッションにアタッチおよびデタッチできます。
使用しているメソッドに関係なく、モニターのプラグが抜かれたときにイベントが必要です。このイベントは、画面が切断されたときと再接続されたときにトリガーされます。スクリプトをデーモン化して、イベントを監視できます。
さまざまな理由から、Xpraを使用したソリューションを好むでしょう。私はあなたにそれをする方法のいくつかのヒントを与えることができるだけです。ソリューションは完全ではありませんが、開始する必要があります。
Xineramaのセットアップは、静的構成に拡張する必要があります: https://help.ubuntu.com/community/XineramaHowTo を参照してください
xdotool を使用してウィンドウを検索できます。その後、それらの位置を確認して移動できます。 1920x1080
構成の2つのモニターを想定しています。以下は、すべてのウィンドウを右から左の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を使用してデスクトップ全体を起動 する必要があります。 2回は1つは作業を行うメインデスクトップで、もう1つは主に仮想デスクトップです。
xpra start-desktop :99
xpra start-desktop :1 --exit-with-children −−attach
これで、接続されていない画面用のWindowsを別のxpraセッションで実行し、モニターが切り替わったときにそこからアタッチ/デタッチできます。
xpra attach :99
xpra detatch :99
また、開始されたxpraディスプレイ間で非表示の:99
から通常の:0
にウィンドウを手動で移動する場合に役立つ dicontinued gnome Shell extension もあります。
特定のディスプレイの切断/再接続 を監視できます
多分 xwininfo を使用してxineramaの寸法の変化を監視し、3台のモニターにセットアップを拡張して任意のデバイスを取り外したい場合は、プラグなしのモニターから独立させます。これは、xpraソリューションでのみ機能することに注意してください。
xwininfo -display :0 -root | grep -e "-geometry"
-geometry 5760x2160+0+0