Xrandr-Einstellungen in Debian 7 auf VirtualBox können nicht zuverlässig automatisiert werden

23

Obwohl es zu diesem Thema mehrere Fragen gibt (von denen die hilfreichste Antwort diese ist ) und verschiedene Themen in anderen Foren, kann ich meine xrandrEinstellungen in Debian 7 auf VirtualBox nicht zuverlässig festlegen .

Ich versuche, xrandrmeine Anzeigeeinstellungen zu steuern (anstatt zuzulassen, dass meine Desktop-Umgebung sie automatisiert), weil ich den i3Fenstermanager verwende , der die Anzeigeeinstellungen nicht automatisiert oder die Anzeigeeinstellungen der Gnome-Desktop-Umgebung verwendet.

Installieren:

Ich bin mir nicht sicher, wie relevant all dies ist, insbesondere das Hardware-Material, da ich glaube, dass Debian nicht auf viele Informationen über das Monitor-Setup zugreifen kann. Soweit ich das beurteilen kann, meldet VirtualBox das Vorhandensein von virtuellen Bildschirmen, als ob es sich um Hardware-Monitore handeln würde.

Hardware

  • Lenovo Laptop mit nVidia-Grafik (die integrierte Intel-GPU wird nicht verwendet, AFAIK - es gibt eine BIOS-Einstellung, die ich verwendet habe, um dies zu erreichen)
    • Windows 7
    • 32 GB RAM
    • Mit neuesten (glaube ich) nVidia - Treiber (340,84) - dies könnte wichtig, da ich die 3D - Beschleunigung in VirtualBox freigegeben (siehe unten), die ich denke , erlaubt es das Gast - Betriebssystem Zugriff auf die Host - Hardware haben
  • Seiki 4K TV (als Monitor verwendet) über HDMI über Dockingstation (die DisplayPort intern in HDMI konvertiert)
  • Samsung SyncMaster 243T Monitor vertikal gedreht

VirtualBox

  • Verwendung von VirtualBox 4.3.20
  • Gastzugaben (gleiche Version) werden installiert
  • Monitoranzahl: 2 (im Vollbildmodus dem Seiki und dem SyncMaster zugewiesen)
  • Maximal verwendeter Videospeicher (128 MB)
  • 3D-Beschleunigung ist aktiviert

Gasteinstellungen

  • 32-Bit-Debian 7
  • gnomeund gdm3installiert sind
  • Bevorzugte WM ist i3

Verhalten:

Beim Starten i3und Abfragen xrandrscheinen die Standardanzeigeeinstellungen zwischen VBOX0und VBOX1den beiden "Monitoren", an die VirtualBox meldet, immer identisch zu sein xrandr(zumindest verstehe ich das so; es könnte etwas fehlen). Beachten Sie, dass es meines Erachtens keine gute Möglichkeit gibt, festzustellen, welche VBOX-Nr. Für welchen Monitor nicht geeignet ist.

Normalerweise beinhaltet dies eine angemessene (wenn auch etwas niedrigere) Auflösung für meinen vertikalen SyncMaster, aber keine 4K-Auflösung für das Seiki. Die Option zur automatischen Größenänderung der Gastanzeige in VirtualBox scheint sich nicht zu auswirken xrandr.

Ich habe verschiedene Modifikationen des Skripts ausprobiert, die in der oben verlinkten Antwort beschrieben sind , aber im Allgemeinen erhalte ich verschiedene xrandrFehler. Ich habe nicht viele Zusammenhänge zwischen den verschiedenen Dingen, die ich ausprobiert habe, und den Fehlern, die ich erhalte, gefunden, aber hier sind die wichtigsten Dinge, die wichtig sein könnten:

