Falsche Anmeldebildschirmauflösung

44

Gelegentlich, normalerweise nach einem fehlerhaften Neustart meines Computers, ist meine Anmeldebildschirmauflösung nicht die Standardauflösung von 1440 x 900, aber ich denke 1600 x 900. Jetzt habe ich diesen Monitor, der wirklich schlecht mit Auflösungen umgehen kann, für die er nicht entwickelt wurde, und auf dem Bildschirm wird ein albernes Kästchen mit einer "falschen Auflösung" angezeigt.

Gibt es eine Möglichkeit, den Anmeldebildschirm mit einer Auflösung von 1440 x 900 zu laden, egal was passiert? Ich verwende Ubuntu 11.10 mit Unity und LightDM.

Ruben Bakker
quelle
Für mich hat von allen Lösungen nur diese in 18.04 mit lightdm funktioniert: askubuntu.com/questions/507726/…
Takkat

Antworten:

40

Hierfür können Sie ein Skript erstellen (Quelle LightDM Resolution ).

  1. Zunächst müssen wir herausfinden, wie Ihre Monitorkennung lautet. Öffnen Sie ein Terminal, geben Sie terminalIhren Unity-Gedankenstrich ein, um die Option anzuzeigen, oder drücken Sie Ctrl+ Alt+T
  2. Geben / kopieren Sie diesen Befehl, um Ihre Anzeigedetails anzuzeigen:

    xrandr -q
    

    Wenn Sie nur einen Monitor haben, sehen Sie in der Ausgabe eine Zeile wie die folgende (wahrscheinlich mit einigen unterschiedlichen Werten, der Bezeichner zu Beginn, nach dem wir suchen):

    DVI-0 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 473mm x 296mm
    

    Die Bildschirmkennung lautet in diesem Fall DVI-0

  3. Öffnen Sie Ihren bevorzugten Texteditor, verwenden Sie gedit für dieses Beispiel, drücken Sie Alt+ F2und geben Sie Folgendes eingedit

  4. Tippe / kopiere dies in:

    #!/bin/sh
    xrandr --output DVI-0 --primary --mode 1440x900
    

    Speichern Sie dies auf Ihrem Desktop als lightdmxrandr.sh

  5. Sie können das Skript testen, bevor wir es in die Praxis umsetzen. Zurück im Terminal navigieren Sie zu dem Ort, an dem wir es gerade gespeichert haben:

    cd ~/Desktop
    

    Jetzt müssen wir es ausführbar machen:

    chmod a+rx lightdmxrandr.sh
    

    Führen Sie es jetzt aus:

    ./lightdmxrandr.sh
    

    (Wenn Ihr Bildschirm nach dem Anmelden automatisch korrigiert wird, werden Sie wahrscheinlich keinen Unterschied feststellen. Daher möchten Sie möglicherweise eine andere Testauflösung verwenden, aber Sie wissen, dass diese beim Testen funktioniert.)

  6. Bewegen wir nun das kleine Skript, das wir erstellt haben:

    sudo mv ~/Desktop/lightdmxrandr.sh /usr/share/.
    

    Wenn Sie nicht verwenden sudo, wird möglicherweise ein Berechtigungsfehler angezeigt (ich verwende diesen Ordner aus persönlichen Gründen).

  7. Wir müssen dies jetzt in lightdm ausführen und zum richtigen Ordner navigieren:

    cd /etc/lightdm
    
  8. Öffnen Sie die lightdm conf-Datei:

    sudo gedit lightdm.conf
    
  9. Fügen Sie nun nach der letzten Zeile die Anweisung zum Ausführen Ihres Skripts hinzu und speichern Sie:

    display-setup-script=/usr/share/lightdmxrandr.sh
    

Jetzt neu starten und das sollte die richtige Auflösung auf Ihrem lightdm-Anmeldebildschirm einstellen.

(Diese Anweisungen sehen zwar lang aus, dauern aber nicht lange.)

captain_G
quelle
1
Vielen Dank! Ich verwende das unten erwähnte Leon-Skript. askubuntu.com/a/88882/28071
beanaroo
Das ist ein schönes Skript, ich werde es für die zukünftige Verwendung speichern!
captain_G
Leider bricht dies in Ubuntu 13.04 gerade ein. Wahrscheinlich, weil sie einige massive Änderungen am Betriebssystem vorgenommen haben.
Patrick
Funktioniert auch nicht mit Ubuntu 13.10 + NVIDIA-Treiber 319: Das Skript wird ausgeführt, aber die Auflösung ändert sich nicht - wahrscheinlich, weil der NVIDIA-Treiber sie überschreibt.
Speakr
Ich denke es sollte chown root:rootauch sein?
Aquarius Power
38

