Python

使用 xvfb-run 時出現奇怪的渲染問題

  • August 2, 2016

我有一個在 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 和 xenomai 的 Debian Jessie。我找不到 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 位螢幕深度,這可能是您的外觀問題的原因。


此外,傳遞給伺服器的參數(在 之後-s)必須被製成一個單一的字元串。所以最後,執行:

xvfb-run -s '-screen 0 1920x1080x16' ./myApp

引用自:https://unix.stackexchange.com/questions/299178