Używam XFCE 4.12 z 3 monitorami ustawionymi na dwa ekrany X i dwie karty graficzne na tym samym komputerze. Dwa monitory tworzą jeden ekran X przy użyciu funkcji nvidia twinview, którą jest Screen0 na Device0 w konfiguracji Xorg. Trzeci monitor jest dla drugiego ekranu, który jest Screen1 na Device1 w konfiguracji Xorg. Mogę przeciągać okna między monitorami na Screen0. Mogę również swobodnie poruszać myszą między Screen0 i Screen1, a nawet dane ze schowka są przenoszone między dwoma ekranami X, ok.
Oba te ekrany X działają jako niezależne komputery stacjonarne z własnym zestawem rzutni. Podoba mi się to w ten sposób i jest użyteczny do automatycznego „przyklejenia” się z jednej strony. Jednak jeśli uruchomię program na jednym ekranie X, nie mogę przenieść go na inny ekran X, po prostu przeciągając go. Jeśli chcę uruchomić ten program na drugim ekranie, muszę go ponownie uruchomić na tym ekranie.
Moje pytanie brzmi, czy istnieje sposób na przeniesienie programu podczas jego działania na inny ekran za pomocą komendy lub innej funkcji systemu Windows. Dzięki.
Aktualizacja: Rozpocznę nagrodę za to pytanie, ale zastanawiałem się nad tym przez jakiś czas. Aby zdobyć nagrodę, musisz podać kilka dowodów na dowód.
Odpowiedzi:
Nie można przenieść aplikacji X uruchomionej bezpośrednio na serwerze X, na którym aplikacja jest ostatecznie wyświetlana, jest to spowodowane tym, że klient X jest „związany z serwerem X (wyświetlacz X), na którym uruchomiono go przez całe życie” [ 1 ] To jest najprawdopodobniej dotyczy to metadanych przechowywanych przez serwer X na temat okien klienta, których nie można łatwo przenieść między serwerami X.
To samo dotyczy osobno skonfigurowanych ekranów (gdy nie używa się rozszerzeń, takich jak Xinerama lub Twinview) dla programów, które nie mają wyraźnej obsługi wielu ekranów - „W tej konfiguracji nie można przenosić okien między ekranami, poza kilka specjalnych programów, takich jak GIMP i Emacs, które obsługują wiele ekranów. ”[ 2 ]
Teoretycznie, jeśli aplikacja została zaprojektowana do obsługi przełącznika kontekstowego serwera X, mogłaby być wyposażona w nowy numer wyświetlacza / ekranu, zapisać stan swoich okien, połączyć się z nowym serwerem / ekranem X i wskrzesić swoje okna, ale niewiele aplikacje byłyby zaprojektowane w ten sposób i koniecznie wymagałyby albo dużej liczby elementów lub włączenia biblioteki, która by to jakoś ułatwiła.
Najlepszą opcją jest prawdopodobnie użycie innych aplikacji, które mogą działać jako serwer proxy między klientem X a wyświetlającym serwerem X w podobny sposób, jak ekran GNU może być używany w aplikacjach konsolowych i terminalu. Wydaje się, że Xmove i Xpra [ 3 i 4 ] są najczęściej stosowanymi implementacjami do tego celu. Warunkiem korzystania z nich jest to, że aplikacje, które uruchamiasz, muszą zarejestrować się w Xmove lub Xpra jako swoim serwerze X, aby móc kontekstowo przełączać się między różnymi serwerami wyświetlania.
Wreszcie, na SuperUser jest jeszcze jedno pytanie, które zadaje podobne pytanie w nieco innym celu (podłącz ponownie do X po awarii X, zamiast celowego odłączania / ponownego łączenia klienta) [ 5 ]
źródło