Wie kann ich die Anpassung von xrandr permanent machen?

65

Ich habe das Startskript für das GDM (/ etc / gdm / Init / Default) bearbeitet, um meine Anzeigeauflösung dauerhaft zu ändern.

Wie kann ich das mit LigthDM in Ubuntu Oneiric machen?

Edocastillo
quelle
Fügen Sie zu .xprofile in Ihrem Home-Ordner hinzu. Unter askubuntu.com/questions/63863/… finden Sie eine grundlegende Anleitung zum Festlegen der Auflösung und zum Hinzufügen von .xprofile
duffydack

Antworten:

21

Ich denke, Sie können die Anzeigemodi hinzufügen /etc/X11/xorg.conf.

Wenn Sie keine haben xorg.conf, können Sie die folgenden als Grundlage verwenden. Sie müssen die Einträge mit den Namen ersetzen Modeline, Driverund Modesmit den richtigen Einträge für Ihr System. Abhängig von Ihrer Hardware benötigen Sie möglicherweise zusätzliche Einträge, z. B. wenn Ihr System über mehr als einen Grafikchip verfügt.

Section "Monitor"
    Identifier    "Monitor0"
    Modeline "1280x1024_60.00"  109.00  1280 1368 1496 1712  1024 1027 1034 1063 -hsync +vsync
    Modeline "1024x768_60.00"   63.50  1024 1072 1176 1328  768 771 775 798 -hsync +vsync
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Card0"
    Monitor        "Monitor0"
    SubSection "Display"
        Modes       "1280x1024_60.00" "1024x768_60.00"
    EndSubSection
EndSection

Section "Device"
    Identifier    "Card0"
    Driver        "nvidia"
EndSection

Wenn Sie den Namen des Grafiktreibers, den Ihr System verwendet, nicht kennen, erhalten Sie möglicherweise den folgenden Namen (wenn Sie einen Intel-Grafikchip haben, lautet der Treibername nur "Intel"):

lshw -class display | grep "driver"

Die Modelines können erzeugt werden mit cvt:

cvt <h-resolution> <v-resolution> [refresh]
Nimmermehr
quelle
Ich habe es versucht und es würde aus irgendeinem Grund nicht booten. Ich habe die Modeline aus dem cvtBefehl und den Treiber aus dem anderen verwendet (und es auch versucht vesa), aber es hing nur ohne Fehlermeldungen. Die Lösung von Jon Roberts hat für mich perfekt funktioniert und ist unabhängig von Dingen wie dem Grafikkartentreiber, den Sie hier erwähnen und der für Neulinge leicht schief gehen könnte. Deshalb stimme ich für seine Antwort.
Mike
1
Dies scheint für Dinge wie --rotate nicht zu helfen.
Jherico
2
Diese Antwort ist veraltet. Siehe John Roberts Answer
con-f-use
+1 Perfekt-o! Mit GDM w / Gnome 3.16 erkannte mein GDm 1080p-Monitore. Danke!
eduncan911
Auf meinem Computer wird lshwausgegeben i915, jedoch der richtige Treiber intel.
User202729
63

Ändern Sie /etc/lightdm/lightdm.conf, um die folgenden Optionen hinzuzufügen:

display-setup-script> ruft mycustomloginvideo.sh auf, bevor der Anmeldebildschirm angezeigt wird

session-setup-script> ruft mycustomdesktopvideo.sh auf, bevor die Benutzerdesktopsitzung beginnt

[SeatDefaults]
greeter-session=unity-greeter
user-session=ubuntu
# for your login screen, e.g. LightDM (Ubuntu 11.10) or GDM (11.04 or earlier)
display-setup-script=/usr/share/mycustomloginvideo.sh
# for your desktop session
session-setup-script=/usr/share/mycustomdesktopvideo.sh

Möglicherweise müssen Sie mit dem GUI-Tool "arandr" das obige SH-Skript generieren und dabei Parameter aus der X-Konfiguration Ihrer aktuellen Sitzung auswählen.

