Ich verwende XFCE 4.12 mit 3 Monitoren, die auf zwei X-Bildschirmen und zwei Grafikkarten auf demselben Computer installiert sind. Zwei der Monitore bilden mit der nvidia twinview-Funktion einen einzigen X-Bildschirm. Dies ist Screen0 auf Device0 in der Xorg-Konfiguration. Der dritte Monitor ist für den zweiten Bildschirm vorgesehen, nämlich Bildschirm1 auf Gerät1 in der Xorg-Konfiguration. Ich kann feine Fenster zwischen den Monitoren auf Screen0 ziehen. Ich kann auch meine Maus frei zwischen Screen0 und Screen1 bewegen und sogar die Daten der Zwischenablage werden zwischen den beiden X-Bildschirmen übertragen.
Beide X-Bildschirme fungieren als unabhängige Desktops mit eigenen Ansichtsfenstern. Ich mag es so und es ist nützlich, um eine Seite automatisch "kleben" zu lassen. Wenn ich jedoch ein Programm auf einem X-Bildschirm starte, kann ich es nicht durch einfaches Ziehen auf den anderen X-Bildschirm verschieben. Wenn ich das Programm auf dem anderen Bildschirm ausführen möchte, muss ich es auf diesem Bildschirm neu starten.
Meine Frage ist, ob es eine Möglichkeit gibt, das Programm zu verschieben, während es mit einem Befehl oder einer anderen Funktion von X-Fenstern auf dem anderen Bildschirm ausgeführt wird. Vielen Dank.
Update: Ich werde mit dieser Frage ein Kopfgeld anfangen, aber ich habe mich eine Weile darüber gewundert. Um das Kopfgeld zu verdienen, müssen Sie einige Nachweise vorlegen.
Antworten:
Sie können eine X-Anwendung, die direkt auf dem X-Server gestartet wurde, auf dem die Anwendung letztendlich angezeigt wird, nicht verschieben. Dies liegt daran, dass ein X-Client "an den X-Server gebunden ist (X-Anzeige), auf dem er während seiner Lebensdauer gestartet wurde" [ 1 ] Am wahrscheinlichsten ist dies mit Metadaten zu tun, die der X-Server über die Fenster eines Clients enthält, die nicht einfach zwischen X-Servern übertragen werden können.
Dasselbe gilt für separat konfigurierte Bildschirme (wenn keine Erweiterungen wie Xinerama oder Twinview verwendet werden) für Programme, in denen keine explizite Unterstützung für mehrere Bildschirme angegeben ist - "Mit dieser Konfiguration ist es nicht möglich, Fenster zwischen Bildschirmen zu verschieben ein paar spezielle Programme wie GIMP und Emacs, die Multi-Screen-Unterstützung bieten. "[ 2 ]
Theoretisch könnte eine Anwendung, die für die Bewältigung eines X-Server-Kontextwechsels entwickelt wurde, mit der neuen Anzeige- / Bildschirmnummer versehen werden, den Status ihrer Fenster speichern, eine Verbindung mit dem neuen X-Server / Bildschirm herstellen und ihre Fenster wiederherstellen, aber nur wenige Anwendungen würden auf diese Weise entworfen und würden notwendigerweise entweder viel Boilerplate oder die Aufnahme einer Bibliothek beinhalten, die dies irgendwie erleichtern würde.
Die beste Option für Sie ist wahrscheinlich, andere Anwendungen zu verwenden, die als Proxy zwischen einem X-Client und dem angezeigten X-Server fungieren können, ähnlich wie der GNU-Bildschirm für Konsolenanwendungen und das Terminal verwendet werden kann. Xmove und Xpra [ 3 & 4 ] scheinen die am häufigsten verwendeten Implementierungen dafür zu sein. Die Einschränkung bei der Verwendung dieser Anwendungen besteht darin, dass die Anwendungen, die Sie starten, bei Xmove oder Xpra als X-Server registriert werden müssen, um in der Lage zu sein, den Kontext zwischen verschiedenen Anzeigeservern zu wechseln.
Schließlich gibt es eine andere Frage zu SuperUser, die eine ähnliche Frage für einen etwas anderen Zweck stellt (Verbindung zu X nach X-Absturz wiederherstellen, statt absichtlich den Client zu trennen / erneut zu verbinden). [ 5 ]
quelle