2015-03-31 245 views
2

我有一个OpenGL程序,在VNC会话中不能正常运行。为了在VNC会话中远程启动它,我需要通过vglrun来运行它。linux:检测你是否正在运行vnc会话

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

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

+0

我不知道的这个检测任何VNC服务器独立的方法,尤其是像'x11vnc'实现可以使用现有的加速会话,即使通过vnc连接,也不会使用'vglrun'。也许你可以从'glxinfo'输出中识别vglrun情况? – 2015-03-31 15:57:08

回答

2

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

事实上,在VNC(至少在真实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