如何通过 xvfb-run 的 VNC 连接到 X 应用程序?

ken*_*orb 3 linux x11 xvfb display x11vnc

当我Xvfb直接运行服务器时,x11vnc可以按照维基百科页面很好地附加到显示

但是,我想通过使用xvfb-run.

这是我的尝试(以运行wine explorer为例):

$ xvfb-run -l --server-args="-screen 0 1024x768x24" wine explorer
$ ps x | grep Xvfb
19536 pts/2    Sl     0:00 Xvfb :99 -screen 0 1024x768x24 -auth /tmp/xvfb-run.nJKLnF/Xauthority
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试运行时,x11vnc它失败了:

$ x11vnc -display :99.0 -usepw -forever -autoport 5900
24/11/2016 22:51:29 XOpenDisplay(":99.0") failed.
24/11/2016 22:51:29 Trying again with XAUTHLOCALHOSTNAME=localhost ...
No protocol specified

24/11/2016 22:51:29 ***************************************
24/11/2016 22:51:29 *** XOpenDisplay failed (:99.0)

*** x11vnc was unable to open the X DISPLAY: ":99.0", it cannot continue.
*** There may be "Xlib:" error messages above with details about the failure.
Run Code Online (Sandbox Code Playgroud)

我还尝试了x11vnc 故障排除页面中建议的命令,但没有成功。

我如何通过运行 X 命令xvfb-run以便它显示可以被访问x11vnc

meu*_*euh 6

正如您在ps输出中看到的那样,Xvfb服务器运行时带有参数,-auth后跟临时文件的名称。因此,要连接到此服务器,您需要提供保存在此文件中的 MIT-MAGIC-COOKIE 副本。通常这是通过在命令的环境中简单地设置 XAUTHORITY 变量来完成的,例如

XAUTHORITY=/tmp/xvfb-run.nJKLnF/Xauthority x11vnc ...
Run Code Online (Sandbox Code Playgroud)

为简化起见,您的xvfb-run脚本可能接受一个选项,-f后跟您选择的用于保存 cookie 的文件的名称。