fakexrandr, Mirror Fake Displays - X Fehler bei fehlgeschlagener Anfrage: BadMatch

fakexrandr, Mirror Fake Displays - X Fehler bei fehlgeschlagener Anfrage: BadMatch

Ich muss gespiegelte Fake-Displays auf einem physischen Monitor erstellen. Ich habeAbonnierenund jetzt habe ich zwei gefälschte Anzeigen (683 x 768) auf dem 1366 x 768 (max./bevorzugt)-Monitor meines Laptops.

Wenn ich xrandr --output eDP1~1 --same-as eDP1 --verboseden Befehl ausführe, erhalte ich diesen Fehler:

Bildbeschreibung hier eingeben

* xrandr --fb 683x768druckt auch den gleichen Fehler.

Phillip Berndt(Eigentümer/Ersteller vonAbonnieren) sagte: „Es liegt am Grafiktreiber, ob die Einstellungen tatsächlich angewendet werden.“ indieses Problem. Aber es war für mich keine zufriedenstellende Antwort.

Um das Problem aufzuspüren, habe ich die Ausgabe xrandr --verboseauf einem Setup mit zwei physischen Monitoren aufgezeichnet. Sie können die Commits indieses Repositoryum das Verhalten der Ausgabe von zu sehen xrandr --verbose.

  • Nachdem ich dies getan hatte, wurde mir klar, xrandr --output eDP1~1 --same-as eDP1dass der Befehl versucht, zuzuweisen current 683x768. Screen 0:Aber der Grafiktreiber oder der physische Monitor auf meinem Laptop haben keine 683x768Ausgabeoption/Unterstützung. Vielleicht könnte das das Problem sein. (Ich bin mir nicht sicher, ob dieser Absatz richtig ist, vielleicht könnte er völlig falsch sein.)

Alles in allem: Was ist der eigentliche Grund für diesen Fehler im Screenshot und wie lässt sich dieses Problem umgehen?

Antwort1

RandR ist eine Erweiterung des X11-Servers, die verwendet wird, um die Konfiguration der Ausgaben zwischen den Clients (= Anwendungen) des Servers und dem Grafiktreiber zu kommunizieren. Die meisten Anwendungen sprechen das Protokoll nicht selbst, sondern verwenden stattdessen eine Bibliothek namens libXrandR. FakeXRandR ersetzt diese Bibliothek durch eine, die den Grafiktreiber zwar nach der Konfiguration fragt, dann aber das Ergebnis manipuliert, um Anwendungen vorzutäuschen, dass eine völlig andere Konfiguration vorhanden sei als tatsächlich. Da dies zwangsläufig zu Fehlern führt, wenn man versucht, eine der gefälschten Ausgaben zu ändern, versucht es, die schlimmsten Probleme zu mildern, indem alle Konfigurationsanforderungen für gefälschte Ausgaben durch Änderungsanforderungen für die ursprüngliche, physische Ausgabe ersetzt werden. Aber diese schlagen natürlich immer noch fehl, wenn Sie versuchen, eine Auflösung anzuwenden, die nur für die gefälschten Ausgaben existiert.

Eine gute Analogie wäre die Situation, wenn Sie ein ziemlich altes Auto haben, das 50 km/h fahren kann. Sie möchten nun auf einer Straße fahren, auf der Sie 100 km/h fahren müssen. Die Lösung, die FakeXRandR verfolgt, besteht darin, die Zahlen auf dem Drehzahlmesser so zu ersetzen, dass die Nadel jetzt 180 km/h anzeigt, obwohl Sie tatsächlich 50 fahren. Wenn Sie bei einer Verkehrskontrolle angehalten werden, können Sie sagen: „Sehen Sie, Herr Wachtmeister, mein Tacho sagt, dass ich 180 fahren kann, also ist alles in Ordnung“, und er wird das wahrscheinlich akzeptieren. Aber Sie können tatsächlich trotzdem nicht schneller fahren, denn dazu müssten Sie den Motor ersetzen und nicht irgendwelche aufgedruckten Zahlen auf Ihrem Armaturenbrett.

kurz und knapp:FakeXRandR ist das falsche Tool für Ihre Aufgabe.

Wenn Sie dies wirklich auf RandR-Ebene tun müssen, müssen Sie Ihren Grafiktreiber sowohl im X11- als auch im Kernelcode patchen.Ich habe einige Treffer dazu in einem anderen Fehlerbericht für FakeXRandr geschrieben.. Eine einfachere Lösung, wenn Sie nur möchten, dass die rechte Hälfte Ihres Bildschirms die linke spiegelt, wäre die Verwendung eines erweiterten Compositing-Fenstermanagers wieCompiz. Compositing-Manager fügen eine Umleitungsebene zwischen Anwendungsfenstern und dem, was Sie tatsächlich sehen, hinzu. Dies ermöglicht es ihnen, in diesem Fall jedes Fenster zweimal zu zeichnen, zuerst auf der linken Seite der Ausgabe, dann auf der rechten Seite; was Ihre Ausgabe effektiv klonen würde. Dafür gibt es bereits ein Plugin (installieren Sie alle Compiz-Pakete, insbesonderecompizconfig-einstellungen-manager, ccsm, und suchen Sie darin nach dem, was Sie brauchen), oder es sollte zumindest möglich sein, ohne allzu großen Aufwand eines zu schreiben, das das tut, was Sie wollen.

verwandte Informationen