Salvataggio delle impostazioni del monitor?


16

C'è un modo per salvare le impostazioni del mio monitor? Ho un monitor esterno al lavoro, ma ogni mattina devo collegarlo, riorganizzare le finestre dall'essere fianco a fianco per essere uno sopra l'altro. Posso solo salvarlo?

Risposte:


7

Per farla breve (ovvero: fai ciò che suggerisce Nicolas Bernaerts , ma ti risparmio i dettagli): la configurazione dei monitor è effettivamente salvata ~/.config/monitors.xml, ma non viene applicata all'avvio / accesso.

I passaggi per superare questo sono:

Accedi con la configurazione dei monitor sbagliata.

Rimuovi la configurazione corrente del monitor:

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

Utilizzare l' applicazione Display per disporre i monitor come desiderato (ho un monitor laterale ruotato in senso antiorario). organizza i tuoi monitor come desideri

Dopo aver premuto Applica , ne monitors.xmlviene creata una nuova .

Ora scarica e rendi eseguibile lo script e il programma di avvio che impongono la configurazione del monitor in base al file di configurazione appena creato:

$ 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

A questo punto, la configurazione dei monitor può essere riparata avviando l' applicazione di aggiornamento della posizione del monitor .

Se vuoi che sia automatico, aggiungi semplicemente un'applicazione di avvio, con le seguenti voci:

  • Nome: Update Monitors Position
  • Comando: update-monitor-position 5
  • Commento: Force monitors position 5 seconds after login

inserisci qui la descrizione dell'immagine


1
Ottimo, questo ha aiutato. Grazie! Esiste una segnalazione di bug per questo?
Ondra Žižka,


2
Penso che questa sia la risposta migliore. Ho aggiornato lo script per supportare più profili: gist.github.com/relet/66a965cdf728e5278fbf52c9d1433be0 - basta copiare i monitor.xml su ad esempio monitor-office.xml se si desidera eseguire "update-monitor-position office"
relet

vanvugt: "In realtà, usiamo il bug 1292398 poiché è quello che la maggior parte degli utenti sta trovando." bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1292398
FlipMcF

5

La configurazione per tutti i monitor - hot plug o no - deve essere archiviata $HOME/.config/monitors.xmldal xrandrplug-in per gnome-settings-daemon, che è ciò che applica effettivamente la configurazione effettuata nel capplet Monitor.

Dal momento che sembra che questo non funzioni correttamente per tutti, c'è chiaramente un bug da qualche parte. Urgh.


Sì, e come dice maco, se spengo il computer e lo riavvio, lo ricorda, ma non quando è già acceso.
Oscar Godson,

4

I primi tre passaggi per collegare il monitor esterno nel modo desiderato e il quarto è salvare le impostazioni.

  1. Collega il tuo monitor esterno e controlla la risoluzione supportata:

    xrandr -q
    
  2. Dai il seguente comando (Questo disabiliterà il monitor del tuo laptop):

    xrandr --output LVDS1 --off --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal
    
  3. Se vuoi abilitare sia il laptop che l'esterno:

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

    (yyyyXzzzz - risoluzione del laptop.)

    La configurazione sopra clonerà lo schermo. Gioca con l' opzione " --right-of/ --left-of" se vuoi.

  4. Se hai bisogno di queste impostazioni durante il login, aggiungi i check in /etc/X11/Xsession.d/45custom_xrandr-settings(Potrebbe essere necessario crearne uno).

    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
    

2

In ufficio, ho 3 monitor sul mio laptop e 2 a casa. Due monitor da ufficio sono impostati in verticale, mentre altri monitor sono orientati normalmente.

A. monitors.xml è in ~ / .config.

  1. Cancellalo
  2. Impostare il display durante l'installazione dell'ufficio
  3. Rinomina appena creato "monitors.xml" in "monitors-office.xml".

B. Ottieni lo script della shell, "update-monitor-position".

  1. Modificare la definizione "MONITOR_XML", "monitors.xml" in "monitors-office.xml".

  2. Salvalo come "update-monitor-position-office", nel percorso eseguibile (/ usr / local / sbin /).

  3. Tocca l'autorizzazione -> eseguibile da "Me".

C. Ottieni il collegamento sul desktop, "update-monitor-position.desktop"

  1. Modifica la definizione "Exec", "aggiorna posizione monitor" in
    "aggiorna posizione monitor".
  2. Salvalo come "update-monitor-position-office.desktop"
  3. Tocca l'autorizzazione -> eseguibile da "Me".

aggiornamento Monitor e posizione-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

Script di shell, 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[@]}"

Ehi @jey, hai risposto a questo nel gennaio 2018. (mentre la sceneggiatura di Nicolas ha 4 anni ... ). Posso supporre che funzioni ancora con un recente Ubuntu 16.x / 18.x? - E: hai qualche supposizione, se funzionasse anche con Ubuntu- MATE ? (Vedo detto monitors.xml sul mio sistema ...)
Frank Nocke il

Frank, il mio dice "16.04.5 LTS". Un punto, dopo "dist-upgrade", ho dovuto passare attraverso il processo e quindi riavviare. "Impostazioni di sistema -> Display" funziona in modo divertente sul mio sistema. Non sono in modalità per provare 18.x. Grazie,
jay

1

Ubuntu 12.04 ricorda le impostazioni del monitor hot plug. Ma vengono applicati solo quando si riapre la configurazione del sistema> Visualizza l'applet. Questo è il caso per me, almeno, e questo è definitivamente un bug.


1

la risposta di Jay ha quasi funzionato per me, ma dovevo fare un paio di passi in più. Lo farei un commento sulla sua risposta, ma non ho la reputazione.

Nel file update-monitor-position-office:

  1. La mia versione di bash (4.3.48) si lamentava della mancanza di uno spazio dopo "i ++" sulla linea 28.
  2. La mia versione di xrandr (1.5) non riconosceva l'opzione "--fbmm" sulla linea 40. Ho dovuto cambiarla in "--mode". Questo è stato difficile da diagnosticare perché xrandr in realtà non mi ha dato un errore, ha semplicemente eseguito il comando senza fare nulla.

1

Preferisco eseguire questo script da un terminale poiché ne apro uno prima del login.

Primo accesso con configurazione errata - monitor non posizionati correttamente:

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

Ora imposta i monitor con le impostazioni di sistema per creare un nuovo ~/.config/monitors.xmlfile con le impostazioni appropriate.

Copia lo script fisso di Nicolas Bernaerts dal mio repository: https://raw.githubusercontent.com/alextomko/monitors/master/monitors e inseriscilo in un percorso per l'esecuzione dal terminale.

$ 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

0

No, non è possibile salvare le configurazioni su monitor collegati a caldo. Se si collega prima dell'avvio, GNOME dovrebbe ricordare la configurazione su ogni avvio in base al dispositivo (vale a dire, connettersi al monitor sul posto di lavoro rispetto a quello di casa).


Accidenti, ok. Esiste un'applicazione di terze parti che può fare questo? So che Mac OS X lo fa e Windows 7 (da quello che ho provato con la piccola esperienza che ho con W7).
Oscar Godson,

La configurazione del monitor GNOME dovrebbe salvare queste informazioni anche per i monitor hotplugged. Lo fa per me.
RAOF,

RAOF: strano, dato che la discussione sulla mailing list ubuntu-devel all'inizio di questa settimana ha detto che non lo è.
maco,

la configurazione viene effettivamente salvata ~/.config/monitors.xml, ma non viene applicata all'avvio
Alessandro Cuttin il
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.