Ich habe eine sehr einfache Problemumgehung gefunden, die für mich mit 13.04 perfekt funktioniert. ( Update : jetzt 13.10) auf einem Laptop mit einem 24 "externen Bildschirm, der nicht permanent verbunden ist.

Ich kopiere einfach von hier

  1. Anmeldung
  2. Verwenden Sie xrandr oder das Dienstprogramm Displays, um Ihre Monitore so zu konfigurieren, wie Sie sie im Anmeldebildschirm konfigurieren möchten
  3. Kopieren Sie ~ / .config / monitore.xml nach /var/lib/lightdm/.config

Da ich meine Monitore bereits richtig konfiguriert hatte, musste ich nur Schritt 3 ausführen.

Einige andere Antworten, die hier gegeben wurden, haben für mich funktioniert, aber nur in einem bestimmten Szenario, bei dem das Risiko eines unbrauchbaren Systems in anderen Szenarien besteht (LOW GRAPHICS MODE ERROR). Zum Beispiel, wenn der externe Monitor permanent verbunden ist (Antwort von @captain_G akzeptiert) oder wenn immer dasselbe Gerät an den für den externen Monitor verwendeten Ausgang angeschlossen ist (Skript von @Axlrod). Es scheint, dass die Antwort von @ MarcoV die allgemeinste Lösung ist, sie beinhaltet jedoch immer noch Skriptregeln.

Tobold
quelle
4
Viel einfacher als die anderen Antworten ... Ich frage mich, warum es nicht mehr Stimmen hat. Nun, es hat meins.
aap
Andererseits wäre es zwar hilfreich, den Anmeldebildschirm zu öffnen, aber es wäre schön, wenn andere Benutzer die Bildschirmauflösung nicht erneut einstellen müssten.
aap
3
Anstatt die Datei zu kopieren, erstellen Sie einen Link, der automatisch aktualisiert wird, wenn Sie Ihre Bildschirmeinstellungen ändern: $ sudo ln ~/.config/monitors.xml /var/lib/lightdm/.config/monitors.xml(Nein, symbolische Links funktionieren NICHT.)
Nathan JB
3
Welche Anwendung schreibt / aktualisiert monitors.xml? Ich benutze XFCE und diese Datei ist 2 Jahre alt und völlig veraltet. Ich kann keine ähnliche Datei finden.
Scai
1
Dies ist der richtige Ansatz im Gegensatz zum Erstellen eines Skripts zum Ändern von Auflösungen. .config / monitore.xml kann mehrere Monitorkonfigurationen unterstützen (dh Ihr Setup bei der Arbeit mit einem Dock und 2 Monitoren im Vergleich zu Ihrem Setup zu Hause ohne Dock und 1 externen Monitor). Das Erstellen eines manuellen Skripts zum Festlegen der Auflösung ist relativ aufwendig
Iyad K
20

Anstatt ein Skript zu erstellen, können Sie einfach /etc/lightdm/lightdm.confeine Zeile wie die folgende hinzufügen :

display-setup-script=xrandr --output default --mode 1280x720

Stellen Sie vor dem Einfügen sicher, dass der Befehl funktioniert, da lightdm bei einem falschen Befehl nicht gestartet wird.

Eugeniy
quelle
Hallo, Ihre xrandBefehle sagen:warning: output default not found; ignoring
SebMa
@SebMa Sie müssen den richtigen Ausgabenamen verwenden!
Ken Sharp
2

Für ein Multi-Monitor-Setup, bei dem Sie möglicherweise Ihren Laptop trennen und ohne verwenden, ist hier eine einfache Lösung:

Lauf:

xrandr

Holen Sie sich die Geräte, die Sie Laptop verwenden, ist in der Regel LVDS1, und für mich habe ich einen DP2 (Displayport 2), es könnte HDMI1 oder etwas anderes sein, finden Sie nur diejenigen mit Auflösungen neben ihnen aufgeführt.

Erstellen Sie diese kleine Bash-Datei:

#!/bin/bash

mode="$(xrandr -q|grep -A1 "DP2 connected"| tail -1 |awk '{ print $1 }')"
if [ -n "$mode" ]; then
  xrandr --output LVDS1 --off
  xrandr --output DP2 --primary --mode 2540x1440
fi

Ersetzen Sie LVDS1 durch Ihren Laptop-Monitoranschluss.