Skript-Optimierungen

  • (Normalerweise) Überspringen der VBoxServiceNeustartschritte (sie scheinen das xrandrVerhalten nicht zu ändern )
  • Verwenden Sie die xrandr --fbOption vor allen anderen xrandrBefehlen. Dies führt manchmal zu dem unten aufgeführten Fehler "Angegebener Bildschirm ist nicht groß genug"
  • Verwenden Sie 30 fps anstelle von 60 (4K über aktuelles HDMI sind maximal 30 fps, aber ich denke nicht, dass dies in VirtualBox von Bedeutung sein sollte; auf jeden Fall denke ich, dass es manchmal funktioniert und manchmal in beide Richtungen fehlgeschlagen ist)
  • Verwenden Sie cvtstatt gtf(diese scheinen sich im Wesentlichen gleich zu verhalten)
  • Ersetzen Sie die erste Zahl gegeben durch gtf(die in der Regel rund 200 oder 300) mit einer geringeren Anzahl, wie 100.00(ich denke , das ist einmal oder zweimal in der Befehlszeile, aber erscheint nicht im Allgemeinen einen Unterschied machen)
  • Zufällige Auswahl neuer Modusnamen mit $RANDOM(ich habe auch verschiedene andere Methoden ausprobiert, um mit Namen zu fummeln)
  • Explizite --rmmodeModi vor dem Erstellen mit --newmode(dies scheint den unten aufgelisteten "font" -Fehler zu verhindern)
  • Verwenden Sie --right-ofoder, --left-ofwenn Sie --outputs einstellen (da die Bildschirme normalerweise standardmäßig gespiegelt sind).

Fehlermeldungen

  • xrandr: specified screen 5120x2160 not large enough for output VBOX0 (3840x2160+3840+0) X Error of failed request: BadValue (integer parameter out of range for operation) Ich habe diese gerade beim erneuten Ausführen des Skripts erhalten, nachdem die Monitore bereits auf die richtige Auflösung gebracht wurden (unter Verwendung der im nächsten Abschnitt beschriebenen Problemumgehung). Das hat mich überrascht, denn xrandrfolgendes berichtet: Screen 0: minimum 64 x 64, current 5120 x 2160, maximum 16384 x 16384
  • X Error of failed request: BadMatch (invalid parameter attributes) Dies tritt manchmal auf, wenn versucht wird, a --newmode. Dies ist wahrscheinlich der zweithäufigste Grund für das Fehlschlagen des Skripts. Ich denke, es könnte daran liegen, dass Sie xrandrsich den Namen des Modus aus einem früheren Versuch, ihn einzurichten, "merken". Die Verwendung von $RANDOMscheint das Problem jedoch nicht konsequent zu lösen, sodass es sich möglicherweise um ein anderes Problem handelt. (Ich nehme an, es ist möglich, dass es auch bei $RANDOMNamen zu Konflikten kommt.) Ich habe diesen Fehler nicht gesehen, seit ich mit der Verwendung begonnen habe --rmmode, aber ich habe das Skript seit dem Hinzufügen dieses Befehls nicht oft genug ausgeführt, um sicherzugehen, dass es einen Unterschied macht das Verhalten.
  • X Error of failed request: BadMatch (invalid parameter attributes) Dies tritt manchmal auf, wenn versucht wird, eine --addmode. Es ist wahrscheinlich der häufigste Grund, warum das Skript fehlschlägt, und es mystifiziert mich. Manchmal scheint die manuelle Ausführung (dh in einem Terminal) derselben Befehlsfolge, die vom Skript verwendet wird, eine praktikable und bizarre Problemumgehung für diesen Fehler zu sein.

Gnome-Problemumgehung:

