Anzeigeeinstellungen auf alle Benutzerkonten anwenden?

14

Ich habe einige Zeit damit verbracht, meine Einstellungen für mehrere Monitore zu korrigieren. Dies funktioniert einwandfrei, wenn ich angemeldet bin, aber nicht direkt im Anmeldebildschirm oder für andere Benutzer.

Wie lege ich die Anzeigeeinstellungen global für alle Benutzer und den Anmeldebildschirm fest?

Mirams
quelle
Wie hast du es eingestellt? von der GUI oder der Kommandozeile, und was genau sind Ihre Einstellungen?
Jacob Vlijm
Mit der "Screen Display" GUI werden die Einstellungen dort sowieso angezeigt. Zwei Monitore, einer gedreht.
Mirams
askubuntu.com/questions/360886/… legt fest, dass die Anmeldung mit einem Benutzer identisch ist, was hilfreich ist. askubuntu.com/questions/372729/… scheint alte xorg- einstellungen anzusprechen, die in 14.04 nicht mehr verwendet werden (glaube ich?). Ich kann am 14.04.
Keine
Ich habe diese Antwort ausprobiert, den Bildschirm für die Anmeldung korrekt gedreht und anschließend nicht für die Benutzer gedreht (auch nach dem Löschen ihrer lokalen
monitor.xml
Ich bin ein bisschen überrascht von der Prämie, wenn Sie Ihre Monitore einrichten, sudo cp ~/.config/monitors.xml /var/lib/lightdm/.config/wie oben vorgeschlagen, + die unten stehende Lösung ausführen , haben Sie Ihr Setup für alle Benutzer (einschließlich neuer Benutzer) genau so, wie Sie es beschreiben.
Jacob Vlijm

Antworten:

14

Je nachdem, wie Sie Ihr System eingerichtet haben, ist es möglicherweise so einfach, die monitors.xmlDatei vom richtig eingerichteten Benutzer auf alle Benutzer zu kopieren :

So testen Sie dies für einen Benutzer:

cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /home/TestUser/.config/

Melden Sie dann TestUser ab, wenn Sie bereits angemeldet sind , melden Sie sich erneut an und prüfen Sie, ob alles korrekt ist.

Der Befehl für alle Benutzer:

cp /home/CorrectUser/.config/monitors.xml /tmp/
for szUser in /home/* ; do sudo cp --preserve=timestamps /tmp/monitors.xml $szUser/.config/ ; done

Der Befehl für den Anmeldebildschirm:

sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /var/lib/lightdm/.config/

Der Befehl für alle zukünftigen Benutzer ¹:

sudo mdkdir -p /etc/skel/.config
sudo cp --preserve=timestamps /home/CorrectUser/.config/monitors.xml /etc/skel/.config/

Hinweis¹: Alle Benutzer, die Sie in Zukunft erstellen werden

Fabby
quelle
1
Ich habe es bereits in den Kommentaren vorgeschlagen (und in meiner Antwort zuvor, aber rückgängig gemacht), aber OP hat erwähnt, dass es nicht ausreicht. Dies funktioniert nur für den Anmeldebildschirm :) Es funktioniert auch nicht für neue Benutzer, es sei denn, Sie kopieren sie erneut auf diese Benutzer.
Jacob Vlijm
@JacobVlijm: Nochmals lesen ... Meins ist für den Anmeldebildschirm und alle Benutzer ... : P ( wenn ich es als Kommentar darunter vom OP belasse, dass es nicht funktioniert, würden andere Poster davor gewarnt, all das zu tippen ein drittes Mal) > :-)
Fabby
1
Aus diesem Grund habe ich nicht vorgeschlagen, die Datei auf alle Benutzer zu kopieren: Ich möchte eine Lösung, die Einstellungen auf alle (und zukünftige) Benutzerkonten anwendet und auch den Anmeldebildschirm korrekt anzeigt . Hinzufügen zu /etc/xdg scheint der einzige Trick zu sein, der auch neuen Benutzern das antut.
Jacob Vlijm
@JacobVlijm: ah, das habe ich verpasst! (Hinzugefügt Lösung auch dafür) ;-)
Fabby
2
Dies ist die bisher beste Antwort: Richtet alle Monitore korrekt ein und funktioniert auch für den Gastbenutzer sofort. Als Bonus - gibt es eine Möglichkeit, die Einstellung "Launcher-Platzierung" auch aus der GUI für Anzeigeeinstellungen zu kopieren? Auf meinem Benutzer ist es nur auf einem Monitor, aber auf beiden für neue / Gastbenutzer.
Mirams
3

Um Ihre Bildschirmkonfiguration für jeden Benutzer bei der Anmeldung festzulegen (dies ändert nicht die Konfiguration auf dem Anmeldebildschirm), können Sie eine .desktopDatei in erstellen/etc/xdg/autostart

Wie geht das

  1. Finden Sie den Namen des Bildschirms heraus, den Sie drehen möchten, indem Sie ausführen xrandr. Es werden eine Reihe von Zeilen ausgegeben, von denen einige wie folgt aussehen:

    VGA-0 connected
    

    Auf diese Weise erhalten Sie Informationen zu den Namen der angeschlossenen Bildschirme.

  2. Wählen Sie in meinem Beispiel unten die aus, die Sie gedreht haben möchten VGA-0
  3. Erstellen Sie einen Launcher mit (zB) gedit:

    sudo -i gedit /etc/xdg/autostart/set_screens.desktop
    

    Fügen Sie den folgenden Text in die Datei ein:

    [Desktop Entry]
    Name=set_screens
    Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
    Type=Application
    

    In der Zeile ersetzen:

    Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
    

    Die Zeichenfolge: VGA-0nach dem Namen Ihres (gedrehten) Bildschirms.

Wichtige Notizen

  • In der Schlange

    Exec=/bin/bash -c "sleep 10&&xrandr --output VGA-0 --rotate left"
    

    Ich schloss ein sleep 10. Dies liegt daran, dass xrandrBefehle manchmal unterbrochen werden, wenn sie zu früh ausgeführt werden, bevor das Laden des Desktops "abgeschlossen" ist. Möglicherweise müssen Sie die Pause verlängern, oder Sie könnten versuchen, sie wegzulassen. In dem Befehl, da es der Bildschirm dreht sie nach 10 Sekunden nach dem Einloggen in der ist, jeden Benutzers.

  • Der Befehl:

    xrandr --output VGA-0 --rotate left
    

    dreht sich der Bildschirm nach links, dass keine Notwendigkeit zu sagen , wenn Sie eine andere Art der Rotation möchten, können Sie entweder wählen left, right, normal, inverted(siehe auch hier) .

Erläuterung

Sie können Befehle beim Start ausführen (tatsächlich anmelden), indem Sie eine .desktopDatei ( Startprogramm ) in platzieren ~/.config/autostart. Dadurch wird der Launcher nur für einen einzelnen Benutzer ausgeführt. Wenn Sie das gleiche tun, aber das Startprogramm in platzieren /etc/xdg/autostart, der Befehl ausgeführt , wenn alle Benutzer anmeldet, es sei denn , ein bestimmter Benutzer den Launcher für ihn oder sie in Dash> Startup - Anwendungen deaktiviert

Außerdem können Sie einfach Ihre lokale ~/.config/monitors.xmlDatei kopieren /var/lib/lightdm/monitors.xml, um die Einstellungen auch auf dem Anmeldebildschirm zu übernehmen.

Imo die Kombination von diesem und der Lösung oben (ein Startprogramm in /etc/xdg) ist die einfachste Lösung, um genau das zu erreichen, was Sie für den Anmeldebildschirm und (jeden) Benutzer wollen. Die Lösung eines Launchers in /etc/xdgist (sehr) einfach umzukehren oder zu ändern, falls Sie ein anderes Setup vornehmen müssen, ohne viele Dateien auf (jeder) Benutzerebene zu bearbeiten, da sowohl die Einstellungen des Benutzers als auch der Anmeldebildschirm verwaltet werden alle Benutzer auf einmal in zwei einfachen Dateien.

Jacob Vlijm
quelle
Das könnte funktionieren - Ändern der Einstellungen 10s nach der Anmeldung, aber ich würde es vorziehen, zu wissen, wo sie eingestellt sind, und sie für alle zu ändern (und den Anmeldebildschirm, der derzeit zur Seite zeigt).
Mirams
Warum sollte jemand dies ablehnen?
Fabby
2

Wollte nur einen Kommentar für jeden hinzufügen, der Probleme mit einem ähnlichen Problem hat. Bei jeder Anmeldung blieb die Auflösung meines alten Monitors (1280 x 1024) erhalten, aber der Anmeldebildschirm und die Gastbenutzeranmeldung verwenden die korrekte Standardgröße von 1680 x 1050.

Ich habe in den letzten vier Monaten viele Posts gelesen, um eine Antwort zu finden. Ich habe in xorg.conf, monitor.xml, lightdm und xrandr nachgeschlagen und andere Vorschläge - aber einige Konfigurationsänderungen sind kompliziert und bergen das Risiko, die Anzeige zu beschädigen vollständig, so endete ich mit der GUI, um die Monitoreinstellungen manuell bei jedem Login zu ändern.

Heute habe ich in meinem .config-Ordner nach der alten Auflösung gesucht.

grep -HrnIF '1280' .config | less

Das erste Ergebnis war die Datei ~ / .config / autostart / xrandr.desktop, die diese enthält.

Exec=xrandr -s 1280x1024 -r 75

also habe ich die datei einfach da rausgeschoben. Und Bingo, ich melde mich an und erhalte die Standardauflösung von 1680x1050.

Ich habe ein paar Stunden lang gesucht und konnte keine nahe genug liegende Antwort finden. Deshalb sollten Sie hier posten, falls es für jemanden nützlich ist.

MattB
quelle
Willkommen bei Ask Ubuntu. Vielen Dank, dass Sie Ihre vier Monate (abgelaufene Zeit) Forschungsarbeit geteilt haben.
WinEunuuchs2Unix
Ich denke, ich habe diese xrandr.desktop-Datei vor zwei Jahren erstellt, um Ubuntu immer mit den 'Goldstar'-Grundeinstellungen des Monitors zu umgehen, und das war wahrscheinlich ein Kompatibilitätsproblem mit meiner Grafikkarte.
MattB
0

Vielleicht möchten Sie etwas anhängen /etc/lightdm/lightdm.conf. Hier erstellen wir ein Skript, das einen xrandrBefehl zum Einrichten Ihrer Anzeige (n) verwendet. Sie können ein grafisches RandR-Tool verwenden, um einen Befehl für Sie zu erstellen, z arandr. In meinem Fall würde das Skript so aussehen:

#!/bin/sh
xrandr --output DVI-I-1 --mode 1600x1200 --pos 0x0 --rotate left --output DVI-I-0 --off --output DP-3 --off --output DP-2 --off --output DP-1 --mode 1600x900 --pos 1200x700 --rotate normal --output DP-0 --off

Sie können dieses Skript /usr/shareeinfügen oder wo immer Sie möchten. Ihr Skript sieht möglicherweise weniger komplex aus, da dies für ein komplexes Dual-Monitor-Setup gilt. Dann hänge etwas an wie:

session-setup-script=/usr/share/mycustomxrandr.sh

und:

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

Stellen Sie sicher, dass die Datei ausführbar ist.

chmod a+x mycustomxrandr.sh

Das session-setup-scriptwird die Display für nachdem Sie sich einloggen durch LightDM, und display-setup-scriptwird die Anzeige für den Login - Bildschirm ändern.

nixpower
quelle
Es wäre toll, wenn Sie dies ausprobieren könnten. Ich bin gespannt, ob dies für Sie funktioniert.
Nixpower
0

Auf meinem System (Ubuntu 16.04 ) funktionierte es nicht, einfach cpals root (using sudo) einzuloggen . Möglicherweise müssen Sie auch sicherstellen, dass der Eigentümer / die Gruppe von Monitoren.xml ist lightdm:lightdm.

sudo chown lightdm:lightdm /var/lib/lightdm/.config/monitors.xml
Zinsser
quelle