Stellen Sie sicher, dass Ihr Shell-Skript ausführbar ist:

chmod a+x /usr/share/mycustom*video.sh

und Sie können testen, ob es funktioniert (dh, Sie haben keine Tippfehler oder Konfigurationsfehler in Ihrem xrandr-Befehl), indem Sie es einfach in einem Terminal ausführen:

/usr/share/mycustomdesktopvideo.sh

Wenn das Anmeldeskript aus irgendeinem Grund nicht funktioniert, führt Ihr Computer den Startvorgang für den Anmeldebildschirm möglicherweise nicht aus. Wenn das Desktop-Skript fehlschlägt, wird nach der Anmeldung möglicherweise kein Desktop angezeigt. Wenn Sie einen externen Monitor einrichten, schlagen diese Skripts fehl, wenn Sie die Verbindung trennen, und die X-Sitzung wird nicht gestartet.

Jon Roberts
quelle
Bearbeiten Sie für Mint 13 XFCE mit mdm / etc / mdm / Init / Default. Rufe dein Skript vor dem "exit 0" auf
StackUnder
Evnn arbeitet mit Fedora ... brauchte nur das display-setup-scriptSkript, da Xfce es bereits in den Anzeigeeinstellungen gesetzt hatte, also session-setup-scripthat mich das gerade auf den Anmeldebildschirm geworfen.
Wilf
10

Jemand hat eine andere Problemumgehung gepostet, obwohl ich sagen muss, dass es bei mir nicht funktioniert hat. Es könnte wahrscheinlich für Sie arbeiten. In meinem Fall bricht es die Einheit und ich kann nur meinen Mauszeiger bewegen. Das obere Bedienfeld der App-Anzeige sieht leer aus, aber nachdem ich meinen LCD-Bildschirm vom Stromnetz getrennt habe, konnte ich die hinzugefügten Zeilen löschen und alles wurde wieder normal.

Bearbeiten Sie die Datei /usr/sbin/lightdm-session

So sieht der erste Teil dieser Datei jetzt aus:

#!/bin/sh
#
# LightDM wrapper to run around X sessions.

echo "Running X session wrapper"

# Load profile
for file in "/etc/profile" "$HOME/.profile" "/etc/xprofile" "$HOME/.xprofile"; do
  if [ -f  "$file" ]; then
     echo "Loading profile from $file";
     . "$file"
  fi
done

xrandr --newmode "1368x768_60.00" 85.25 1368 1440 1576 1784 768 771 781 798 -hsync +vsync
xrandr --addmode CRT1 1368x768_60.00
xrandr --output CRT1 --mode 1368x768_60.00

# Load resources

Beachten Sie, dass die Xrandr-Einstellungen an Ihre angepasst werden sollten.

Meconio
quelle
Diese Lösung funktionierte hervorragend für Lubuntu 17.x auf einer alten Maschine. Es wirkt sich nur auf die Sitzung aus, sodass der Anmeldebildschirm des Begrüßers nicht mit der gewünschten Auflösung angezeigt wird.
Laconbass
6

Ich habe schon seit einiger Zeit versucht, ein ähnliches Problem zu lösen und eine Lösung gefunden, die für mich funktioniert. Hoffentlich hilft sie ...

Ich habe einen alten Aspire AOA110, bei dem ich den Bildschirm zu oft zerbrochen habe, und nach dem Kauf eines neuen Laptops habe ich beschlossen, ihn in einen HTPC umzuwandeln, aber das externe Display, das ich habe, wird von X nicht erkannt, so dass ich es musste "Tweak" es mehrmals, um es mit der richtigen Auflösung arbeiten zu lassen.

Folgendes habe ich getan:

Nachdem ich dieses http://ubuntuforums.org/showthread.php?t=1112186 Tutorial bis Schritt 5 verwendet habe, konnte ich in xrandr eine funktionierende und akzeptable Auflösung finden, aber dies funktionierte nicht auf dem LightDM-Anmeldebildschirm.