Ich habe festgestellt , dass , wenn ich in die Gnome Desktop anmelden, führen Sie VirtualBox „Auto-Resize - Gast - Display“ -Funktion, dann melden Sie sich ab und wieder an mit i3, xrandrumfasst in der Regel die richtigen Auflösungen sowohl für die Seiki und die SyncMaster in seiner automatisch generiert Liste der Modi, und die 4K-Auflösung wird als "bevorzugte" Auflösung für jeden VBOX-Bildschirm festgelegt. Dadurch kann ich einfach verwenden xrandr --output [4K VBOX] --auto --left-of [SyncMaster VBOX], gefolgt von xrandr --output [SyncMaster VBOX] --mode [SyncMaster resolution](beachten Sie, dass die SyncMaster-Auflösung immer noch manuell angegeben werden muss, da xrandrfür beide dieselbe bevorzugte Auflösung VBOX#ohne Rücksicht auf Wahrheit oder Vernunft gemeldet wird).

Diese einmal durchgeführte Problemumgehung bleibt anscheinend auch nach dem Herunterfahren und Neustarten bestehen (das heißt, die gewünschten Modi sind immer noch in xrandrder Liste der Modi enthalten , obwohl ich die beiden xrandrBefehle nach dem Starten einer i3Sitzung noch ausführen muss ), bleibt jedoch nicht immer bestehen, wenn sie einfach sind Abmelden und neue i3Sitzung starten . Beachten Sie, dass der gdm3Anmeldebildschirm nie die richtige Auflösung hat (soweit ich das gesehen habe). Ich habe keinen weiteren Kommentar zur Fremdartigkeit, die hier vor sich geht.

BEARBEITEN: Dieser Ansatz scheint nicht skriptfähig zu sein, und das Verhalten scheint tatsächlich nicht konsistent zu sein.

Weitere Hinweise:

  • Ich habe keine xconf(oder eine ähnliche) Datei in meinem etc/X11Verzeichnis.
  • Das Beheben der Anzeigen ist ein recht häufiges Problem, da VirtualBox immer dann, wenn ich einen meiner Monitore ausschalte, einen der virtuellen Vollbildmonitore ausschaltet. (Urgh.)

Fragen:

  • Gibt es eine Möglichkeit, programmgesteuert zwischen den tatsächlichen Hardwarefunktionen (dh nativen Auflösungen) verschiedener Monitore in VirtualBox zu unterscheiden?
  • Warum sehe ich diese verschiedenen Fehler? Was ist los mit xrandrusw?
  • Gibt es eine Möglichkeit, zuverlässig die richtige Vollbildauflösung zu erzielen, ohne dass ich gnomevor meiner i3Sitzung eine Sitzung starten muss ?

Möglicherweise verwandte Probleme

  • Mein Mauszeiger stimmt nicht zuverlässig mit der Position überein, an der Klicks erkannt werden. Klicks treten normalerweise unterhalb und rechts vom Zeiger auf. Sobald ich die Bildschirme richtig konfiguriert habe, verschwindet dieses Problem normalerweise, obwohl die Bildschirme derzeit die richtigen Auflösungen haben, aber der Zeiger immer noch leicht ausgeschaltet ist.
  • Wenn es mir gelingt, die richtigen Auflösungen zu erzielen, flackert der Bildschirm gelegentlich. Das ist nervig aber lebenswert. Irgendeine Idee, woran es liegt oder ob es behoben werden kann?
Kyle Strand
quelle
Ich muss meine Notizen ausgraben, aber welche Modi werden für Ihre Displays unterstützt? Hat i3 eine Möglichkeit, ein Skript vor / direkt nach der Anmeldung zu starten? superuser.com/questions/808737/… ist das, was ich letztendlich mit einem ähnlichen, physischen Problem gemacht habe, aber dies kann ein bisschen Finassing erfordern, um in Ihrem Fall zu funktionieren.
Geselle Geek
@JourneymanGeek Der 4K unterstützt die meisten Standardmodi bei 60 Hz und größere Modi (einschließlich 4K) bei 30 Hz. Der SyncMaster scheint die meisten normalen Modi mit einer nativen (vertikalen) Auflösung von 1920 x 1280 zu unterstützen. Das i3-Konfigurationsskript unterstützt das Ausführen eines Skripts bei der Anmeldung. Ich benutze diese Funktion, um das oben beschriebene Skript automatisch auszuführen, das Ihrem ähnelt, aber es treten immer wieder seltsame xrandrFehler auf.
Kyle Strand
Wie starte ich i3? Hat es eine eigene X-Initialisierungsroutine? Oder lässt du es in deinem fallen .xinitrcund verwendest startx? Ich verwende xmonad (das meines Wissens i3 ähnelt?), Das ich mit starte startx. Meine xrandrSkripterstellung erfolgt .xinitkurz vor dem Start meines Fenstermanagers. Ich habe auf diese Weise hervorragende Ergebnisse erzielt. X ist einsatzbereit und nichts anderes wurde gestartet, um einzugreifen.
Chris
Ich verwende gdm3und habe i3als Standard-Desktopumgebung für mein Konto ausgewählt.
Kyle Strand
1
Leider keine, an die ich sofort denken kann, da VBox den Monitoren anscheinend keine einheitlichen Namen zuweist. Könnten Sie die Ausgabe von xrandr --query(a) posten, wenn die Einstellungen falsch erkannt werden, und (b) nachdem Sie alles richtig funktioniert haben? Oder zumindest eines von allem, was richtig funktioniert.
Chris

Antworten:

0

Das Aktualisieren auf die neueste VirtualBox-Version 5.0.14 scheint das Problem behoben zu haben.

Kyle Strand
quelle