Monitoreinstellungen speichern?

16

Gibt es eine Möglichkeit, meine Monitoreinstellungen zu speichern? Ich habe einen externen Monitor bei der Arbeit, aber jeden Morgen muss ich ihn anschließen und die Fenster neu anordnen, so dass sie nicht mehr nebeneinander, sondern übereinander liegen. Kann ich das einfach speichern?

Oscar Godson
quelle

Antworten:

7

Lange Rede, kurzer Sinn (das heißt: Machen Sie, was Nicolas Bernaerts vorschlägt, aber ich erspare Ihnen die Details): Die Monitorkonfiguration wird tatsächlich in gespeichert ~/.config/monitors.xml, aber beim Starten / Anmelden nicht angewendet.

Die Schritte, um dies zu überwinden, sind:

Melden Sie sich mit der falschen Monitorkonfiguration an.

Aktuelle Monitorkonfiguration entfernen:

cd .config
mv monitors.xml{,.bak}

Verwenden Sie die Anwendung " Displays" , um die Monitore wie gewünscht anzuordnen (ich habe einen seitlichen Monitor gegen den Uhrzeigersinn gedreht). Ordnen Sie Ihre Monitore nach Ihren Wünschen an

Sobald Sie auf Übernehmen klicken , wird ein neues monitors.xmlerstellt.

Laden Sie nun das Skript und den Launcher herunter und machen Sie es ausführbar, die die Monitorkonfiguration basierend auf der neu erstellten Konfigurationsdatei erzwingen:

$ sudo wget -O /usr/local/sbin/update-monitor-position https://raw.githubusercontent.com/NicolasBernaerts/ubuntu-scripts/master/ubuntugnome/update-monitor-position
$ sudo chmod +x /usr/local/sbin/update-monitor-position
$ sudo wget -O /usr/share/applications/update-monitor-position.desktop https://raw.githubusercontent.com/NicolasBernaerts/ubuntu-scripts/master/ubuntugnome/update-monitor-position.desktop
$ sudo chmod +x /usr/share/applications/update-monitor-position.desktop

Zu diesem Zeitpunkt kann die Konfiguration der Monitore durch Starten der Anwendung zum Aktualisieren der Monitorposition festgelegt werden .

Wenn dies automatisch erfolgen soll, fügen Sie einfach eine Startanwendung mit den folgenden Einträgen hinzu:

  • Name: Update Monitors Position
  • Befehl: update-monitor-position 5
  • Kommentar: Force monitors position 5 seconds after login

Bildbeschreibung hier eingeben

Alessandro Cuttin
quelle
1
Großartig, das hat geholfen. Vielen Dank! Gibt es einen Fehlerbericht dafür?
Ondra Žižka
2
Ich denke das ist die beste Antwort. Ich habe das Skript so aktualisiert, dass es mehrere Profile unterstützt: gist.github.com/relet/66a965cdf728e5278fbf52c9d1433be0 - kopiere einfach deine Datei monitor.xml nach zB monitor-office.xml, wenn du "update-monitor-position office"
ausführen willst
vanvugt: "Verwenden wir den Fehler 1292398, da dies derjenige ist, den die meisten Benutzer finden." bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1292398
FlipMcF
5

Konfiguration für alle Monitore - Hot-Plug oder nicht - sollte in gespeichert werden $HOME/.config/monitors.xmldurch das xrandrfür Plugin gnome-settings-daemon, das ist das, was gilt eigentlich die Konfiguration , die Sie in der Monitore capplet machen.

Da es den Anschein hat, dass dies nicht bei allen richtig funktioniert, ist irgendwo eindeutig ein Fehler aufgetreten. Urgh.

RAOF
quelle
Ja, und wie Maco sagt, wenn ich den Computer ausschalte und wieder hochfahre, merkt er sich, nur nicht, wenn er bereits eingeschaltet ist.
Oscar Godson
4

Die ersten drei Schritte, um Ihren externen Monitor wie gewünscht anzuschließen, und der vierte Schritt, um die Einstellungen zu speichern.

  1. Schließen Sie Ihren externen Monitor an und überprüfen Sie die unterstützte Auflösung:

    xrandr -q
    
  2. Geben Sie den folgenden Befehl ein (dies deaktiviert Ihren Laptop-Monitor):

    xrandr --output LVDS1 --off --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal
    
  3. Wenn Sie möchten, dass sowohl der Laptop als auch der externe Computer aktiviert sind:

    xrandr --output LVDS1 --mode yyyyXzzzz --pos 0x0 --rotate normal --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal
    

    (yyyyXzzzz - Ihre Laptopauflösung.)

    Die obige Konfiguration klont Ihren Bildschirm. Spielen Sie mit der Option " --right-of/ --left-of", wenn Sie möchten.

  4. Wenn Sie diese Einstellungen während der Anmeldung benötigen, fügen Sie die Eincheckvorgänge hinzu /etc/X11/Xsession.d/45custom_xrandr-settings(möglicherweise müssen Sie eine erstellen).

    xrandr |grep VGA1 | grep " connected " | if [ $? -eq 0 ]; then xrandr --output LVDS1 --off --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal  #Change the way u need ; fi
    
