Frage Führen Sie Unity auf einem externen Monitor mit Bumblebee aus


Mir ist klar, dass es viele andere Fragen dazu gibt, aber es geht immer um das grundlegende Setup. Ich habe den größten Teil des Weges dorthin geschafft, aber ich habe eine ganz bestimmte Frage: Ich möchte Unity auf dem externen (HDMI) Monitor laufen lassen, und es ist mir egal, ob das Laptop-Display unbrauchbar ist.

Ich habe ein Dell XPS 15 mit Nvidia GT 540M mit Optimus. (DAMN OPTIMUS !!!!) Ich habe Bumblebee installiert. Ich kann das System auf dem Laptop-Display ausführen, und ich kann optirun verwenden, um Programme wie GLXsphere im Hochleistungsmodus auszuführen. Wenn ich den externen Monitor anschließe, sehe ich nichts, und xrandr erkennt es nicht ("HDMI1 disconnected (normal left inverted right x axis y axis)").

Hier ist, was ich bisher gemacht habe (von Bumblebee's ausgehend) Multi-Monitor-Setup führen). Ich habe dort den "extra screen" Ratschlag befolgt, also habe ich editiert bumblebee.conf und xorg.conf.nvidia wie angewiesen. Wenn ich jetzt laufe:

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

Ich sehe die glxsphere-Demo auf dem externen Monitor (ohne jegliche Schaufensterdekoration). Woohoo!

Jetzt ist der nächste Schritt, Unity auf dem Laptop-Display herunterzufahren und zu testen, dass glxsphheres immer noch funktioniert. Also drücke ich Strg + Alt + F1, um zum nicht-grafischen Terminal zu gelangen. Dann:

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

Wiederum sehe ich Glxsphären auf dem externen Monitor.

Jetzt sagt dir der Bumblebee-Guide, du sollst "optirun wmii& (oder Ähnliches wie startlxde) "aber ich möchte nicht zu einem anderen Fenstermanager wechseln. Wie kann ich Unity auf dem externen Monitor ausführen?

Ich habe es versucht optirun unity und ich habe fast den ganzen Weg dorthin. Dies startet Unity auf dem externen Monitor. Ich kann den Desktop sehen und die Maus funktioniert. Ich kann andere Programme innerhalb von Unity ausführen. Es gibt nur ein paar Probleme:

  1. Bestimmte Tastaturkombinationen werden von Unity nicht erkannt - es sieht aus wie alles, was die Strg-Taste und die Fn-Taste betrifft. (Beispiel: Strg + Alt + T funktionierte nicht, um ein Terminal zu erhalten; Fn + F11 funktionierte nicht, um die Lautstärke zu ändern.)
  2. Tastaturstriche erscheinen im Terminal sowie Unity. Ich möchte das nicht, da möglicherweise Passwörter eingegeben werden.
  3. Wenn ich zu einem anderen Bildschirm wechsle (z. B. Strg + Alt + F8), hört der Ton auf zu arbeiten, also ist dies keine brauchbare Lösung für # 2.

Ich habe das Gefühl, dass diese drei Themen zusammenhängen. Ich denke, das Hauptproblem ist, dass ich nicht direkt Unity laufen lassen sollte, sondern Lightdm. ich habe es versucht optirun lightdm aber es funktioniert überhaupt nicht. Hoffe, dass jemand weiß. Wenn nicht, wird zumindest diese Frage hoffentlich Leuten helfen, Unity auf einem externen Monitor laufen zu lassen.


4
2018-02-09 03:54


Ursprung




Antworten:


Soweit ich weiß, funktioniert Unity nicht mit optirun (es scheint ein Bug zu sein).

Das habe ich gefunden Hier:

HDMI funktioniert nicht mit den Hybrid-Grafikchips von Optimus unter Linux für die meisten Laptops, selbst wenn Sie Bumblebee verwenden, aber es gibt eine Möglichkeit, HDMI zu verwenden: mit einer separaten Sitzung.

Mit den folgenden Anweisungen erhalten Sie eine LXDE-Sitzung (Sie können XFCE oder andere verwenden, aber die folgenden Anweisungen gelten für LXDE) auf dem externen Monitor (der über HDMI verbunden ist), und in dieser Sitzung werden alle Anwendungen, die Sie starten, verwenden Sie die Nvidia-Grafikkarte Ihres Laptops, und Sie können Spiele spielen, Filme ansehen usw. Die LXDE-Sitzung läuft zur gleichen Zeit wie Ihre normale Sitzung, also erhalten Sie auf Ihrem Laptop-Bildschirm Ihre normale (Haupt-) Sitzung. Außerdem werden die Maus und die Tastatur zwischen den zwei Sitzungen / Monitoren geteilt.

So sieht das aus:

first pictiure

second picture

Das erste Bild oben ist von meinem Laptop-Bildschirm (Dell XPS L702X, der mit Nvidia Optimus kommt), während das zweite Bild die separate LXDE-Sitzung ist, die auch auf meinem Laptop läuft, aber auf einem über HDMI angeschlossenen Fernseher angezeigt wird. Wie Sie sehen können, verwendet der erste den Intel-Grafikchip, während der zweite Nvidia verwendet.

Es gibt jedoch einige Dinge zu beachten, wenn Sie dies verwenden:

  • der Ton wird nicht funktionieren (wenn Sie wissen, wie Sie es zum Laufen bringen können, lassen Sie es bitte wir wissen in den Kommentaren!) über HDMI, damit Sie nur Ton bekommen durch die Lautsprecher Ihres Laptops
  • Sie können ein Fenster nicht von Ihrem aktuellen Desktop auf den Monitor verschieben über HDMI verbunden. Die einzige Möglichkeit, Anwendungen auf dem Gerät auszuführen über HDMI verbunden ist, entweder aus dem Sitzungsmenü oder durch mit "Export DISPLAY =: 8.0" (siehe Ende des Posts für weitere Informationen über Dies). Die Maus wird jedoch zwischen den beiden Desktops geteilt.
  • Wenn Sie die Extra-Sitzung laden, erhalten Sie möglicherweise doppelte Indikatoren / Fach Symbole auf Ihrer aktuellen (Haupt-) Sitzung. Es gibt einen Weg dahin obwohl (siehe den Abschnitt "Tipps" am Ende des Posts)

Holen Sie sich HDMI, um mit Laptops mit der Optimus-Technologie unter Ubuntu mit Bumblebee und Synergy zu arbeiten

  1. Installiere Bumblebee, falls du es noch nicht getan hast.

  2. Unity funktioniert nicht mit Bumblebee (und ich bin mir nicht sicher, ob Sie zwei Sitzungen mit demselben Fenstermanager ausführen können, ohne dass sie sich gegenseitig stören). Sie müssen also eine andere Desktopumgebung / Sitzung wie LXDE, XFCE und so weiter - benutze was immer du willst. Ich habe LXDE verwendet, um anhand der folgenden Anweisungen eine LXDE-Sitzung auf dem über HDMI verbundenen Monitor zu erhalten.

    Damit die Maus und die Tastatur auf dem über HDMI angeschlossenen externen Monitor funktionieren, verwenden wir Synergy, ein Tool, mit dem Sie Maus und Tastatur für mehrere Computer freigeben können.

    Lassen Sie uns die benötigten Pakete (LXDE und Synergy) installieren:

    sudo apt-get install synergy lxde lxde-common

  3. Um Synergy verwenden zu können, müssen Sie eine Konfigurationsdatei erstellen. Sie können meine von herunterladen HIER - Kopieren Sie die Datei in Ihren Home-Ordner und benennen Sie sie in ".synergy.conf" um (beachten Sie den Punkt vor dem Dateinamen - damit wird die Datei ausgeblendet).

    Die oben angegebene Datei sollte ausreichen, aber wenn Sie sie ändern möchten, können Sie über die Synergy-Konfigurationsdatei lesen Hier.

  4. Um LXDE auf dem über HDMI angeschlossenen externen Monitor zu starten, können Sie ein Skript verwenden, von dem Sie herunterladen können HIER. Entpacke das Archiv, kopiere das "hdmi" -Skript in deinen Home-Ordner und mache es mit dem folgenden Befehl ausführbar:

    chmod +x ~/hdmi

    Verwenden Sie den folgenden Befehl, um das Skript auszuführen:

    ~/hdmi

    LXDE sollte jetzt auf dem über HDMI angeschlossenen externen Monitor starten. Geben Sie ihm etwas Zeit (etwa 10 Sekunden) und bewegen Sie die Maus nach links auf dem Bildschirm, damit er auf dem HDMI-Gerät angezeigt wird.

    Hier ist, was das Skript tut (das ist nur eine Erklärung, Sie müssen diese Befehle nicht ausführen, verwenden Sie einfach das obige Skript):

    exportiert das Display zu dem, das wir für den HDMI-Monitor (8) verwenden werden:

    export DISPLAY=:8.0

    LXDE läuft mit optirun (Bumblebee):

    optirun startlxde &

    Läuft den Synergy Server im Vordergrund auf dem Hauptbildschirm (in der Hauptsitzung Ihres Laptops) mit 127.0.0.1 als Adresse:

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

    Läuft der Synergy-Client im Vordergrund auf dem HDMI-Display und verbindet ihn mit der Serveradresse 127.0.0.1:

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

    Und schließlich exportiert es das Display zurück auf das (Haupt-) Display Ihres Laptops:

    export DISPLAY=:0.0

    Das Skript verwendet auch einige "Schlaf" -Befehle, die eine Verzögerung hinzufügen, um sicherzustellen, dass die Befehle genug Zeit haben, um ausgeführt zu werden, bevor der nächste Befehl ausgeführt wird.


4
2018-03-01 04:26



Super! Danke für die detaillierte Gehirn-Dump. Ich habe es noch nicht ausprobiert, aber ich habe deine Antwort angekreuzt, weil es sehr hilfreich scheint. Wenn ich eine Chance bekomme, werde ich es versuchen und Sie wissen lassen. - mgiuca