Hallo,
interessante Sache! Genau diesen Anwendungsfall habe ich auch. Es scheint da nicht die Patentlösung zu geben, aber einige Ansätze. Eine Idee ist die, die hier beschrieben ist: http://ubuntuforums.org/showthread.php?t=1327186&p=12417455#post12417455.
Die Idee ist also, den Screen zu vergrößern und den über den eigentlichen Output hinausragenden Teil per VNC zu verschicken.
Mein Setup sieht so aus
Entsprechend dehne ich mit
xrandr --fb 2560x800
Meinen Screen auf die doppelte Breite aus und verteile ihn dann mit
x11vnc -clip 1280x800+1281+0
Jetzt kann ich Fenster rüberschieben und auf dem Handy betrachten. Für einen typischen Desktop wird das vielleicht schon reichen, vor allem, weil man in IDEs wie Texstudio im Quelltext die Möglichkeit hat "gehe zu PDF" anzuklicken, was dazu führt, dass auf dem Handy/Tablet direkt an die richtige Stelle gesprungen wird.
Allerdings harmoniert mein Windowmanager (i3) nicht so gut mit dieser Variante. Ideal wäre es, wenn sich ein VNC-Client als virtueller Output anmelden würde, aber das tut er nicht.
Eine weitere Variante ist, x11vnc im Einzelfenstermodus zu starten.
x11vnc -id pick
Dann einfach das zu verteilende Fenster wählen.
Oder, was auch geht: Den Appshare-Modus von x11vnc verwenden. Dann kann man auch innerhalb des übertragenen Fensters weitere Fenster öffnen. Dabei wird allerdings für jedes neue Fenster eine neue VNC-Verbindung hergestellt, weshalb der Viewer einen listen-Modus unterstützen muss, was mein Android-VNC-Client nicht tut. Deshalb habe ich das nicht getestet.
Das einzige, was mich am Einzelfenstermodus stört, ist, dass man nicht unabhängig von der Anzeige auf dem Hauptgerät scrollen kann. Das funktioniert zwar mit dem übergroßen virtuellen Screen, der dafür aber keinen Desktopwechsel meines Window-Managers überlebt.
edit: Das Wiki überrascht ja immer wieder. 👍
Ich habe gerade das hier gefunden: VNC (Abschnitt „Spezielle-Anwendungsfaelle“), Abschnitt Freigeben einer einzelnen Anwendung. Gleich mal probieren...
nochmal edit: Die Method funktioniert mäßig und bietet im Endeffekt dieselben Möglichkeiten wie die hier beschriebene Methode http://ubuntuforums.org/showthread.php?t=1327186&s=19d9441e7ffc1744926de107f0938048&p=11084437#post11084437 mit dem Unterschied, dass es bei der Xnest-Variante zumindest die Möglichkeit gibt, vom Host-X-Display fließend mit dem Cursor in das Gast-X-Display überzugehen.
Umgekehrt geht das nicht. Auch die Latex-Vorschau wird so nicht wirklich gut funktioniere. Darüberhinaus hatte ich praktische Probleme - sobald keine Aktion auf dem VNC-Screen erfolgte, wurde die Anzeige schwarz. Das ist in der Kombination
genauso passiert wie bei
In der identischen Konfiguration ohne Xnest trat das Problem nicht auf. Von daher halte ich es für ausgeschlossen, dass es ein Serverproblem ist und für unwahrscheinlich, dass es ein Client-Problem ist.
Ist aber auch nicht weiter wichtig. Interessant wäre wirklich, ob jemand eine Idee hat, wie man dem X-Server einen virtuellen Output vorgaukeln kann. Das wäre wirklich die eleganteste Lösung, denke ich.
und noch ein Edit:
OK, also wenn man den (erweiterten) Bildschirminhalt per VNC verteilen will, dann scheint es ein grundlegendes Problem zu geben. Es ist offensichtlich, dass nur Veränderungen am Bildschirminhalt übertragen werden. Alles andere wäre auch eine große Bandbreitenverschwendung und wäre wohl auch kaum nutzbar. Wenn man nun allerdings mit irgendeiner der o.g. Methoden ein Fenster oder einen Ausschnitt über VNC verteilt, der gerade nicht auf dem Serversystem aktiv angezeigt wird, dann werden an den Clienten auch keine Änderungen übertragen.
Um das zu umgehen kann man - ich erinnere mich auch, das bei der Recherche gelesen zu haben - folgendes tun: Einen zweiten Monitor anschließen, z.B. via VGA. Diesen zweiten Monitor dem aktuellen Screen (meist :0) hinzufügen, und zwar als Erweiterung, nicht gespiegelt. Das kann man z.B. mit xrandr oder arandr tun. Das betreffende Fenster (z.B. die Latex-Vorschau) auf diesen Monitor verschieben und dann per
x11vnc -id pick
verteilen. Dann das Signal mit einem VNC-Clienten abgreifen. Jetzt müsste man den VGA-Monitor auch abklemmen können und bekommt trotzdem immer jeden veränderten Frame auf den Client. Das dumme ist eben nur der Umweg über den echten VGA-Output. Da eben müsste man einen virtuellen erstellen können. Allerdings finde ich da nichts, denn sobald man im Zusammenhang mit X.Org nach virtual screen, virtual monitor, virtual output sucht, beziehen sich alle Ergebnisse auf den virtuellen Output, den man überhaupt erst erstellen muss, um einen erweiterten Desktop anzeigen zu können.