thonixx
quelle
2

Im Büro habe ich 3 Monitore auf meinem Laptop und 2 zu Hause. Zwei der Büromonitore sind vertikal eingestellt, während andere Monitore normal ausgerichtet sind.

A. monitore.xml befindet sich in ~ / .config.

  1. Lösche es
  2. Stellen Sie das Display bei der Büroeinrichtung ein
  3. Benennen Sie die soeben erstellte Datei "monitore.xml" in "monitore-office.xml" um.

B. Holen Sie sich das Shell-Skript "update-monitor-position".

  1. Ändern Sie die "MONITOR_XML" -Definition "monitore.xml" in "monitore-office.xml".

  2. Speichern Sie es als "update-monitor-position-office" im ausführbaren Pfad (/ usr / local / sbin /).

  3. Tippen Sie auf die Berechtigung -> ausführbar von "Me".

C. Desktop-Verknüpfung "update-monitor-position.desktop" herunterladen

  1. Ändern Sie die "Exec" -Definition "Monitorposition aktualisieren" in
    "Monitorpositionsbüro aktualisieren".
  2. Speichere es als "update-monitor-position-office.desktop"
  3. Tippen Sie auf die Berechtigung -> ausführbar von "Me".

update-monitor-position-office.desktop:

[Desktop Entry]
Type=Application
Exec=update-monitor-position-office
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name[en_US]=Office Monitors Position
Name=Office Monitors Position
Comment[en_US]=Force monitors position from monitor-office.xml
Comment=Force monitors position from monitor-office.xml
Icon=display

Shell-Skript, Update-Monitor-Position-Office

#!/bin/bash
# -------------------------------------------------
#  Get monitors configuration from monitor.xml and apply it for current user session.
#  In case of multiple definitions in monitor.xml only first one is used.
#
#  See http://bernaerts.dyndns.org/linux/74-ubuntu/309-ubuntu-dual-display-monitor-position-lost
#  for instructions
#
#  Parameters :
#    $1 : waiting time in sec. before forcing configuration (optional)
#
#  Revision history :
#    19/04/2014, V1.0 - Creation by N. Bernaerts
#    10/07/2014, V1.1 - Wait 5 seconds for X to fully initialize
#    01/09/2014, V1.2 - Correct NULL file bug (thanks to Ivan Harmady) and handle rotation
#    07/10/2014, V1.3 - Add monitors size and rate handling (idea from jescalante)
#    08/10/2014, V1.4 - Handle primary display parameter
#    08/12/2014, V1.5 - Waiting time in seconds becomes a parameter
# -------------------------------------------------

# monitor.xml path
MONITOR_XML="$HOME/.config/monitors-office.xml"

# get number of declared monitors
NUM=$(xmllint --xpath 'count(//monitors/configuration['1']/output)' $MONITOR_XML)

# loop thru declared monitors to create the command line parameters
for (( i=1; i<=$NUM; i++)); do
  # get attributes of current monitor (name and x & y positions)
  NAME=$(xmllint --xpath 'string(//monitors/configuration['1']/output['$i']/@name)' $MONITOR_XML 2>/dev/null)
  POS_X=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/x/text()' $MONITOR_XML 2>/dev/null)
  POS_Y=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/y/text()' $MONITOR_XML 2>/dev/null)
  ROTATE=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/rotation/text()' $MONITOR_XML 2>/dev/null)
  WIDTH=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/width/text()' $MONITOR_XML 2>/dev/null)
  HEIGHT=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/height/text()' $MONITOR_XML 2>/dev/null)
  RATE=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/rate/text()' $MONITOR_XML 2>/dev/null)
  PRIMARY=$(xmllint --xpath '//monitors/configuration['1']/output['$i']/primary/text()' $MONITOR_XML 2>/dev/null)

  # if position is defined for current monitor, add its position and orientation to command line parameters
  [ -n "$POS_X" ] && PARAM_ARR=("${PARAM_ARR[@]}" "--output" "$NAME" "--pos" "${POS_X}x${POS_Y}" "--fbmm" "${WIDTH}x${HEIGHT}" "--rate" "$RATE" "--rotate" "$ROTATE")

  # if monitor is defined as primary, adds it to command line parameters
  [ "$PRIMARY" = "yes" ] && PARAM_ARR=("${PARAM_ARR[@]}" "--primary")
