Krümelomat schrieb:
Mich würde noch interessieren was
xrandr --output LVDS1 --fb 1008x600 --panning 1008x600 --mode 1008x600_60.00
xrandr --fb 1008x600 --output LVDS1 --mode 1024x600
bewirkt, ich schätze mal fb legt den Bereich fest auf dem der Monitor anzeigt und panning passt die Fenstergeometrie und den aktiven Mausbereich darauf an. Aber warum wird das Bild dann nach links verschoben und wieso ist die zweite Zeile nötig?
Im Prinzip hast du das schon richtig verstanden. Framebuffer (fb) legt die virtuelle Größe der Bildausgabe fest, Panning die virtuelle Geometrie (scrollbare Bildausgabe, Fensterverwaltung, Zeigergeräte usw.), beides unabhängig von der tatsächlichen Bildschirmauflösung (mode). Man kann damit übrigens auch andersherum die Bildausgabe erweitern und mit der Verfolgung des Mauszeigers wird dann der tatsächliche Anzeigebereich in der virtuellen Bildausgabe gescrollt.
Das Problem in deinem Fall war jetzt, dass man die reduzierte Auflösung von 1008x600 nicht mit der Skalierungsmethode richtig einpassen konnte und das alleinige Setzen von Framebuffer und Panning nur die virtuelle Bildausgabe beschnitten hätte. Die Fensterverwaltung wäre dann bei 1024x600 verblieben und du hättest nur die 16 Pixel am rechten Bildschirmrand nicht angezeigt bekommen - also das Panel wäre bspw. rechts um 16 Pixel abgeschnitten und beim Maximieren die Fenster immer noch in diesen Bereich skaliert worden.
Deswegen muss man mit dem ersten Befehl die Größe für Framebuffer und Panning setzen und die Auflösung ein Mal ändern, damit die Fensterverwaltung diese Auflösung übernimmt. Im zweiten Befehl wird dann der kleinere Framebuffer übergeben und der Modus wieder auf volle Bildschirmauflösung gesetzt. Dabei behält die Fensterverwaltung freundlicherweise die Geometrie des Framebuffers. Das ist der ganze Trick bei der Sache.
Das Bild ist dann auch nicht nach links verschoben, sondern das ergibt sich einfach aus dem Koordinatensystem der Bildausgabe. Oben links sind die Koordinaten 0,0 und der Framebuffer wird von bzw. nach rechts und von bzw. nach unten verkleinert bzw. erweitert. Du hast jetzt letzten Endes bei voller Bildschirmauflösung von 1024x600 einen Bildausschnitt von 1008x600 ausgehend von der Bildschirmecke oben links.
Diese Methode funktioniert nur für Bildschirme mit Defekten am rechten und unteren Bildschirmrand. Möchte man das am linken oder oberen Bildschirmrand machen, muss man vermutlich noch mit --transform
die Bildausgabe verschieben.