web-dev-qa-db-fra.com

Exécutez Unity sur un moniteur externe avec Bumblebee

Je me rends compte qu'il y a beaucoup d'autres questions à ce sujet, mais elles concernent toutes la configuration de base. La plupart du temps, j’ai compris le chemin, mais j’ai une question très précise: je veux exécuter Full Unity sur le moniteur externe (HDMI) et je me moque de savoir si l’écran de l’ordinateur portable est inutilisable.

J'ai un Dell XPS 15 avec Nvidia GT 540M avec Optimus. (DAMN OPTIMUS !!!!) J'ai installé Bumblebee. Je suis en mesure d'exécuter le système sur l'écran d'un ordinateur portable et d'utiliser optirun pour exécuter des programmes tels que glxspheres en mode haute performance. Lorsque je branche le moniteur externe, je ne vois rien et xrandr ne le détecte pas ("HDMI1 disconnected (normal left inverted right x axis y axis)").

Voici ce que j'ai fait jusqu'à présent (à partir du guide configuration multi-moniteur de Bumblebee). J'ai suivi le conseil "écran supplémentaire" là-bas, donc j'ai édité bumblebee.conf et xorg.conf.nvidia comme indiqué. Maintenant, si je cours:

export DISPLAY=:8 LD_LIBRARY_PATH=/usr/lib/nvidia-current:$LD_LIBRARY_PATH
optirun glxspheres

Je vois la démonstration de glxspheres sur le moniteur externe (sans aucun habillage de fenêtre). Woohoo!

L'étape suivante consiste à arrêter Unity sur l'écran de l'ordinateur portable et à vérifier que glxspheres fonctionne toujours. J'ai donc appuyé sur Ctrl + Alt + F1 pour aller au terminal non graphique. Ensuite:

Sudo service lightdm stop
export DISPLAY=:8 LD_LIBRARY_PATH=/usr/lib/nvidia-current:$LD_LIBRARY_PATH
optirun glxspheres

Encore une fois, je vois glxspheres sur le moniteur externe.

Maintenant, le guide Bumblebee vous dit de faire "optirun wmii& (ou un autre comme startlxde)" mais je ne veux pas passer à un autre gestionnaire de fenêtres. Comment puis-je exécuter Unity sur le moniteur externe?

J'ai essayé optirun unity et j'ai fait l'essentiel du chemin. Cela démarre Unity sur le moniteur externe. Je peux voir le bureau et la souris fonctionne. Je peux exécuter d'autres programmes dans Unity. Il y a juste quelques problèmes:

  1. Certaines combinaisons de clavier ne sont pas détectées par Unity - elles ressemblent à tout ce qui concerne Ctrl et la touche Fn. (par exemple: Ctrl + Alt + T n'a pas fonctionné pour obtenir un terminal; Fn + F11 n'a pas fonctionné pour changer le volume.)
  2. Les traits du clavier apparaissent dans le terminal ainsi que dans Unity. Je ne veux pas cela, car il se peut que des mots de passe soient tapés.
  3. Si je passe à un autre écran (par exemple, Ctrl + Alt + F8), le son cesse de fonctionner, ce n'est donc pas une solution viable pour le n ° 2.

J'ai l'impression que ces trois problèmes sont liés. Je pense que le principal problème est que je ne devrais pas exécuter directement Unity, mais plutôt lightdm. J'ai essayé optirun lightdm mais ça ne marche pas du tout. En espérant que quelqu'un sache. Sinon, espérons que cette question aidera au moins les gens à faire presque fonctionner Unity sur un moniteur externe.

4
mgiuca

si j'ai bien compris, Unity ne fonctionne pas avec optirun (cela semble être un bug).

C'est ce que j'ai trouvé ici :

HDMI ne fonctionne pas avec les chipsets graphiques hybrides Optimus sous Linux pour la plupart des ordinateurs portables, même si vous utilisez Bumblebee, mais il existe un moyen de faire fonctionner HDMI en utilisant une session séparée.

En suivant les instructions ci-dessous, vous obtiendrez une session LXDE (vous pouvez utiliser XFCE ou d’autres, mais les instructions ci-dessous s’appliquent à LXDE). Elle apparaît sur le moniteur externe (connecté via HDMI) et, dans cette session, tous les Les applications que vous lancez utilisent la carte graphique Nvidia de votre ordinateur portable et vous pouvez jouer à des jeux, regarder des films, etc. La session LXDE s'exécute en même temps que votre session habituelle. Vous obtenez ainsi la session principale (principale) sur l'écran de votre ordinateur portable. De plus, la souris et le clavier sont partagés entre les deux sessions/moniteurs.

Voici à quoi cela ressemble:

first pictiure

second picture