done

# if needed, wait for some seconds (for X to finish initialisation)
[ -n "$1" ] && sleep $1

# position all monitors
xrandr "${PARAM_ARR[@]}"
Jay
quelle
Hey @jey, du hast das im Januar 2018 beantwortet (während Nicolas Skript 4 Jahre alt ist ... ). Darf ich annehmen, dass dies unter einem aktuellen Ubuntu 16.x / 18.x noch funktioniert? - Und: Sie haben keine Annahme haben, wenn es unter Ubuntu- funktionieren würde MATE als auch? (Auf meinem System wird die
Datei "
Frank, meins sagt "16.04.5 LTS". Ein Punkt, nach "dist-upgrade", musste ich den Prozess durchlaufen und dann neu starten. Die "Systemeinstellungen -> Anzeigen" funktionieren auf meinem System komisch. Ich bin nicht in der Lage, 18.x zu versuchen. Vielen Dank,
jay
1

Ubuntu 12.04 merkt sich die Hot-Plug-Einstellungen des Monitors. Sie werden jedoch nur angewendet, wenn Sie das Applet Systemkonfiguration> Anzeigen erneut öffnen. Zumindest ist das bei mir der Fall, und das ist definitiv ein Fehler.

Jens
quelle
1

jays antwort hätte fast funktioniert, aber ich musste ein paar extra schritte machen. Ich würde dies als Kommentar zu seiner Antwort geben, aber ich habe nicht den Ruf.

In der Datei update-monitor-position-office:

  1. Meine Version von bash (4.3.48) beklagte sich über das Fehlen eines Leerzeichens nach "i ++" in Zeile 28.
  2. Meine Version von xrandr (1.5) hat die Option "--fbmm" in Zeile 40 nicht erkannt. Ich musste dies in "--mode" ändern. Dies war schwer zu diagnostizieren, da xrandr keinen Fehler verursachte, sondern nur den Befehl ausführte, ohne etwas zu tun.
Chris
quelle
1

Ich bevorzuge es, dieses Skript von einem Terminal aus auszuführen, da ich es nach dem Anmelden zuerst öffne.

Erstes Login mit der falschen Konfiguration - Monitore nicht korrekt platziert:

cd ~/.config
mv ~/.config/monitors.xml{,.bak}

Stellen Sie nun Ihre Monitore mit Systemeinstellungen ein, um eine neue ~/.config/monitors.xmlDatei mit den richtigen Einstellungen zu erstellen .

Kopieren Sie das feste Skript von Nicolas Bernaerts aus meinem Repo: https://raw.githubusercontent.com/alextomko/monitors/master/monitors, und legen Sie es in einem Pfad ab, der vom Terminal ausgeführt werden soll.

$ ls -l ~/bin
# if you don't have this directory then create it - do not be logged in as root here.

$ mkdir /home/$USER/bin

$ echo $PATH
# should show /home/username/bin if the dir existed or if you had to create.

$ wget -P ~/bin https://raw.githubusercontent.com/alextomko/monitors/master/monitors
$ chmod +x ~/bin/monitors

# Log out, lock, reboot or whatever it takes to make monitor settings lost for you and run the script.
$ monitors
Alex Tomko
quelle
0

Nein, es gibt keine Möglichkeit, Konfigurationen auf Hot-Plug-Monitoren zu speichern. Wenn Sie vor dem Start einstecken, sollte GNOME die Konfiguration bei jedem Start für jedes Gerät einzeln speichern (dh bei der Arbeit eine Verbindung zu Ihrem Monitor herstellen anstatt zu Hause).

maco
quelle
Verdammt. Ok. Gibt es eine Drittanbieteranwendung, die dies ausführen kann? Ich weiß, dass Mac OS X dies tut und Windows 7 (nach dem, was ich mit der geringen Erfahrung mit W7 versucht habe).
Oscar Godson
Die GNOME-Monitorkonfiguration sollte diese Informationen auch für Hotplug-Monitore speichern. Das tut es für mich.
RAOF
RAOF: Seltsam, da die Diskussion auf der Ubuntu-Entwickler-Mailingliste Anfang dieser Woche dies nicht sagte.
Maco
Die Konfiguration wird tatsächlich in gespeichert ~/.config/monitors.xml, aber beim Start nicht angewendet
Alessandro Cuttin