Linux:检测是否在VNC会话中运行

4

我有一个OpenGL程序,在VNC会话中无法正确运行。为了在远程VNC会话中启动它,我需要通过vglrun来运行它。

我已经有了一个包装脚本来启动二进制文件,但我需要一种可靠的方法来检测是否应该通过vglrun运行它,或者直接运行该应用程序。

我目前正在使用thinlinc,它似乎修改了LD_LIBRARY_PATH、PATH和其他几个环境变量。所以最坏的情况是我可以检查thinlinc是否存在于那里,但我希望有一种更通用的方法来检测是否在VNC会话中运行。


我不知道有任何独立于 VNC 服务器的检测方法,特别是像 x11vnc 这样的实现可以使用现有的加速会话,在这种情况下,即使通过 VNC 连接,也不需要使用 vglrun。也许你可以从 glxinfo 的输出中识别出 vglrun 的情况? - that other guy
1个回答

3

你可以使用标准的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
    . . .

因此,您可以使用以下命令轻松测试是否在 VNC 下:
xdpyinfo | grep VNC

然后检查其退出代码。

如果需要,您还可以指定您感兴趣的显示器,例如:

xdpyinfo -display myhost:22:0 | grep VNC

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接