So erhalten Sie die von xrandr festgelegte Auflösung des externen Monitors

11

tl; dr

Mein Laptop vergisst immer wieder die korrekte Auflösung des angeschlossenen externen Monitors. Wie kann ich die Konfiguration "stick" machen?

Einzelheiten

Ich habe einen Laptop mit Linux Mint an einen externen ViewSonic-Monitor angeschlossen. Ich habe es so eingerichtet, dass der externe Monitor als zweiter Bildschirm verwendet wird (dh nicht gespiegelt). Das hat einige Wochen gut funktioniert.

Plötzlich erkannte der Laptop ihn nicht mehr als ViewSonic. Zu diesem Zeitpunkt kannte er seine optimale Auflösung nicht mehr ( 1600 x 1200) und erlaubte nur noch maximal 1028 x 768. 1 Bei meinem Laptop mit 1920 x 1200Auflösung hat das überhaupt nicht gut funktioniert .

Nach viel Frust fand ich diese Antwort . Es hat mir geholfen, das Problem wie folgt zu beheben (die Ausgabe des cvtBefehls ist die Modeline, die im nächsten Befehl verwendet wurde):

cvt 1600 1200
xrandr --newmode "1600x1200_60.00"  161.00  1600 1712 1880 2160  1200 1203 1207 1245 -hsync +vsync
xrandr --addmode VGA-1 1600x1200_60.00

Dies ist genau das , was ich mir gewünscht hatte, aber nicht über die GUI tun konnte. (Es gibt Gründe, warum ich die Kommandozeile immer noch liebe ...)

Dies funktionierte wieder eine Zeit lang gut. Als ich heute den Computer startete und mich anmeldete, wurde ein Popup-Fenster mit einer Reihe von Fehlern zu verschiedenen versuchten Modi angezeigt, die nicht funktionierten, und der externe Monitor wurde ausgeschaltet. Ich habe die obigen Befehle wiederholt und es funktioniert wieder.

Ich habe eine nVidia-Karte. Ich habe versucht, den proprietären Treiber zu installieren, als die Dinge schief gingen, aber zu diesem Zeitpunkt wurde der externe Monitor überhaupt nicht mehr erkannt, sodass ich wieder zum Open Source-Treiber zurückkehre. Ich habe kein Xorg.confoder Xorg.conf.dnur ein xorg.conf.failsafe.

Ich möchte diese Befehle nicht jedes Mal wiederholen, wenn ich den Computer starte. Gibt es eine Möglichkeit, dies für mich Xorg.confoder etwas anderes zu speichern ? Es ist einige Jahre her, seit ich viel mit X gemacht habe. Kann mir hier jemand helfen?


1 Ich konnte nicht feststellen, warum dies passiert ist. Meine beste Vermutung ist ein problematisches Treiberupdate.

Kazark
quelle
1
Welche Grafikkarte verwenden Sie? Und wenn es sich um ATI / AMD oder Nvidia handelt, verwenden Sie den proprietären Treiber oder den Open Source-Treiber? Haben Sie derzeit eine /etc/X11/corg.confDatei oder etwas in /etc/X11/corg.conf.d? Bitte bearbeiten Sie Ihre Frage und fügen Sie den Inhalt dieser Dateien hinzu.
Terdon
Bitte bearbeiten Sie Ihre Frage, um zusätzliche Informationen hinzuzufügen. Sie ist schwer zu lesen und in den Kommentaren leicht zu übersehen. Das heißt, ja, die xorg.conf wird nicht mehr benötigt, diese Dinge werden jetzt von udev erledigt.
Terdon
Wenn ich mir Ihre Frage noch einmal ansehe und was ich beim Schreiben meiner Antwort vermisst habe, ist, dass Sie einen Laptop haben. Möglicherweise möchten Sie eine udevRegel schreiben, nach der jedes Mal, wenn der Monitor angeschlossen oder entfernt wird, ein Skript aufgerufen wird, um xrandr auszuführen. Dies ist viel besser, wenn Ihr Computer nicht immer an den Monitor angeschlossen ist. Wenn Sie froh sind, dass es immer am selben Ort aufgestellt Xorg.confist , ist dies der richtige Weg.
Graeme

Antworten:

5

Ich bin sicher, es gibt einen besseren Weg, ich denke, das ist udevjetzt alles erledigt, aber wenn Sie wissen, dass diese Befehle es lösen werden, können Sie sie immer einfach in ein Skript verwandeln:

#!/usr/bin/env bash
cvt 1600 1200
xrandr --newmode "1600x1200_60.00"  161.00  1600 1712 1880 2160  1200 1203 1207 1245 -hsync +vsync
xrandr --addmode VGA-1 1600x1200_60.00

Machen Sie es ausführbar und fügen Sie es dann den Startanwendungen Ihrer Desktop-Umgebung hinzu. Dies ist wahrscheinlich die beste Wahl, wenn Ihr DE Ihnen die Option bietet.


Wenn Sie das oben genannte nicht tun können, können Sie sie als schmutzigen Hack zu Ihrem hinzufügen ~/.profile:

if [ ! -t 0 ] 
then
    cvt 1600 1200
    xrandr --newmode "1600x1200_60.00"  161.00  1600 1712 1880 2160  1200 1203 1207 1245 -hsync +vsync
    xrandr --addmode VGA-1 1600x1200_60.00
fi

Das if [ ! -t 0 ]sollte sicherstellen, dass dies nur in der GUI ausgeführt wird und, .profilewie ich mich erinnere, vom Login-Manager von mint bezogen wird.

Nun, Sie sollten auch in der Lage sein zu verwenden , ~/.xsessionaber ich habe mit haben Probleme , die ignoriert werden. Viele der älteren Ansätze werden ersetzt, und ich bin mir nicht sicher, wie der Stand der Technik ist.

terdon
quelle
Sie müssen cvt 1600 1200 nicht verwenden, da wir die Ausgabe bereits in den nächsten beiden Zeilen verwendet haben.
PraveenMax
4

Wenn Sie den proprietären Nvidia-Treiber verwenden, nvdia-settingssollte dies das GUI-Tool zum Konfigurieren der Xorg.confDatei sein. Es sollte ein eigenes Paket in Linux Mint haben, daher wäre die Installation so einfach wie:

sudo apt-get install nvidia-settings

Dies sollte irgendwo ein Symbol in Ihr Menü einfügen, Sie können es von dort aus ausführen (obwohl ich nicht sicher bin, wie Sie es dazu bringen, Root-Berechtigungen zu erhalten). Ich glaube, Sie können über die Befehlszeile Folgendes tun:

sudo /usr/lib/nvidia/current/nvidia-settings

Wenn Sie eine Befehlszeile ausführen möchten, nvidia-xconfigscheint dies das zu verwendende Tool zu sein ( nvidia-xconfigPaket für mich). In beiden Fällen erzielen Sie mit dem proprietären Treiber normalerweise bessere Ergebnisse, wenn er ordnungsgemäß konfiguriert ist. Diese Tools generieren zumindest eine vernünftige Xorg.confDatei, die Sie entweder direkt oder über eines dieser Programme optimieren können.

Graeme
quelle