Ersetzen Sie DP2 durch Ihren externen Monitoranschluss.

Legen Sie das Bash-Skript in / usr / bin / local / ab.

chmod + x das Skript

Bearbeiten Sie die Datei /etc/lightdm/lightdm.conf

Hinzufügen

display-setup-script=/path/to/my/script

Starten Sie neu.

Die Auflösungsänderung erfolgt nur, wenn Sie sich jetzt tatsächlich an diesem Bildschirm befinden.

Wenn Sie mehrere Stellen mit unterschiedlichen Monitoren / Auflösungen an demselben Anschluss haben, müssen Sie mehr Informationen in Ihr Bash-Skript einfügen.

Alex R
quelle
2

Das obige Axlrod-Skript wurde nur geringfügig verbessert .

Sie müssen lediglich angeben, welcher Monitor primär verwendet werden soll und welcher Ihr Laptop-Bildschirm (LVDS) ist.

#! / bin / bash
LVDS = "LVDS-0"
PRIMARY = "VGA-0"

Funktion get_displays ()
{
        xrandr -q | grep verbunden | awk '{print $ 1}'
}

Funktion get_resolution ()
{
        [[-z "$ 1"]] && gibt 0 || zurück xrandr -q | grep -A1 $ 1 | tail -1 | awk '{print $ 1}' | grep -e ^ [0-9]
}

zur Anzeige in $ (get_displays); machen
        resolution = `get_resolution $ display`

        [[$ display == $ PRIMARY]] && arg = "- primary";
        [[-n $ resolution]] && mode = "- mode $ resolution";

        if [[$ display == $ LVDS]]; dann
                xrandr --output $ display --off
        elif [[-n $ mode]]; dann
                xrandr --output $ display $ arg $ mode
        fi
        nicht eingestellter Modus arg Auflösung;
getan
Ikko
quelle
1
sudo gedit /usr/share/X11/xorg.conf.d/52-myres.conf

dann in der Datei:

Section "Monitor"
    Identifier "VGA1"
    Option "PreferredMode" "1152x864"
EndSection

Speichern und schließen. Die Werte wurden von Befehl erhalten xrandr -q. VGA1ist der Name meines Connectors und 1152x864der Name der Auflösung.

Dies funktioniert für Xubuntu 16.04. Es wird eine bevorzugte Auflösung festgelegt und ich kann die Auflösung des Anmeldebildschirms festlegen, anstatt standardmäßig die höchste unterstützte Auflösung zu verwenden.

Geändert von Antworten hier

Michael Faraday
quelle
1
Nach der Installation von Open-VM-Tools und Open-VM-Tools-Desktop funktionierte das Kopieren von Monitoren.xml nach /var/lib/lightdm/.config nicht mehr für mich. Das Festlegen der bevorzugten Auflösung wie folgt hat es für mich behoben.
Jropella
1

Was ich als nützlich empfunden habe, war ein Beitrag auf der Ubuntu-Guide-Website . Ich habe so viele Dinge in Ubuntu 11.10 ausprobiert und sogar versucht, einfach GNOME Classic zu verwenden. Die Auflösung war immer 1024x768 und wenn ich sie manuell auf 1440x900 einstellte, war sie "virtuell", ich musste mit der Maus scrollen, um den gesamten Desktop zu erkunden, der sich außerhalb der tatsächlichen Bildschirmabmessungen befand.

Im Terminal habe ich diesen Befehl ausgeführt:

sudo gedit /etc/default/grub

Das Laden des Texteditors kann eine Weile dauern. Sobald es geladen war, habe ich die Zeile bearbeitet

GRUB_GFXMODE=1024x768

und änderte es zu:

GRUB_GFXMODE=1440x900

Denken Sie daran, auszuführen update-grub, um die Änderungen zu übernehmen.

Danach habe ich versucht, die VESA-Treiber neu zu installieren (auf diesem Computer habe ich eine GeForce 260 GTX). Ich weiß, dass der bessere Weg ist, offizielle Nvidia-Treiber zu verwenden, aber bei deren Verwendung war das Problem immer das gleiche ... Sicher, ich denke, jetzt wird die Leistung schlechter.

Beim Überprüfen des Nvidia X Server-Einstellungsfelds habe ich überprüft, ob meine Auflösung hinzugefügt wurde, und beim Wechseln darauf wurde der Bildschirm richtig angezeigt. Eigentlich benutze ich Ubuntu 11.10 aber in GNOME Classic.

Ich bin ein Linux-Neuling und hoffe, dass ich anständige Dinge geschrieben habe.

