Là hành vi này đã có thể?
Mọi thứ đều có thể trong linux. Bạn sẽ cần một số kiến thức cơ bản về Xserver , đôi khi và một hệ thống để kiểm tra, vì bạn đang làm phiền với X của mình và bạn chắc chắn cần trình duyệt đang chạy nếu bạn cần trợ giúp :-)
Theo tôi có ba giải pháp khả thi:
Thiết lập đa người dùng sử dụng Xinerama . Giải pháp đơn giản nhất tôi có thể nghĩ đến là thêm một màn hình ảo thứ ba vào cấu hình của bạn và chỉ cần di chuyển các cửa sổ ở đó bằng xdotool. Có một số nhược điểm của giải pháp này nhưng nó sẽ không đòi hỏi nỗ lực phải di chuyển các cửa sổ giữa các Xservers khác nhau mà nói chung là không thể.
Vì không thể di chuyển các cửa sổ giữa các Xservers khác nhau , chúng tôi cần một loại proxy như xmove hoặc Xpra để làm điều này cho chúng tôi. Tôi nghĩ rằng các cửa sổ sau đó sống trong một phiên Xfvb riêng biệt để ẩn các cửa sổ. Bạn có thể đính kèm và tách ra phiên.
Bất kể bạn đang sử dụng phương pháp nào, bạn cần một sự kiện khi màn hình được rút ra. Sự kiện sẽ được kích hoạt khi màn hình bị ngắt kết nối và cả khi được kết nối lại. Bạn có thể trình bày kịch bản để theo dõi sự kiện.
Tôi thích giải pháp sử dụng Xpra vì nhiều lý do. Tôi chỉ có thể cung cấp cho bạn một số gợi ý về cách làm điều đó. Các giải pháp không đầy đủ nhưng sẽ giúp bạn bắt đầu.
Giải pháp Xinerama
Thiết lập
Thiết lập Xinerama phải được mở rộng để có cấu hình tĩnh: Xem https://help.ubfox.com/community/XineramaHowTo
xem thêm màn hình thứ ba giả và Xdummy
bị ảnh hưởng
Chúng tôi có thể sử dụng xdotool để tìm kiếm các cửa sổ. Sau đó chúng ta có thể kiểm tra vị trí của họ và di chuyển chúng. Tôi giả sử hai màn hình với 1920x1080
cấu hình. Sau đây sẽ di chuyển tất cả các cửa sổ từ bên phải sang màn hình xinerama bên trái.
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 '.*')"
Bây giờ bạn có thể di chuyển tất cả các cửa sổ từ màn hình máy tính xách tay của bạn (screen0) sang màn hình thứ ba (ảo) nếu màn hình được gắn vào. Đồng thời bạn có thể di chuyển bất kỳ cửa sổ nào được lưu trữ trên màn hình thứ ba sang màn hình đầu tiên.
Giải pháp XPRA
Để sử dụng Xpra để di chuyển các cửa sổ, tất cả các cửa sổ phải được Xpra quản lý trước. Bạn phải khởi động toàn bộ máy tính để bàn bằng Xpra khi khởi động hệ thống. Hai lần một là máy tính để bàn chính của bạn nơi bạn làm việc và thứ hai chủ yếu là máy tính để bàn ảo.
xpra start-desktop :99
xpra start-desktop :1 --exit-with-children −−attach
Bây giờ bạn có thể có Windows cho màn hình bị ngắt kết nối đang chạy trong một phiên xpra riêng và gắn / tách khỏi màn hình khi màn hình chuyển.
xpra attach :99
xpra detatch :99
Ngoài ra còn có một phần mở rộng vỏ gnome liên tục có thể hữu ích nếu bạn muốn tự di chuyển một cửa sổ từ ẩn :99
sang bình thường :0
giữa các màn hình xpra đã bắt đầu.
Sự kiện
Bạn có thể xem để ngắt kết nối / kết nối lại của một màn hình cụ thể
có thể xem kích thước thay đổi của xinerama của bạn bằng xwininfo để độc lập với màn hình chưa được cắm nếu bạn muốn tức là mở rộng thiết lập của mình thành 3 màn hình và rút phích cắm thiết bị tùy ý. Lưu ý rằng điều này sẽ chỉ hoạt động cho giải pháp xpra.
xwininfo -display :0 -root | grep -e "-geometry"
-geometry 5760x2160+0+0