xvfb-runを使用したときの奇妙なレンダリングの問題

xvfb-runを使用したときの奇妙なレンダリングの問題

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私のバージョンはシェルスクリプトであり、実行すると

xvfb-run ./myApp -s :99 -screen 0 1920x1080x16 -ac

Xvfbサーバーにはパラメータはまったく渡されず、すべてのパラメータはアプリケーションに渡されます。アプリケーションは、-s 1920x1080x16サーバーに渡されるオプションなど、オンラインで最後のオプションでなければなりません。これがなければ、画面の基本深さは8ビット、これが外観問題の原因である可能性があります。


また、サーバーに渡されるパラメーター(以降-s)は単一の文字列でなければなりません。最後に、次を実行します。

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

おすすめ記事