Befolgen Sie nicht die oben beschriebenen Schritte, um eine dauerhafte Funktionsweise zu erzielen, aber ich denke, dies ist die richtige Vorgehensweise in 11.10. Ich habe diesen Beitrag im ArchWiki https://wiki.archlinux.org/index.php/Xorg gefunden, das ich an meine Bedürfnisse angepasst habe.

Zuerst erstelle hier eine Datei: /etc/X11/xorg.conf.d/10-monitor.conf

Fügen Sie dann die entsprechenden X-Details für Ihr Display hinzu.

Section "ServerLayout"
Identifier     "DualSreen"
Screen       0 "Screen0"
Screen       1 "Screen1" RightOf "Screen0" #Screen1 at the right of Screen0
#Option         "Xinerama" "1" #To move windows between screens
EndSection

Section "Monitor"
Identifier     "LVDS1"
Option         "ignore" "true"
EndSection

Section "Monitor"
Identifier     "VGA1"
Option         "Enable" "true"
Modeline "1440x900_60.00"  106.47  1440 1520 1672 1904  900 901 904 932  -HSync +Vsync
EndSection

Section "Device"
Identifier     "Device0"
Driver         "intel"
Screen         0
EndSection

Section "Device"
Identifier     "Device1"
Driver         "intel"
Screen         1
EndSection

Section "Screen"
Identifier     "Screen0"
Device         "Device0"
Monitor        "VGA1"
DefaultDepth    24
Option         "TwinView" "0"
SubSection "Display"
    Depth          24
    Modes          "1440x900_60.00"
EndSubSection
EndSection

Section "Screen"
Identifier     "Screen1"
Device         "Device1"
Monitor        "LVDS1"
DefaultDepth   24
Option         "TwinView" "0"
SubSection "Display"
    Depth          24
EndSubSection
EndSection

Die wichtigen Bits, die hinzugefügt werden müssen, befinden sich unter dem entsprechenden Section "Monitor"Eintrag Modeline, den Sie bei der Verwendung gefunden haben, gtf 1440 900 60.00und dann unter dem entsprechenden Section "Screen"Eintrag mit dem richtigen Eintrag Modes.

Sie werden bemerken, dass ich versucht habe, die VGA1-Verbindung nicht nur auf eine geeignete Auflösung einzustellen, sondern sie auch anzuweisen, meinen LVDS1-Ausgang nicht zu verwenden. Natürlich müssen Sie Ihre Einstellungen entsprechend anpassen, um die richtige Anzahl von Ausgängen und die richtigen Geräte-, Bildschirm- und Anzeigebereiche für Ihr Setup anzupassen.

Entschuldigung für den epischen Beitrag, ich habe xorg.conf-Dateien seit einiger Zeit mit dem von mir verwendeten Hannspree-Display optimiert und die alten xorg.conf-Setups, die ich vor 11.10 verwendet habe, funktionieren einfach nicht mehr richtig einzige lösung die ich gefunden habe die funktioniert.

Viel Glück!

Glaubensfriktion
quelle
Die Verwendung xrandr -qsollte Ihnen die richtigen Informationen darüber geben, welches Display verwendet wird und welche Modi möglich sind.
faithinfriction
Eine grundlegende Konfigurationsdatei kann durch Laufen erzeugt werden Xorg :1 -configure, die einen neuen X - Server macht und erzeugt eine Konfigurationsdatei von ihm - das kann das kopiert werden /root/xorg.conf.newzu /etc/X11/xorg.conf. Ich fand einen besseren Weg, war die obige Antwort
Wilf
5

Ich hatte ein ähnliches Problem mit meinem Laptop wie oben und wollte dem Gespräch etwas hinzufügen. Wenn Sie sich nicht für die Anmeldeauflösung interessieren (ich nicht), aber möchten, dass der tatsächliche Arbeitsbereich die richtige Auflösung aufweist, können Sie Ihre Monitorinformationen zu LightDM hinzufügen, die volle Auflösung jedoch erst aktivieren, wenn Sie sich anmelden.