La première image ci-dessus provient de l'écran de mon ordinateur portable (Dell XPS L702X fourni avec Nvidia Optimus), tandis que la seconde image représente la session LXDE distincte qui s'exécute également sur mon ordinateur portable, mais s'affiche sur un téléviseur connecté via HDMI. Comme vous pouvez le constater, le premier utilise la puce graphique Intel, tandis que le second utilise Nvidia.

Cependant, il y a quelques points à considérer lors de l'utilisation de ceci:

  • le son ne fonctionnera pas (si vous connaissez un moyen de le faire fonctionner, merci de nous l'indiquer dans les commentaires!) via HDMI afin que vous n'obteniez que du son via les haut-parleurs de votre ordinateur portable
  • vous ne pouvez pas déplacer une fenêtre de votre bureau actuel sur le moniteur connecté via HDMI. Le seul moyen d'exécuter des applications sur le périphérique connecté via HDMI consiste à l'exécuter à partir du menu de session ou à l'aide de "export DISPLAY =: 8.0" (voir la fin de l'article pour plus d'informations à ce sujet). La souris est cependant partagée entre les deux ordinateurs de bureau.
  • lors du chargement de la session supplémentaire, vous pouvez obtenir un double indicateur/icônes de plateau dans votre session (principale) actuelle. Il y a cependant un moyen de contourner cela (voir la section "astuces" à la fin du post)

Amenez HDMI à fonctionner avec des ordinateurs portables en utilisant la technologie Optimus sous Ubuntu en utilisant Bumblebee et Synergy

  1. Installez Bumblebee si vous ne l'avez pas déjà fait.

  2. Unity ne fonctionne pas avec Bumblebee (et je ne suis pas sûr que vous puissiez exécuter deux sessions en utilisant le même gestionnaire de fenêtres sans qu'elles interfèrent de toute façon); vous devrez donc utiliser un environnement/une session de bureau différent (LXDE, XFCE, etc.). etc. - utilisez ce que vous voulez. J'ai utilisé LXDE. En suivant les instructions ci-dessous, vous obtiendrez une session LXDE sur le moniteur connecté via HDMI.

    Pour que la souris et le clavier fonctionnent sur le moniteur externe connecté via HDMI, nous allons utiliser Synergy, un outil qui vous permet de partager la souris et le clavier entre plusieurs ordinateurs.

    Installons les packages requis (LXDE et Synergy):

    Sudo apt-get install synergy lxde lxde-common

  3. Pour pouvoir utiliser Synergy, vous devez créer un fichier de configuration. Vous pouvez télécharger le mien de ICI - copiez le fichier dans votre dossier personnel et renommez-le ".synergy.conf" (remarquez le point situé devant le nom du fichier - ce qui le rend caché) .

    Le fichier que j'ai fourni ci-dessus devrait suffire, mais si vous souhaitez le modifier, vous pouvez en savoir plus sur le fichier de configuration Synergy ici .

  4. Pour démarrer LXDE sur le moniteur externe connecté via HDMI, vous pouvez utiliser un script que vous pouvez télécharger à partir de ICI . Extrayez l’archive, copiez le script "hdmi" dans votre dossier personnel et rendez-le exécutable à l’aide de la commande suivante:

    chmod +x ~/hdmi

    Maintenant, pour exécuter le script, utilisez la commande suivante:

    ~/hdmi

    LXDE devrait maintenant démarrer sur le moniteur externe connecté via HDMI. Donnez-lui un peu de temps (environ 10 secondes) et déplacez votre souris vers la gauche de votre écran pour la faire apparaître sur le périphérique HDMI.

    Voici ce que fait le script (ceci est juste une explication, vous n'avez pas besoin d'exécuter ces commandes, utilisez simplement le script ci-dessus):

    exporte l'affichage vers celui que nous allons utiliser pour le moniteur HDMI (8):

    export DISPLAY=:8.0

    lXDE fonctionne avec optirun (Bumblebee):

    optirun startlxde &

    exécute le serveur Synergy au premier plan sur l'écran principal (sur la session principale de votre ordinateur portable) avec l'adresse 127.0.0.1:

    synergys -f -a 127.0.0.1 --display :0 -n ubuntu &

    exécute le client Synergy au premier plan sur l’affichage HDMI et le connecte à l’adresse du serveur 127.0.0.1:

    synergyc -f -n hdmi --display :8 127.0.0.1 &

    Et enfin, il exporte l'affichage vers l'affichage (principal) de votre ordinateur portable:

    export DISPLAY=:0.0

    Le script utilise également des commandes "sleep" qui ajoutent un délai pour s’assurer que les commandes ont suffisamment de temps pour être exécutées avant d’exécuter la commande suivante.

4
titusjaka