Das Sitzen auf demselben Computer und von einem anderen virtuellen Terminal als dem X-Server aus funktioniert nicht.
F-108: Ich verwende Linux Virtual Terminals (VTs), um 'Fast User Switching' zwischen Benutzersitzungen zu implementieren (z. B. Betty ist auf Strg-Alt-F7, Bobby ist auf Strg-Alt-F8 und Sid ist auf Strg-Alt -F1: Sie verwenden diese Tastenanschläge, um zwischen ihren Sitzungen zu wechseln.) Wie kommt es, dass die Ansicht in einem VNC-Viewer, der eine Verbindung zu x11vnc herstellt, entweder vollständig schwarz ist, nicht aktualisiert wird oder Pixel durcheinander geraten, es sei denn, die X-Sitzung, an die x11vnc angehängt ist, befindet sich in der aktive VT?
Dies scheint damit zu tun zu haben, wie Anwendungen (in diesem Fall die X-Server-Prozesse) "gut abgespielt" werden müssen, wenn sie sich nicht auf der aktiven VT befinden (manchmal als VC für virtuelle Konsole bezeichnet). Das heißt, sie sollten nicht von der Tastatur lesen oder Maus oder verwalten Sie die Videoanzeige, es sei denn, sie haben die aktive VT. Angesichts der Tatsache, dass der XGetImage () -Aufruf letztendlich die Framebuffer-Daten von der Videohardware selbst abrufen muss, wäre es sinnvoll, dass die Abfrage von x11vnc nur funktioniert, wenn die X-Sitzung die aktive Kontrolle über die VT hat.
Es scheint keine einfache Möglichkeit zu geben, dies zu umgehen. Selbst xwd (1) funktioniert in diesem Fall nicht (versuchen Sie es). Es müsste etwas auf einer niedrigeren Ebene getan werden, beispielsweise auf dem XFree86 / Xorg X-Server. Die Verwendung des Schatten-Framebuffers (eine Kopie des Video-Framebuffers wird im Hauptspeicher gespeichert) scheint das Problem nicht zu beheben (zuletzt überprüft 2007.)
Wenn niemand an der Workstation sitzt und Sie die VT nur aus der Ferne auf die mit Ihrer X-Sitzung verknüpfte VT umschalten möchten (damit x11vnc sie korrekt abfragen kann), können Sie den Befehl chvt (1) verwenden, z. B. "chvt 7". für VT # 7.