我有一个OpenGL程序,在VNC会话中无法正确运行。为了在远程VNC会话中启动它,我需要通过vglrun来运行它。
我已经有了一个包装脚本来启动二进制文件,但我需要一种可靠的方法来检测是否应该通过vglrun运行它,或者直接运行该应用程序。
我目前正在使用thinlinc,它似乎修改了LD_LIBRARY_PATH、PATH和其他几个环境变量。所以最坏的情况是我可以检查thinlinc是否存在于那里,但我希望有一种更通用的方法来检测是否在VNC会话中运行。
你可以使用标准的Unix命令xdpyinfo
获取有关显示器的信息。
事实上,在VNC(至少在Real VNC下),它会在可用扩展列表中报告字符串VNC-EXTENSION
,例如:
$ xdpyinfo
name of display: CTNLL021:13.0
version number: 11.0
vendor string: The X.Org Foundation
vendor release number: 60900000
X.Org version: 6.9.0
. . .
number of extensions: 29
. . .
GLX
VNC-EXTENSION
X-Resource
. . .
xdpyinfo | grep VNC
然后检查其退出代码。
如果需要,您还可以指定您感兴趣的显示器,例如:
xdpyinfo -display myhost:22:0 | grep VNC
x11vnc
这样的实现可以使用现有的加速会话,在这种情况下,即使通过 VNC 连接,也不需要使用vglrun
。也许你可以从glxinfo
的输出中识别出 vglrun 的情况? - that other guy