web-dev-qa-db-ja.com

qt4アプリケーションはXephyrでは機能しません

プライマリユーザーとしてログインしているときに、Xephyrを使用してアプリケーションを別のユーザーとして実行しています。

qt4ベースを除いて、ほとんどのアプリケーションはXephyrで正常に動作します。具体的には:

electrum
ipython qtconsole
qbittorrent

上記のアプリケーションは、通常のXサーバーで起動すると機能しますが、Xephyrで起動すると、ウィンドウフレームのみが表示されますが、空白になっています。

この問題を解決するにはどうすればよいですか?

私のOSはDebianWheezyで、バージョン番号は次のとおりです。

xserver-xephyr    1.12.4
libqtcore4        4.8.2

Xephyrセッションを開始する方法は次のとおりです。

Xephyr :1 -screen 1920x1080 -nolisten tcp -reset -terminate >/dev/null 2>&1 &
terminator --execute su - user2 -c 'DISPLAY=:1 startlxde >/dev/null 2>&1 &'

[〜#〜] update [〜#〜]XFCE4でテストしましたが、同じ問題が発生します。 QT4アプリケーションがまだ機能せず、空白のウィンドウが表示されます。例として、qbittorrentウィンドウがどのように見えるかを見てください。

enter image description here

3
Martin Vegter

質問はXephyrが正しく実行されていることを前提としていますが(これに関する情報が提供されていないため)、少なくとも、Debian XfceWheezyのXephyrでqBittorrentが正常に実行されることを確認しました。

以下のスクリーンショットは、XephyrのqBittorrent2.9.8を示しています。

qBittorrent 2.9.8 in Xephyr on Debian Xfce Wheezy

これはDebianXfce Wheezyでテストされ、現在までに入手可能なlibqtcore4およびxserver-xephyrの最新パッケージを使用しています。これらは、質問で引用されているバージョンと類似しています。

$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description:    Debian GNU/Linux 7.9 (wheezy)
Release:    7.9
Codename:   wheezy

$ dpkg-query -W | grep libqt
libqt4-dbus:i386    4:4.8.2+dfsg-11
libqt4-network:i386 4:4.8.2+dfsg-11
libqt4-xml:i386 4:4.8.2+dfsg-11
libqtcore4:i386 4:4.8.2+dfsg-11
libqtdbus4:i386 4:4.8.2+dfsg-11
libqtgui4:i386  4:4.8.2+dfsg-11

$ dpkg-query -W | grep xephyr
xserver-xephyr  2:1.12.4-6+deb7u6

問題の特定

私が見つけた唯一の関連する検索は Bug 71421 で、「Qt5アプリはXephyrで動作しません」と報告しています。

Xephyr内でQt5(または明らかにGTK3)アプリを実行しようとすると、機能しません(何も表示されていないため)。 GTK2またはQt4は、GLXアプリ(glxgearsなど)と同様に問題なく動作します。また、DMが実行されていないスタンドアロンXサーバーでテストされています-Qt5は、Xephyrの内部では機能しませんが、完全に正常に機能します。

このバグは、Qt5アプリケーションにのみ影響することを除いて、質問の場合と似ています。このバグはQt5によるもので、今年4月下旬に最近修正されました。

それ以外に、Xephyrでアプリケーションがどのように実行されたかについての情報は提供されていませんでした。

上記のアプリケーションは、通常のXサーバーで起動すると機能しますが、Xephyrで起動すると、ウィンドウフレームしか表示されませんが、空白になります。

引用されたテキストに基づいて、私は他に疑問があります:Xephyrは無効な引数で実行されましたか?むしろ、アプリケーションはXephyrで別のユーザーとしてどのように実行されましたか?

Qt4アプリケーションがXephyrで機能しないことが確かな場合は、Qt4パッケージで報告されていない問題である可能性があります。しかし、qBittorrent(Qt4に基づく)がXephyrで正常に実行されることを確認したので、「別のユーザー」または現在のセッションからのXephyrの実行方法に問題がある可能性があります。

Xephyrの使用法について

これらは、Xephyrを使用して特定のタスクを実行する方法について説明しているオンラインソースです。

  1. Xephyr ArchWikiで。 Xephyrの実行を開始するのに適した場所ですが、Xephyrでターミナルまたはウィンドウマネージャーを実行する以外の広範な使用法についてはあまり説明していません。

  2. Xephyrの使用を開始する方法がわかりません。何が問題なのですか? Xorgメーリングリスト(2014年1月23日木曜日17:16:40 PST)。XephyrでXtermを実行する別の方法。

  3. 複数のXデスクトップを実行する方法は? スーパーユーザーで、2009年7月22日に質問。 Xephyrを使用することを提案した回答の1つ。ソース#1で提案されているのと同様の方法。

  4. マルチシート構成/ Xephyr:Xephyrでマルチターミナルを作成する方法 ウィキブックス。

  5. 複数のXserverからのスクリーンショット UnixおよびLinuxStack Exchangeで、2014年8月21日に質問。

  6. ハウツー:Firefox(およびその他のもの)をXephyrで別のユーザーとして実行する 。これは、質問で示唆されているのと最も類似した使用法のようです。

これらのソースを引用した理由は、XephyrでQtアプリケーションを正しく実行しているかどうかを明確にするのに役立つ可能性のある関連するヒントを提供するためです。

そうは言っても、「プライマリユーザーとしてログインしているときにXephyrを使用して別のユーザーとしてアプリケーションを実行する」という最初の文を理解するには注意が必要です。結局のところ、XephyrでqBittorrentをテスト実行するための「別のユーザー」を作成しませんでした。おそらく他の誰かがより良い答えを与えることができます。

1
clearkimura

Xephyrを起動するために使用されているコマンドと、使用されているウィンドウマネージャーを知っておくと便利な場合があります。

私はこれを試しました:

Xephyr :1 &
DISPLAY=:1 openbox &
DISPLAY=:1 qbittorrent

qbittorrentのウィンドウコンテンツが不完全になりました。 xfwm4で同じことを試してみてください:

Xephyr :1 &
DISPLAY=:1 xfwm4 &
DISPLAY=:1 qbittorrent

その後、すべてが正常であり、qbittorrentが使用可能です。

なぜ違いがあるのか​​説明できませんが、明らかに違いがあります。コンポジットに問題があると思われ、コンポジットを有効にしてXephyrを実行しようとしました。

Xephyr +extension Composite :1 &

しかし、これは違いがないようです。

編集:xfwm4には合成機能がありますが、openboxにはありません。それにもかかわらず、おそらくコンポジットが重要な鍵です。

0
mviereck