¿Guardar la configuración del monitor?

16

¿Hay alguna manera de guardar la configuración de mi monitor? Tengo un monitor externo en el trabajo, pero todas las mañanas tengo que enchufarlo, reorganizar las ventanas para que estén una al lado de la otra. ¿Puedo guardar esto?

Oscar Godson
fuente

Respuestas:

7

En pocas palabras (es decir: haz lo que sugiere Nicolas Bernaerts , pero te perdono los detalles): la configuración de los monitores se guarda realmente ~/.config/monitors.xml, pero no se aplica al inicio / inicio de sesión.

Los pasos para superar esto son:

Inicie sesión con la configuración de monitores incorrecta.

Eliminar la configuración actual del monitor:

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

Use la aplicación Pantallas para organizar los monitores como desee (tengo un monitor lateral girado en sentido antihorario). organiza tus monitores como desees

Una vez que presiona Aplicar , monitors.xmlse crea un nuevo .

Ahora, descargue y ejecute el script y el iniciador que fuerzan la configuración del monitor en función del archivo de configuración recién creado:

$ 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

En este punto, la configuración de los monitores se puede solucionar iniciando la aplicación de actualización de la posición del monitor .

Si desea que esto sea automático, simplemente agregue una aplicación de inicio, con las siguientes entradas:

  • Nombre: Update Monitors Position
  • Mando: update-monitor-position 5
  • Comentario: Force monitors position 5 seconds after login

ingrese la descripción de la imagen aquí

Alessandro Cuttin
fuente
1
Genial, esto ayudó. ¡Gracias! ¿Hay un informe de error para esto?
Ondra Žižka
2
Creo que esta es la mejor respuesta. Actualicé el script para admitir múltiples perfiles: gist.github.com/relet/66a965cdf728e5278fbf52c9d1433be0 - simplemente copie sus monitor.xml a, por ejemplo, monitor-office.xml si desea ejecutar "update-monitor-position office"
relet
vanvugt: "En realidad, usemos el error 1292398 ya que es el que la mayoría de los usuarios están encontrando". bugs.launchpad.net/ubuntu/+source/gnome-shell/+bug/1292398
FlipMcF
5

La configuración para todos sus monitores, conectados en caliente o no, debe almacenarse en $HOME/.config/monitors.xmlel xrandrcomplemento para gnome-settings-daemon, que es lo que realmente aplica la configuración que realiza en el complemento de Monitores.

Como parece que esto no funciona correctamente para todos, claramente hay un error en alguna parte. Urgh

RAOF
fuente
Sí, y como dice Maco, si apago la computadora y la reinicio, lo recuerda, pero no cuando ya está encendida.
Oscar Godson
4

Los primeros tres pasos para conectar su monitor externo de la manera que desee y el cuarto es guardar la configuración.

  1. Conecte su monitor externo y verifique su resolución compatible:

    xrandr -q
    
  2. Dé el siguiente comando (Esto deshabilitará el monitor de su computadora portátil):

    xrandr --output LVDS1 --off --output TV1 --off --output VGA1 --mode 1280x1024 --pos 0x0 --rotate normal
    
  3. Si desea habilitar tanto la computadora portátil como la externa:

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

    (aaaaXzzzz: la resolución de su computadora portátil).

    La configuración anterior clonará su pantalla. Juega con la opción " --right-of/ --left-of" si quieres.

  4. Si necesita esta configuración al iniciar sesión, agregue las comprobaciones /etc/X11/Xsession.d/45custom_xrandr-settings(es posible que deba crear una).

    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
fuente
2

En la oficina, tengo 3 monitores en mi computadora portátil y 2 en casa. Dos de los monitores de oficina están colocados en vertical, mientras que otros monitores están en orientación normal.

A. monitor.xml está en ~ / .config.

  1. Bórralo
  2. Configurar la pantalla en la configuración de la oficina
  3. Cambie el nombre de "monitores.xml" recién creado a "monitores-office.xml".

B. Obtenga el script de shell, "update-monitor-position".

  1. Cambie la definición "MONITOR_XML", "monitor.xml" a "monitor-office.xml".

  2. Guárdelo como "update-monitor-position-office", en la ruta ejecutable (/ usr / local / sbin /).

  3. Toque el permiso -> ejecutable por "Yo".

C. Obtener acceso directo de escritorio, "update-monitor-position.desktop"

  1. Cambie la definición de "Exec", "update-monitor-position" a
    "update-monitor-position-office".
  2. Guárdelo como "update-monitor-position-office.desktop"
  3. Toque el permiso -> ejecutable por "Yo".

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 de 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[@]}"
arrendajo
fuente
Hola @jey, respondiste esto en enero de 2018. (mientras que el guión de Nicolas tiene 4 años ... ). ¿Puedo suponer que esto todavía funciona en Ubuntu 16.x / 18.x reciente? - Y: ¿tiene alguna suposición, si funcionaría también con Ubuntu- MATE ? (Sí veo dichos monitores.xml en mi sistema ...)
Frank Nocke
Frank, el mío dice "16.04.5 LTS". Un punto, después de "dist-upgrade", tuve que pasar por el proceso y luego reiniciar. La "Configuración del sistema -> Pantallas" funciona de forma divertida en mi sistema. No estoy en el modo para probar 18.x. Gracias
jay
1

Ubuntu 12.04 recuerda la configuración del monitor conectado en caliente. Pero solo se aplican cuando vuelve a abrir la configuración del sistema> Muestra el applet. Este es el caso para mí, al menos, y definitivamente es un error.

Jens
fuente
1

La respuesta de Jay casi me funcionó, pero necesitaba hacer un par de pasos adicionales. Haría un comentario sobre su respuesta, pero no tengo reputación.

En el archivo update-monitor-position-office:

  1. Mi versión de bash (4.3.48) se quejó de la falta de espacio después de "i ++" en la línea 28.
  2. Mi versión de xrandr (1.5) no reconocía la opción "--fbmm" en la línea 40. Tuve que cambiar esto a "--mode". Esto fue difícil de diagnosticar porque xrandr en realidad no me dio un error, simplemente ejecutó el comando sin hacer nada.
Chris
fuente
1

Prefiero ejecutar este script desde un terminal ya que abro uno primero después de iniciar sesión.

Primer inicio de sesión con la configuración incorrecta: los monitores no están colocados correctamente:

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

Ahora configure sus monitores con la configuración del sistema para crear un nuevo ~/.config/monitors.xmlarchivo con la configuración adecuada.

Copie el script fijo de Nicolas Bernaerts de mi repositorio: https://raw.githubusercontent.com/alextomko/monitors/master/monitors y póngalo en una ruta para que se ejecute desde la 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
fuente
0

No, no hay forma de guardar configuraciones en monitores conectados en caliente. Si se conecta antes del arranque, GNOME debe recordar la configuración de cada arranque por dispositivo (es decir, conectarse a su monitor en el trabajo versus el que está en casa).

maco
fuente
Maldición. Ok. ¿Existe una aplicación de terceros que pueda hacer esto? Sé que Mac OS X hace esto y Windows 7 (por lo que he probado con la poca experiencia que tengo con W7).
Oscar Godson
La configuración del monitor GNOME también debería guardar esta información para los monitores conectados en caliente. Lo hace por mi.
RAOF
RAOF: extraño, ya que la discusión sobre la lista de correo ubuntu-devel a principios de esta semana dijo que no.
maco
la configuración se guarda realmente ~/.config/monitors.xml, pero no se aplica al inicio
Alessandro Cuttin