Configuración de monitor dual con xrandr: extensión sin / con desplazamiento deshabilitado

11

Esta no es una pregunta, sino una solución para un problema en Ubuntu, encontré.

Configuración:
Dada una pantalla de computadora portátil (por ejemplo, "LVDS-1-0") y una segunda pantalla (por ejemplo, "DP-1") con la segunda pantalla como su pantalla principal y su monitor a la derecha de su pantalla principal ( o izquierda) como una extensión (ver imagen). La primera pantalla siempre se extendió virtualmente a pesar de las instrucciones explícitas de xrandr de no hacer esto. Al ingresar esto, pude evitar el molesto desplazamiento al mover el cursor del mouse hacia la derecha en el monitor principal.

xrandr --output LVDS-1-0 --off
xrandr --output DP-1 --mode 1920x1080 --primary --pos 0x0 --output LVDS-1-0 --mode 1920x1080 --pos 1920x0

Después de esto, simplemente pasa de un monitor a otro sin desplazarse por la pantalla.

Actualizar

Después de cambiar a una tarjeta gráfica discreta (nvidia es discreta e intel está integrada para mi computadora portátil), el orden de las salidas necesitaba ser cambiado:

output_DP=$(xrandr | grep " connected" | grep DP | awk '{print $1}')
output_LVDS=$(xrandr | grep " connected" | grep LVDS | awk '{print $1}')

xrandr --output $output_LVDS --off
xrandr --output $output_LVDS --mode 1920x1080 --pos 1920x0 --output $output_DP --mode 1920x1080 --pos 0x0  --primary

Para mayor comodidad, hice que estas variables tengan más flexibilidad ya que cambiar entre tarjetas gráficas discretas e integradas cambia la designación de los dispositivos de salida (por ejemplo, LVDS-1-0 frente a LVDS-1).

Monitorear diseño

rocky_hiker
fuente

Respuestas:

6

Me encontré con el mismo error. Tu solución no funcionó para mí. Su truco es simplemente un desencadenante que hace que el error no se caiga. Investigué un poco y encontré a un buen tipo con una solución que también podría ayudar a otros aquí.

El principal problema es que el error que encontramos aquí hace que el monitor que se desplaza hacia el otro tenga una pantalla virtual con el tamaño de ambas pantallas sumadas. Por lo tanto, la solución podría parecer deshabilitar ese espacio virtual adicional en esa pantalla para adaptarse a la resolución de los monitores. Esto generalmente se hace con el --panning AxBargumento: lo usamos para establecer el tamaño del espacio virtual.

Así es como puedes hacerlo:

xrandr \
  --output LVDS-1-0 --mode 1920x1080 --panning 1920x1080 --pos 1920x0 \
  --output HDMI-0   --mode 1920x1080 --panning 1920x1080 --pos 0x0    --primary

(Se \agregó una barra para usar líneas nuevas en el comando)

Lamentablemente, el problema aquí es que el controlador (ese es el error) parece sobrescribir la panorámica que configuramos (o no configuramos). Pero lo que no hace es establecer otra parte de la panorámica: ¡el área de seguimiento! El área de seguimiento es en realidad esa parte de la pantalla que la cámara sigue al cursor en ese monitor.

tl; dr: Entonces, la idea es establecer la panorámica como el controlador pero restringir el área de seguimiento.

Esto se hace con el siguiente comando:

xrandr \
  --output LVDS-1-0 --mode 1920x1080 \
  --output HDMI-0   --mode 1920x1080 --panning 3840x1080+0+0/1920x1080+1920+0/0/0/0/0    --primary

"Los primeros cuatro parámetros [del panningargumento] especifican el área de panorámica total, los siguientes cuatro el área de seguimiento del puntero (que por defecto es la misma área). Los últimos cuatro parámetros especifican el borde y el valor predeterminado es 0." [ hombre xrandr ]

Sebastian Barth
fuente
Puse el último comando en un script de shell que llamo a través del teclado (al cambiar el hardware de la pantalla) y unos segundos después de iniciar sesión automáticamente.
Sebastian Barth
Establecer el área de seguimiento también fue crucial en mi configuración.
krlmlr el
Al final, su solución no me ayudó, pero encontré una solución dejando solo las resoluciones. Comando para espejo: xrandr --output HDMI1 --same-as Laptop1y para extendido:xrandr --output Laptop1 --auto --output HDMI1 --auto --left-of Laptop1
Edenshaw