Les applications qt4 ne fonctionnent pas dans Xephyr

J'utilise Xephyr pour exécuter des applications en tant Xephyr user, tout en étant connecté en tant qu'user principal.

La plupart des applications fonctionnent bien dans Xephyr , à l'exception de qt4 . Plus précisément:

 electrum ipython qtconsole qbittorrent 

Les applications ci-dessus fonctionnent quand elles sont démarrées dans un server X normal, mais quand je les lance dans Xephyr , je ne vois que le cadre de la window, mais il est vide.

Comment puis-je résoudre ce problème?

Mon operating system est Debian Wheezy et les numéros de version sont:

 xserver-xephyr 1.12.4 libqtcore4 4.8.2 

Voici comment je commence ma session Xephyr :

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

MISE À JOUR J'ai testé avec XFCE4 et j'ai le même problème. Les applications QT4 ne fonctionnent toujours pas, j'obtiens une window vide. Par exemple, voyez comment la window de qbittorrent ressemble à ceci:

entrer la description de l'image ici

Alors que la question supposait que Xephyr était exécuté correctement (puisque aucune information n'est fournie à ce sujet), j'ai au less confirmé que qBittorrent fonctionne correctement dans Xephyr sur Debian Xfce Wheezy.

qBittorrent à Xephyr

La capture d'écran ci-dessous montre qBittorrent 2.9.8 dans Xephyr.

qBittorrent 2.9.8 dans Xephyr sur Debian Xfce Wheezy

Cela a été testé sur Debian Xfce Wheezy et en utilisant les derniers packages de libqtcore4 et xserver-xephyr disponibles à cette date, qui sont similaires aux versions citées dans la question.

 $ lsb_release -a No LSB modules are available. Dissortingbutor 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 

Problème lié mais pas tout à fait

La seule search pertinente que j'ai trouvée était Bug 71421 , les rapports sur "les applications Qt5 ne fonctionnent pas avec Xephyr".

Lorsque vous essayez d'exécuter des applications Qt5 (ou apparemment GTK3) à l'intérieur de Xephyr, elles ne fonctionnent pas (comme dans rien n'est montré). GTK2 ou Qt4 fonctionne aussi bien que les applications GLX (glxgears par exemple). Également testé sur un server X autonome sans DM en cours d'exécution – Qt5 fonctionne parfaitement bien là, juste à l'intérieur de Xephyr, ils ne le font pas.

Ce bogue est similaire au cas de question, sauf qu'il affecte uniquement les applications Qt5. Le bug était dû à Qt5 et il a été corrigé récemment à la fin d'avril de cette année.

Identifier le problème

Aucune information n'a été fournie sur la façon dont l'application a été exécutée dans Xephyr.

Les applications ci-dessus fonctionnent quand elles sont démarrées dans un server X normal, mais quand je les lance dans Xephyr, je ne vois que le cadre de la window, mais il est vide.

Basé sur le text cité, j'ai quelque chose d'autre à douter: Xephyr a-t-il couru avec des arguments invalides? Ou plutôt, comment l'application a-t-elle été exécutée en tant qu'autre user dans Xephyr?

Si vous êtes bien sûr que les applications Qt4 ne fonctionnent pas dans Xephyr, cela peut être un problème non signalé dans le package Qt4. Mais depuis que j'ai confirmé que qBittorrent (basé sur Qt4) fonctionne correctement dans Xephyr, cela peut être un problème avec "un autre user" ou la façon dont Xephyr a été exécuté depuis la session en cours.

Sur l'utilisation de Xephyr

Ce sont des sources en ligne qui expliquent comment utiliser Xephyr pour accomplir certaines tâches.

  1. Xephyr sur ArchWiki. Un bon endroit pour commencer à exécuter Xephyr, mais n'explique pas beaucoup sur l'utilisation extensive en plus d'exécuter un terminal ou un gestionnaire de windows dans Xephyr.

  2. Aucune idée de la façon de commencer avec Xephyr. Qu'est-ce que je fais mal? sur la list de diffusion de Xorg, datée du jeudi 23 janvier 17:16:40 PST 2014. Une autre façon de lancer Xterm dans Xephyr.

  3. Comment exécuter plusieurs bureaux X? sur Super User, a demandé le 22 juillet '09. Une des réponses suggérées pour utiliser Xephyr. De la même façon que suggéré dans la source # 1.

  4. Configuration multiseat / Xephyr: Comment faire un Multiterminal avec Xephyr sur Wikibooks.

  5. Captures d'écran de plusieurs Xservers sur Unix & Linux Stack Exchange, demandées le 21 août '14.

  6. Comment: exécuter firefox (et d'autres choses) en tant qu'user distinct avec Xephyr . Cela semble être l'utilisation la plus similaire comme suggéré dans la question.

La raison pour laquelle j'ai cité ces sources, est de fournir des conseils pertinents qui peuvent vous aider à clarifier si vous exécutez l'application Qt dans Xephyr correctement ou bien.

Cela étant dit, il est difficile de comprendre la première phrase «utiliser Xephyr pour exécuter des applications en tant qu'autre user, tout en étant connecté en tant qu'user principal». Après tout, je n'ai pas créé "un autre user" pour tester qBittorrent dans Xephyr. Peut-être que quelqu'un d'autre peut donner une meilleure réponse.

Il peut être utile de savoir quelle command est utilisée pour démarrer Xephyr et quel gestionnaire de windows est utilisé.

J'ai essayé ceci:

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

et a obtenu le contenu de la window incomplète de qbittorrent. Essayer la même chose avec xfwm4:

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

alors tout va bien, et qbittorrent est utilisable.

Je ne peux pas expliquer pourquoi il y a une différence, mais il y en a évidemment une. J'ai suspecté des problèmes avec le composite et j'ai essayé d'exécuter Xephyr avec composite activé:

 Xephyr +extension Composite :1 & 

mais cela semble ne faire aucune différence.

EDIT: xfwm4 a des capacités de composition, openbox ne le fait pas. Peut-être composite est néanless la key cruciale.