Ich habe gerade das folgende Skript für meinen Monitor in eine Datei eingefügt: lighdmxrandr

xrandr --newmode "1440x900_60.00"  106.50  1440 1528 1672 1904  900 903 909 934 -hsync +vsync
xrandr --addmode VGA1 1440x900_60.00

dann rufe ich es an /etc/lightdm/lightdm.conf

display-setup-script=/usr/bin/lightdmxrandr

Sobald ich mich angemeldet habe, kann ich meinen Monitor in Displays einrichten und er funktioniert auch nach dem erneuten Anmelden (hat mir einen großen hässlichen Fehler verursacht).

Karl
quelle
Dies funktionierte wie gewünscht, musste aber neu gestartet werden, ohne sich erneut anzumelden ...
CrandellWS
4

Lassen Sie mich als Erweiterung für Jon Roberts Antwort spezifizieren, dass arandr nicht alle in der aktuellen Sitzung funktionierenden Parameter in seine sh-Skript-Generierung einbezieht. Primärer Monitor (falls Sie eine Konfiguration mit zwei Monitoren verwenden), sind beispielsweise die Einstellungen für Bildwiederholfrequenz und Gamma für jeden Monitor nicht enthalten. Mein Sitzungsskript sieht so aus:

#!/bin/sh
xrandr --output LVDS --mode 1366x768 --pos 1600x432 --rotate normal --output HDMI-0 --off --output DVI-0 --off --output VGA-1 --mode 1600x1200 --rate 85 --pos 0x0 --rotate normal --primary
xrandr --output VGA-1 --gamma 0.8:0.7:0.55 

Ich habe die Optionen --rate und --primary in der ersten Zeile manuell hinzugefügt und dann manuell eine zweite Zeile mit der Gammakorrektur hinzugefügt, da anscheinend die xrandr- Gammaeinstellungen verloren gehen, wenn Sie einen Monitor auf primär schalten .

Ich weiß nicht, ob dieses bestimmte Verhalten mit den Gamma-Einstellungen beim Erstellen eines primären Monitors beabsichtigt ist oder ein Fehler ist.

Darüber hinaus wird das Sitzungsshell-Skript nicht von Lightdm aufgerufen, sondern als Startanwendung, da es den Anschein hat, dass Lightdm das Skript aufruft, bevor die Dinge für xrandr bereit sind und seltsame Dinge passieren.

Hermes
quelle
4

Ich hatte das Problem, dass ich eine erweiterte Anzeige für meine neue LXDE-Box haben wollte (kein doppelter Klon), fand den richtigen Befehl, konnte ihn aber nicht dauerhaft machen.

xrandr --output VGA-0 --right-of DVI-0

Die oben genannten Methoden schienen alle zu schwierig / nicht der richtige Weg, dies zu tun.

Ich fand schließlich dieses: http://www.sudo-juice.com/change-lxde-screen-resolution-ubuntu-lubuntu/

Das hat gut geklappt, aber ich habe stattdessen gedit verwendet:

gksu gedit /etc/xdg/lxsession/LXDE/autostart

Fügen Sie dann die Zeile am Ende mit einem @ -Symbol am Anfang hinzu:

@xrandr --output VGA-0 --right-of DVI-0

Hoffe das hilft und danke an sudo-juice.

PS Beachten Sie das Double -im Befehl xrandr --(auf meinem Bildschirm wurde es nicht so deutlich angezeigt).

abisdad
quelle
2

Erstellen Sie ein neues Dokument und benennen Sie es zB /home/yourusername/yourscriptname.sh Geben Sie ein

#!/bin/bash
xrandr --newmode "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
xrandr --addmode VGA1 1600x900_60.00
xrandr --output VGA1 --mode 1600x900_60.00
unity --replace

