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