我有一个在 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!")
编辑:我使用内核版本为 3.8.13 的 Debian Jessie 和 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
我看到这个(应该是什么):
有什么见解吗?
答案1
我们显然没有相同版本的xvfb-run
,但我的是一个 shell 脚本,当你运行
xvfb-run ./myApp -s :99 -screen 0 1920x1080x16 -ac
根本没有参数传递到 Xvfb 服务器,所有参数都传递到应用程序。应用程序必须是最后上线的选项,例如-s 1920x1080x16
传递到服务器的选项。如果没有这个,屏幕的默认深度8位,这可能是你的外表问题的原因。
此外,传递给服务器的参数(在 之后-s
)必须制成单个字符串。最后,运行:
xvfb-run -s '-screen 0 1920x1080x16' ./myApp