Enregistrer les paramètres du moniteur?

16

Existe-t-il un moyen de sauvegarder les paramètres de mon moniteur? J'ai un moniteur externe au travail, mais chaque matin, je dois le brancher, réorganiser les fenêtres pour qu'elles soient côte à côte et superposées. Puis-je simplement enregistrer cela?

Oscar Godson
la source

Réponses:

7

Pour faire court (c'est-à-dire: faites ce que suggère Nicolas Bernaerts , mais je vous épargne les détails): la configuration des moniteurs est effectivement enregistrée ~/.config/monitors.xml, mais elle n'est pas appliquée au démarrage / connexion.

Les étapes pour y remédier sont les suivantes:

Connectez-vous avec la mauvaise configuration des moniteurs.

Supprimer la configuration actuelle du moniteur:

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

Utilisez l' application Affichages pour organiser les moniteurs comme vous le souhaitez (j'ai un moniteur latéral tourné dans le sens antihoraire). arrangez vos moniteurs comme vous le souhaitez

Une fois que vous appuyez sur Appliquer , un nouveau monitors.xmlest créé.

Maintenant, téléchargez et rendez exécutable le script et le lanceur qui forcent la configuration du moniteur en fonction du fichier de configuration nouvellement créé:

$ 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

À ce stade, la configuration des moniteurs peut être corrigée en lançant l' application de mise à jour de la position du moniteur .

Si vous souhaitez que cela soit automatique, ajoutez simplement une application de démarrage, avec les entrées suivantes:

  • Nom: Update Monitors Position
  • Commander: update-monitor-position 5
  • Commentaire: Force monitors position 5 seconds after login

entrez la description de l'image ici

Alessandro Cuttin
la source
1
Génial, cela a aidé. Merci! Existe-t-il un rapport de bug pour cela?
Ondra Žižka
2
Je pense que c'est la meilleure réponse. J'ai mis à jour le script pour prendre en charge plusieurs profils: gist.github.com/relet/66a965cdf728e5278fbf52c9d1433be0 - copiez simplement votre moniteurs.xml dans, par exemple, moniteurs-office.xml si vous voulez exécuter "update-monitor-position office"
relancez
vanvugt: "En fait, utilisons le bogue 1292398 car c'est celui que la plupart des utilisateurs trouvent." bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1292398
FlipMcF
5

La configuration de tous vos moniteurs - branchés à chaud ou non - doit être stockée $HOME/.config/monitors.xmlpar le xrandrplug - in gnome-settings-daemon, qui correspond en fait à la configuration que vous effectuez dans le capplet Moniteurs.

Comme il semble que cela ne fonctionne pas correctement pour tout le monde, il y a clairement un bug quelque part. Urgh.

RAOF
la source
Ouais, et comme le dit maco, si j'éteins l'ordinateur et le redémarre, il se souvient, mais pas quand il est déjà allumé.
Oscar Godson du
4

