Chciałbym osiągnąć takie zachowanie: Kiedy korzystam z ekranu laptopa, używany jest mój pierwszy obszar roboczy. Po podłączeniu drugiego ekranu (przez HDMI) używany jest drugi obszar roboczy i wszystkie nowe otwarte okna na tym drugim ekranie wylądują w drugim obszarze, z wyjątkiem tego, że przełączam obszar roboczy na drugim ekranie na inny obszar roboczy.
Po odłączeniu drugiego ekranu wszystkie okna pozostaną w obszarach roboczych, w których zostały utworzone, i mogę je przełączać na laptopie, aby je zobaczyć.
Czy to zachowanie jest już możliwe?
Odpowiedzi:
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.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.
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.
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
źródło