我有一个在beaglebone上远程运行的应用程序,用wxPython编写.我想使用Xvfb在虚拟帧缓冲区内运行应用程序,并使用VNC远程访问它.
您可能也应该知道我正在从应用程序内部启动VNC,如下所示:
display = Display(":99")
root = display.screen().root
win_ids = [w.id for w in root.query_tree()._data['children'] if w.get_wm_name() and 'myappname' in w.get_wm_name().lower()]
if (win_ids[0]):
print("Found my win id. Starting x11vnc")
system("x11vnc -quiet -sid %s -forever &" % win_ids[0])
else:
print("Can't find my Window ID!")
编辑:我使用Debian Jessie与内核版本3.8.13和xenomai.我找不到xvfb-run或Xvfb的版本号,但我可以告诉你我的xorg版本是1.16.4
当我启动应用程序时:
sudo xvfb-run ./myApp -s :99 -screen 0 1920x1080x16 -ac
我看到以下内容:
但是,当我单独启动Xvfb时:
Xvfb :99 -screen 0 800x600x16 -ac &
然后启动应用程序:
DISPLAY=:99 ./myApp
我看到了(应该是什么):
任何见解?
解决方法:
我们显然没有相同版本的xvfb-run,但我的是shell
脚本和运行时
xvfb-run ./myApp -s :99 -screen 0 1920x1080x16 -ac
根本没有参数传递给Xvfb服务器,所有参数都传递给应用程序.该应用程序必须是最后一行的-s 1920x1080x16等选项才能传递给服务器.没有这个屏幕的默认深度为8位,这可能是导致外观问题的原因.
此外,传递给服务器的args(在-s之后)必须变成单个sting.
最后,运行:
xvfb-run -s '-screen 0 1920x1080x16' ./myApp