Valinux
quelle
0

Machen Sie nichts mit Skripten oder Konfigurationsdateien, die die Möglichkeit bieten, Ihren Anmeldebildschirm unbrauchbar zu machen!

Melden Sie sich stattdessen an und legen Sie Ihre bevorzugten Bildschirmeinstellungen * fest. Führen Sie dann den folgenden Befehl aus:

sudo ln ~/.config/monitors.xml /var/lib/lightdm/.config/monitors.xml

Ihre Login-Auflösung spiegelt nun immer die Einstellungen des Benutzers wider, bei dem Sie sich gerade angemeldet haben.

* Vergiss nicht auf "Übernehmen" zu klicken

Nathan JB
quelle
Das funktioniert, ist aber zweitrangig. Es lädt normal in der maximalen Auflösung und wechselt dann zu Ihren Einstellungen. Wie können Sie dafür sorgen, dass es die richtige Auflösung lädt, um zu starten?
Goddard
0

Axelrods Skript ist etwas mangelhaft, da ein Grep für "connected" auch alle "disconnected" -Displays erfasst ... nicht das, was wir wollen ...

Darüber hinaus ist die Verwendung von grep mit awk und tail usw ... verschwenderisch umständlich, und ich würde folgendes vorschlagen. Außerdem ändern wir in get_resolution den Rückgabewert auf 1, da ein Rückgabewert von Null normalerweise auf einen Mangel an Fehlern hinweist. Daher verwenden wir 1, wenn der erste Parameter fehlt.

Zusammenfassend lässt sich festhalten, dass durch die Instanziierung des Hauptteils des Skripts eine Funktion aufgerufen und zu einem späteren Zeitpunkt ausgeführt werden kann, wenn dies in einer Funktionsbibliothek erforderlich ist. Außerdem können lokale Variablen verwendet werden, die nicht deaktiviert werden müssen.

function get_displays()
{
    xrandr -q | awk '($2 == "connected") {print $1;}'
};

# the "\" and c/r were added for readability on this website
# I do not have them in my code variant that I use.
function get_resolution()
{
    [[ -z "$1" ]] && return 1;
    xrandr -q | \
    awk -v display="$1" '($1 == display && $2 == "connected") {getline; print $1;}';
};

function setup_displays()
{
    local   primary=${2:-"VGA-0"};
    local   lvds=${3:-"LVDS-0"};

    for display in $(get_displays);
    do
            local   resolution=${1:-"$(get_resolution $display)"};

            [[ $display == $primary ]] && local arg="--primary";
            [[ -n $resolution ]] && local mode="--mode $resolution";

            if [[ $display == $lvds ]];
            then
                    xrandr --output $display --off;
            elif [[ -n $mode ]];
            then
                    xrandr --output $display $arg $mode;
            fi;
    done;
};

setup_displays;
blake private_last_name
quelle
0

So habe ich es in Xubuntu 16.04 zum Laufen gebracht.

Für die gewünschte Auflösung müssen Sie einen String mitbringen. Dies ist innerhalb des Ergebnisses des Befehls:

xrandr --verbose

Wählen Sie nun das Teil mit der gewünschten Auflösung. Es wird ungefähr so ​​aussehen:

1152x864 (0xa6) 108.000MHz +HSync +VSync
    h: width  1152 start 1216 end 1344 total 1600 skew    0 clock  67.50KHz
    v: height  864 start  865 end  868 total  900           clock  75.00Hz

Aus den obigen Daten sollten Sie die Zeichenfolge erhalten 108.000 1152 1216 1344 1600 864 865 868 900 +HSync +VSync.

Suchen Sie nach einer ähnlichen Zeile, um den Namen Ihrer Ausgabe zu ermitteln:

VGA1 connected 1152x864+0+0 (0xa4) normal (normal left inverted right x axis y axis) 306mm x 230mm

Hier wird meine Ausgabe benannt VGA1.

Jetzt erstelle ein Skript:

sudo gedit /usr/share/lightdmxrandr.sh

Dann schreiben Sie in die Datei Folgendes:

#!/bin/sh
xrandr --newmode "1152x864_75.00"  108.000  1152 1216 1344 1600  864 865 868 900 +HSync +VSync
xrandr --addmode VGA1 "1152x864_75.00"
xrandr --output VGA1 --mode 1152x864_75.00 --pos 0x0 --rotate normal

Datei speichern und schließen. Skript ausführbar machen:

sudo chmod a+rx /usr/share/lightdmxrandr.sh

Erstellen Sie eine Konfigurationsdatei, um das soeben erstellte Skript aufzurufen.

