linux:检测您是否';在vnc会话中重新运行

linux:检测您是否';在vnc会话中重新运行,linux,session,vnc,Linux,Session,Vnc,我有一个OpenGL程序,它不能在VNC会话中正确运行。为了在VNC会话中远程启动它,我需要通过vglrun运行它 我已经有了一个启动二进制文件的包装器脚本,但我需要一种可靠的方法来检测是应该通过vglrun运行它,还是按原样运行应用程序 我目前正在使用thinlinc,它似乎可以修改LD_LIBRARY_PATH、PATH和其他几个环境变量。所以最坏的情况是我可以检查thinlinc是否存在,但我希望有一种更通用的方法来检测您是否在VNC会话中运行。您可以使用标准的Unix命令来获取有关显示的

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

我已经有了一个启动二进制文件的包装器脚本,但我需要一种可靠的方法来检测是应该通过vglrun运行它,还是按原样运行应用程序


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

您可以使用标准的Unix命令来获取有关显示的信息

事实上,在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

我不知道有任何独立于vnc服务器的方法可以检测到这一点,特别是像
x11vnc
这样的实现可以使用现有的加速会话,在这种会话中,即使通过vnc连接,您也不会使用
vglrun
。也许您可以从
glxinfo
输出中识别vglrun情况?