und speichern Sie es in Ihrem Home-Ordner (dies setzt die Auflösung auf 1600x900)

Öffnen Sie die Startanwendungen (oder führen Sie sie aus gnome-session-properties) und klicken Sie auf "HINZUFÜGEN". Geben Sie einen Namen und die Befehlszeile ein:

bash /home/yourusername/yourscriptname.sh

Speichern Sie es, und jetzt wird das Skript bei jeder Anmeldung ausgeführt. Sie müssen sich also zuerst abmelden, damit es wirksam wird. Das Ausführen des Befehls (z. B. bash /home/yourusername/yourscriptname.sh) in einem Terminal ist auch eine gute Idee, um zu überprüfen, ob das Skript funktioniert.

Nikhil
quelle
Dies wurde vom OP dieser Antwort bearbeitet (anstatt gelöscht), da es hier statt hier gepostet wurde - ich habe die ursprüngliche Formatierung wiederhergestellt, da dies nützlich sein kann, da es die xrandr-Konfiguration beim Anmelden wiederherstellen sollte - der Inhalt des Bash-Skripts sollte wird wahrscheinlich durch die xrandr-Befehle ersetzt, die verwendet werden, um die richtige Konfiguration zu erhalten.
Wilf
In meinem Dual-Monitor-Display wird die EDID für mein HDMI-0-Display gelesen, aber die EDID für mein DVI-0 wird nicht gelesen. Das Zeigen auf ein in gespeichertes Konfigurationsskript /usr/binhat nicht funktioniert, aber das Hinzufügen dieses Skripts zu meinen Start-Apps mit gnome-session-propertieswar erfolgreich!
Noobninja
1

Basierend auf den Antworten oben habe ich einige Tests durchgeführt und eine nützliche Methode gefunden, die für mich funktioniert. Dann habe ich ein einfaches Skript erstellt, um es mit meinen automatischen Installationen zu automatisieren. Aber es wird in allen anderen Fällen funktionieren.

Erstellen Sie eine scriptinstallxrandrfixed.sh Fügen Sie diese Zeilen hinzu:

#Variables for lightdm script and xrandr script to setup fixed resolution for old displays: 
xrandrscript=/usr/local/bin/xrandrscript.sh
lightdmstartscript=/usr/share/lightdm/lightdm.conf.d/60-xrandrscript.conf

 #Added old style configuration for lightdm: 
 sudo  ln -s /usr/share/lightdm/lightdm.conf.d /etc/lightdm/lightdm.conf.d
 #A fix to some old displays in high school at Fray Bentos, fix to 1024x768
 #Some useful information comes from: http://askubuntu.com/questions/63681/how-can-i-make-xrandr-customization-permanent
 sudo sh -c "echo '[SeatDefaults]' > $lightdmstartscript"
 # for your login screen, e.g. LightDM (Ubuntu 11.10) or GDM (11.04 or earlier)
 sudo sh -c "echo 'display-setup-script=$xrandrscript' >> $lightdmstartscript"
 # for your desktop session
 sudo sh -c "echo 'session-setup-script=$xrandrscript' >> $lightdmstartscript"
 sudo sh -c "echo 'xrandr --size 1024x768 --rate 60.0' > $xrandrscript"
 sudo chmod +x $xrandrscript

Es werden die Skripte und die Dateien für die LightDM-Anzeige und -Sitzung erstellt. Vergiss nicht, ihm die Erlaubnis zur Ausführung zu geben

chmod + x scriptinstallxrandrfixed.sh

Und ausführen

./scriptinstallxrandrfixed.sh (Sie müssen sich in demselben Verzeichnis befinden, in dem Sie die Datei haben.)

Wenn nicht im selben Verzeichnis: /path/to/script/scriptinstallxrandrfixed.sh

Passen Sie es Ihren Bedürfnissen an. Mit freundlichen Grüßen. Pablo.

pablodav
quelle