Czy to zachowanie jest już możliwe?
W Linuksie wszystko jest możliwe. Będziesz potrzebować podstawowej wiedzy na temat Xserver , trochę czasu i systemu do testowania, ponieważ masz problemy z X i na pewno potrzebujesz przeglądarki, jeśli potrzebujesz pomocy :-)
Moim zdaniem istnieją trzy możliwe rozwiązania:
Konfiguracje wielomonitorowe wykorzystują Xinerama . Najprostszym rozwiązaniem, jakie mogę wymyślić, jest dodanie trzeciego wirtualnego ekranu do konfiguracji i po prostu przeniesienie tam okien za pomocą xdotool. Istnieją pewne wady tego rozwiązania, ale nie wymagałoby to wysiłku w przenoszeniu okien między różnymi serwerami Xserver, co zasadniczo nie jest możliwe.
Ponieważ nie jest możliwe, aby poruszać się pomiędzy różnymi oknami Xservers musimy rodzaj pełnomocnictwa jak xmove lub Xpra to zrobić dla nas. Myślę, że okna następnie żyją w osobnej sesji Xfvb, aby je ukryć. Możesz dołączyć i odłączyć do sesji.
Niezależnie od używanej metody potrzebujesz zdarzenia, gdy monitor zostanie odłączony od zasilania. Zdarzenie powinno zostać uruchomione, gdy ekran zostanie odłączony, a także po ponownym połączeniu. Możesz demonizować skrypt, aby obserwować zdarzenie.
Wolę rozwiązanie wykorzystujące Xpra z różnych powodów. Mogę tylko dać ci kilka wskazówek, jak to zrobić. Rozwiązania nie są kompletne, ale powinieneś zacząć.
Rozwiązanie Xinerama
Ustawiać
Konfiguracja Xinerama musi zostać rozszerzona, aby uzyskać konfigurację statyczną: patrz https://help.ubuntu.com/community/XineramaHowTo
zobacz także fałszywy trzeci ekran i Xdummy
uzyskać wpływ na okna
Możemy użyć xdotool do wyszukiwania okien. Następnie możemy sprawdzić ich pozycję i przesunąć je. Zakładam dwa monitory z 1920x1080
konfiguracją. Poniższe spowoduje przeniesienie wszystkich okien z prawego do lewego ekranu 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 '.*')"
Możesz teraz przenieść wszystkie okna z ekranu laptopa (screen0) na trzeci (wirtualny) ekran, jeśli monitor zostanie podłączony. W tym samym czasie możesz przenieść dowolne okno zapisane na trzecim ekranie na pierwszy ekran.
Rozwiązanie XPRA
Aby używać Xpra do przenoszenia okien, wszystkie okna muszą być wcześniej zarządzane przez Xpra. Musisz uruchomić cały pulpit za pomocą Xpra podczas uruchamiania systemu. Dwa razy jeden to główny pulpit, na którym pracujesz, a drugi to głównie pulpit wirtualny.
xpra start-desktop :99
xpra start-desktop :1 --exit-with-children −−attach
Teraz możesz mieć system Windows dla odłączonego ekranu działający w osobnej sesji xpra i dołączać / odłączać go, gdy monitor się przełącza.
xpra attach :99
xpra detatch :99
Istnieje również przerwane rozszerzenie powłoki gnome, które może być przydatne, jeśli chcesz ręcznie przenieść okno z ukrytego :99
do normalnego :0
między uruchomionymi ekranami xpra.
Wydarzenie
Możesz obserwować rozłączenie / ponowne połączenie określonego wyświetlacza
może uważaj na zmienione wymiary xineramy za pomocą xwininfo, aby uniezależnić go od niepodłączonego monitora, jeśli chcesz, tj. rozszerzyć konfigurację do 3 monitorów i odłączyć dowolne urządzenie. Zauważ, że będzie to działać tylko w przypadku rozwiązania xpra.
xwininfo -display :0 -root | grep -e "-geometry"
-geometry 5760x2160+0+0