Ich wollte die Bildschirmauflösung meines Desktops auf 1366x768
ändern . Aber meine VESA drivers(AMD REDWOOD)
habe diese Auflösung nicht erkannt. Also habe ich ein Shell-Skript wie folgt erstellt:-
xrandr --newmode "1368x768_60.00" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync
xrandr --addmode DVI-0 1368x768_60.00
xrandr --output DisplayPort-0 --off --output DVI-0 --mode 1368x768_60.00 --pos 0x0 --rotate normal --output HDMI-0 --off
Ich habe es als lightdmxrandr.sh
gespeichert in /usr/bin
und ausführbar gemacht. Dann habe ich die folgenden Zeilen zu /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
hinzugefügt (was das Äquivalent der bekannten /etc/lightdm/lightdm.conf
ist . Ich verwende die obige Datei, da ich am 14.04 bin, wo es keine /etc/lightdm/lightdm.conf
gibt .) :-
greeter-session=unity-greeter
display-setup-script=/usr/bin/lightdmxrandr.sh
session-setup-script=/usr/bin/lightdmxrandr.sh
und gespeichert. Theoretisch hätte dies sowohl die Auflösung des Anmeldebildschirms als auch die Desktop-Bildschirmauflösung auf 1366x768
ändern sollen . Aber überraschenderweise änderte sich dadurch nur die Auflösung des Anmeldebildschirms. Die Desktopauflösung wurde nicht verändert. Später fügte ich das Skript zu Startup-Anwendungen hinzu und das änderte meine Desktop-Auflösung.
Ich möchte also wissen, warum ich Änderungen an lightdm.conf
vorgenommen habe Datei (oder besser gesagt die 50-ubuntu.conf
Datei) hatte keinen Einfluss auf meine Desktop-Auflösung. Ist dies eine Art Fehler, der auf dem Launchpad gemeldet werden muss, oder ist es falsch zu sagen, dass Änderungen in lightdm den Desktop-Bildschirm beeinflussen?
PS:- Meiner Meinung nach ist dies nicht nur spezifisch für Ubuntu 14.04.
Akzeptierte Antwort:
Ich habe etwas Ähnliches versucht und nach einigem Debuggen denke ich, dass ich herausgefunden habe, was los ist. Ihr Skript ist wahrscheinlich ist läuft und stellt wahrscheinlich die Auflösung richtig ein. Da es jedoch vom Login-Manager ausgeführt wird, wird es ausgeführt, bevor Unity die Einrichtung Ihrer Desktop-Umgebung abgeschlossen hat und Unity seine eigenen Einstellungen liest und die Auflösung auf das zurücksetzt, was Sie hatten. Also, ich denke, was passiert ist:
- lightdm führt Ihr Skript korrekt aus
- Dies stellt Ihre gewünschte Auflösung ein
- Unity startet, liest seine Einstellungen und kehrt zu der Standardauflösung zurück, die Sie dort haben
- Dein Vorsatz ist wieder so wie vorher
Dies geschieht jetzt, weil der VESA-Treiber Ihre gewünschte Auflösung nicht automatisch erkennt. Das bedeutet, dass Sie, wenn Sie die Auflösung im Abschnitt „Anzeigen“ der Unity-Einstellungen ändern, ihr eine Auflösung zuweisen, die nicht verfügbar ist, es sei denn, Sie führen xrandr
aus Befehle. Daher wird dies beim nächsten Neustart ignoriert und Unity kehrt zur Standardauflösung zurück.
Sie müssen also die Auflösung für Unity verfügbar machen, sie dann als Standard festlegen und sie damit verarbeiten lassen. Dazu müssen Sie diese Zeile zuerst zu /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf
hinzufügen :
session-setup-script=/usr/bin/lightdmxrandr.sh
Stellen Sie dann sicher, dass /usr/bin/lightdmxrandr.sh
sieht so aus:
xrandr --newmode "1368x768_60.00" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync
xrandr --addmode DVI-0 1368x768_60.00
Beachten Sie, dass ich nicht wirklich einstelle die Auflösung, nur zur Verfügung stellen. Wenn Sie diesen Neustart durchgeführt haben, melden Sie sich an. Die neue Auflösung sollte jetzt unter Einstellungen => Anzeigen verfügbar sein. Wenn ja, wählen Sie es dort aus, melden Sie sich ab und wieder an, und die Auflösung sollte korrekt eingestellt sein. Sie sollte jetzt über Neustarts hinweg bestehen bleiben.
Alternative Ansätze:
-
Erstellen Sie eine
/etc/X11/xorg.conf
Datei, die Ihre gewünschte Auflösung auflistet. Etwa so:Section "Monitor" Identifier "Monitor0" Modeline "1368x768_60.00" 109.00 1280 1368 1496 1712 1024 1027 1034 1063 -hsync +vsync EndSection Section "Screen" Identifier "Screen0" Device "Card0" Monitor "Monitor0" SubSection "Display" Modes "1368x768_60.00" EndSubSection EndSection Section "Device" Identifier "Card0" Driver "vesa" EndSection
-
Fügen Sie das Skript hinzu, das
xrandr
ausführt Befehle an die Startanwendungen Ihrer Sitzung.