Les trois premières étapes pour connecter votre moniteur externe comme vous le souhaitez et la 4ème consiste à enregistrer les paramètres.

  1. Connectez votre moniteur externe et vérifiez sa résolution prise en charge:

    xrandr -q
    
  2. Exécutez la commande suivante (cela désactivera votre moniteur d'ordinateur portable):

    xrandr --output LVDS1 --off --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal
    
  3. Si vous voulez à la fois portable et externe activé:

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

    (yyyyXzzzz - la résolution de votre ordinateur portable.)

    La configuration ci-dessus clonera votre écran. Jouez avec l' option " --right-of/ --left-of" si vous le souhaitez.

  4. Si vous avez besoin de ces paramètres lors de la connexion, ajoutez les enregistrements /etc/X11/Xsession.d/45custom_xrandr-settings(vous devrez peut-être en créer un).

    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
la source
2

Au bureau, j'ai 3 moniteurs sur mon ordinateur portable et 2 à la maison. Deux des moniteurs de bureau sont réglés verticalement, tandis que les autres moniteurs sont dans une orientation normale.

A. moniteurs.xml est dans ~ / .config.

  1. Supprime-le
  2. Réglez l'affichage à la configuration du bureau
  3. Renommer vient de créer "moniteurs.xml" en "moniteurs-office.xml".

B. Obtenez le script shell, "update-monitor-position".

  1. Modifiez la définition de "MONITOR_XML", "moniteurs.xml" en "moniteurs-office.xml".

  2. Enregistrez-le sous "update-monitor-position-office", dans le chemin exécutable (/ usr / local / sbin /).

  3. Appuyez sur l'autorisation -> exécutable par "Moi".

C. Obtenez le raccourci sur le bureau, "update-monitor-position.desktop"

  1. Remplacez la définition "Exec", "update-monitor-position" par
    "update-monitor-position-office".
  2. Enregistrez-le sous "update-monitor-position-office.desktop"
  3. Appuyez sur l'autorisation -> exécutable par "Moi".

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

Script 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[@]}"
geai
la source
Hé @jey, tu y as répondu en janvier 2018. (alors que le script Nicolas a 4 ans ... ). Puis-je supposer que cela fonctionne toujours sous un Ubuntu 16.x / 18.x récent? - Et: avez-vous une hypothèse, si cela fonctionnerait également sous Ubuntu MATE ? (Je vois ce moniteurs.xml sur mon système ...)
Frank Nocke
Frank, le mien dit "16.04.5 LTS". Un point, après "dist-upgrade", j'ai dû passer par le processus, puis redémarrer. Les "Paramètres système -> Affichages" fonctionnent de façon amusante sur mon système. Je ne suis pas en mode pour essayer 18.x. Merci,
jay
1

Ubuntu 12.04 se souvient des paramètres du moniteur branché à chaud. Mais ils ne sont appliqués que lorsque vous rouvrez la configuration système> affiche l'applet. C'est le cas pour moi, au moins, et c'est définitivement un bug.

Jens
la source
1

La réponse de Jay a presque fonctionné pour moi, mais je devais faire quelques étapes supplémentaires. Je ferais un commentaire sur sa réponse mais je n'ai pas la réputation.

Dans le fichier update-monitor-position-office:

  1. Ma version de bash (4.3.48) se plaignait du manque d'espace après "i ++" sur la ligne 28.
  2. Ma version de xrandr (1.5) n'a pas reconnu l'option "--fbmm" sur la ligne 40. J'ai dû la changer en "--mode". C'était difficile à diagnostiquer car xrandr ne m'a pas réellement donné d'erreur, il a juste exécuté la commande sans rien faire.
Chris
la source
1

Je préfère exécuter ce script à partir d'un terminal car j'ouvre un premier après la connexion.

Première connexion avec une mauvaise configuration - les moniteurs ne sont pas placés correctement:

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

Réglez maintenant vos moniteurs avec les paramètres système pour créer un nouveau ~/.config/monitors.xmlfichier avec les paramètres appropriés.

Copiez le script fixe de Nicolas Bernaerts à partir de mon référentiel: https://raw.githubusercontent.com/alextomko/monitors/master/monitors et mettez-le dans un chemin à exécuter à partir du terminal.

$ 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
la source
0

Non, il n'y a aucun moyen de sauvegarder des configurations sur des moniteurs branchés à chaud. Si vous vous connectez avant le démarrage, GNOME doit se souvenir de la configuration sur chaque démarrage sur une base par périphérique (c'est-à-dire, la connexion à votre moniteur au travail par rapport à celui à la maison).

maco
la source
Merde, ok. Existe-t-il une application tierce qui peut le faire? Je sais que Mac OS X fait cela, et Windows 7 (d'après ce que j'ai essayé avec la petite expérience que j'ai avec W7).
Oscar Godson
La configuration du moniteur GNOME devrait également enregistrer ces informations pour les moniteurs branchés à chaud. Ça fait pour moi.
RAOF
RAOF: bizarre, car la discussion sur la liste de diffusion ubuntu-devel plus tôt cette semaine a dit que non.
maco
la configuration est effectivement enregistrée ~/.config/monitors.xml, mais elle n'est pas appliquée au démarrage
Alessandro Cuttin