当我直接运行Xvfb服务器时,x11vnc可以按照Wikipedia page附加到显示器上.
但是,我想通过使用xvfb-run运行X应用程序来实现相同目的.
这是我的尝试(以葡萄酒探险家为例):
$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
但是,当我尝试运行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.
我也尝试了从x11vnc troubleshooting page建议的命令,但没有运气.
如何通过xvfb-run运行X命令,以便x11vnc可以访问它?
解决方法:
正如您在ps输出中看到的那样,Xvfb服务器使用参数-auth运行,后跟临时文件的名称.因此,要连接到此服务器,您需要提供此文件中保存的MIT-MAGIC-COOKIE的副本.
通常,这可以通过在命令的环境中简单地设置XAUTHORITY变量来完成,例如
XAUTHORITY=/tmp/xvfb-run.nJKLnF/Xauthority x11vnc ...
为简化起见,您的xvfb运行脚本可能会接受选项-f,后跟您选择的用于保存cookie的文件的名称.