¿Cómo alineo los bordes inferiores de dos monitores con xrandr?

21

Tengo dos salidas que me gustaría usar en mi computadora portátil:

  • LVDS1 - 1366 × 768
  • HDMI1 - 1920 × 1080

Configuré mis monitores así:

xrandr --output LVDS1 --auto --output HDMI1 --auto --right-of LVDS1

Todo esto está muy bien, pero mi computadora portátil se encuentra considerablemente más baja que mi monitor externo, y con los bordes superiores de las pantallas alineados, hace que el salto de una pantalla a la otra sea poco intuitivo. ¿Hay alguna forma de alinear los bordes inferiores? Pensé que podría usar la --posbandera para hacer esto, pero lo he intentado y no he visto ninguna diferencia (quizás no sé cómo usarlo correctamente).

elynnaie
fuente

Respuestas:

38
 xrandr --output LVDS1 --auto --pos 0x312 --output HDMI1 --auto --pos 1366x0

Básicamente, --pos especifica la posición de la esquina superior izquierda de la pantalla en el espacio de la pantalla virtual. La pantalla virtual es una pantalla que abarca todas sus pantallas físicas. Esta es una forma muy genérica de especificar las posiciones de la pantalla.

Desea esta configuración:

(virtual screen coordinates)
     0       1366                 1366+1920

   0           A-----------------------
               |                      |
               |                      |
               |                      |
  x? B---------|         HDMI         |
     |         |                      |
     |  LVDS   |       1920x1080      |
     |1366x768 |                      |
1080 ----------------------------------

Y necesita las coordenadas de A y B para usar en la --posopción. xse resuelve fácilmente como 1080 - 768 = 312, por lo que A está en (1366,0) y B está en (0,312).

Por lo tanto, las opciones apropiadas de --pos son --pos 1366x0 para HDMI y --pos 0,312 para LVDS. No tiene que especificar el tamaño de la pantalla virtual (ya), se redimensiona automáticamente.

Tenga en cuenta que --posse puede abusar, por ejemplo, para crear un agujero entre sus dos pantallas, o crear superposición. La mayoría (¿todos?) WM no podrá manejar eso.

EDITAR: oh, quieres lo contrario, arregló eso.

BatchyX
fuente
Je, descubrí esto justo antes de publicar. ¿Serías capaz de explicar cómo funciona la bandera --pos?
elynnaie
Gracias, esto tiene mucho sentido! Sin embargo, creo que desea reemplazar 1600 con 1080 en su ejemplo.
elynnaie
@denaje: fijo.
BatchyX
2
¿No hay forma de hacerlo dentro de xrandr sin usar valores mágicos? Me gustaría tener un script que funcione independientemente de la resolución de la pantalla que conecte. Si no, supongo que podría extraer los valores de la salida de xrandr, pero eso suena un poco tedioso ...
Khaur
6

Además de la excelente respuesta de @ BatchyX , una opción alternativa, e IMO más conveniente, podría ser usar ARandR (que significa "Otra GUI XRandR"):

ARandR está diseñado para proporcionar una interfaz visual simple para XRandR. Las posiciones relativas del monitor se muestran gráficamente y se pueden cambiar arrastrando y soltando.

Es posible que deba instalarlo primero, pero está disponible en la mayoría de los repositorios de las distribuciones . Así es como me parece en LXDE, para una configuración con un monitor externo conectado a través de VGA, arriba, y el monitor nativo (tamaño netbook) debajo:

Captura de pantalla de ARandR

waldyrious
fuente
3

Si está buscando una solución basada en GUI de arrastrar y soltar, puedo recomendar ARandR .

Le permite establecer la configuración XRandR más importante, por ejemplo, la posición y la resolución de la pantalla, que luego se puede guardar en forma de un script de shell que llama xrandrcon los parámetros correspondientes.

Florian Franzen
fuente