sudo gedit /etc/lightdm/lightdm.conf.d/00-myres.conf

In dieser Datei geben Sie ein:

[Seat:*]
display-setup-script=/usr/share/lightdmxrandr.sh

Datei speichern und schließen. Starten Sie neu und hoffentlich wird die von Ihnen gewählte Auflösung bei Ihrer Anmeldung angezeigt.

In der Praxis ist dies der einzige Weg, der für mich funktioniert hat, obwohl es nicht logisch ist, vorhandene Auflösungen neu zu erstellen.

Antwort geändert von dieser Frage .

Hinweis

Eine alternative Möglichkeit, die Zeichenfolge mit langer Auflösung abzurufen, ist das Programm cvt. Aktualisierungsrate 75.00, um eine Zeichenfolge für die Auflösung 1152 x 864 zu erhalten:

cvt 1152 864 75

Dies gab mir eine etwas andere Auflösung als meine Desktopauflösung und ist der Grund, warum ich die Methode nicht in die Hauptantwort aufgenommen habe.

Michael Faraday
quelle
0

Wenn Sie den GTK-Begrüßer von LightDM verwenden, können xrandr -qSie die Namen Ihrer Monitore suchen /etc/lightdm/lightdm-gtk-greeterund die Eigenschaft active-monitorwie in den Kommentaren in dieser Datei beschrieben bearbeiten und festlegen . Diese Eigenschaft kann mehrere geordnete Werte annehmen, einschließlich #cursorfür den Monitor, auf dem derzeit der Mauszeiger angezeigt wird.

Dzamo Norton
quelle
0

Ich möchte mein Skript, das die Monitore konfiguriert, an eine der Multimedia-Tasten auf meiner Tastatur anhängen, die ich sonst nicht benutze. Derzeit habe ich die Schaltfläche mit der Bezeichnung "Windows Media Center" meine Anzeigen in ihre bevorzugte Konfiguration zu zwingen. Auf diese Weise können Sie, wenn Sie blind fliegen und Ihre Monitore nicht mit der gewünschten Auflösung synchronisieren, einfach den Hotkey drücken und alles ist behoben.

Kryptozoologe
quelle
-1

"Bevorzugte Bildschirmmodi" könnten das Problem sein

Ich gehe davon aus, dass Ihr Monitor die hohe Bildschirmauflösung als bevorzugt meldet. Jetzt möchten Sie diese Standardeinstellung überschreiben . Siehe meine Antwort auf eine sehr ähnliche Frage für Einzelheiten darüber, wie dies getan werden kann.

Ich hatte das gegenteilige Problem: Ich hatte immer eine niedrigere Bildschirmauflösung (1280x1024) als die, die ich wollte (1600x1200). Der Fix, den ich gefunden habe (und der in der verknüpften Antwort beschrieben ist), kann hoffentlich auch auf Ihr Problem angewendet werden.

Chriki
quelle
Wer auch immer meine Antwort abgelehnt hat, können Sie bitte eine Anmerkung hinzufügen, warum diese Antwort Ihrer Meinung nach nicht nützlich ist?
Chriki
-2

Ich hatte das gleiche Problem auf meinem MacBook Pro Mitte 2014 (11,1) mit Xenial. Ich habe alle oben genannten Lösungen in verschiedenen Formen ausprobiert, aber X würde immer in den ausfallsicheren Low-Graphics-Modus versetzt (aber genau in der Auflösung angezeigt, die ich als Standard festlegen wollte, nicht weniger.

Es stellte sich heraus, dass ich nach langem Streiten in den Foren die einfachste und voreingestellte mögliche Lösung vergessen hatte: nomodeset. Das hat das Problem behoben.

TL; DR: Vergiss nicht, nomodeset auszuprobieren! Esp. auf einem MacbookPro 11,1.

IanGa
quelle
-3

Ich habe dieses Skript erstellt , um es dynamischer zu gestalten (mehrere Arbeitsbereiche / verschiedene Monitore).

Einziger Ärger: Wenn Sie sich von lightdm aus einloggen, blinkt der Bildschirm immer noch so, als ob er die Auflösung ändern möchte: s

Leon
quelle
1
Paste wurde nicht gefunden.
Tobold
Tatsächlich; Wenn Sie noch eine lokale Kopie des Skripts haben, laden Sie es bitte erneut hoch.
Wchargin
1
Ich habe das Skript auf Github hochgeladen. Ich weiß nicht, warum paste.ubuntu.com es entfernt hat :(
Leon