Comment aligner les bords inférieurs de deux moniteurs avec xrandr?

21

J'ai deux sorties que j'aimerais utiliser sur mon ordinateur portable:

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

J'ai installé mes moniteurs comme ceci:

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

Tout cela est bien beau, mais mon ordinateur portable se trouve considérablement plus bas que mon moniteur externe, et avec les bords supérieurs des écrans alignés, cela rend le saut d'un écran à l'autre plutôt intuitif. Existe-t-il un moyen d'aligner les bords inférieurs à la place? Je pensais pouvoir utiliser le --posdrapeau pour cela, mais j'ai essayé et je n'ai vu aucune différence (peut-être que je ne sais pas comment l'utiliser correctement).

elynnaie
la source

Réponses:

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

Fondamentalement, --pos spécifie la position du coin supérieur gauche de l'écran dans l'espace d'écran virtuel. L'écran virtuel est un écran qui couvre l'ensemble de vos écrans physiques. Il s'agit d'une façon très générique de spécifier les positions d'écran.

Vous voulez cette configuration:

(virtual screen coordinates)
     0       1366                 1366+1920

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

Et vous avez besoin des coordonnées de A et B à utiliser dans l' --posoption. xest facilement résolu comme 1080 - 768 = 312, donc A est à (1366,0) et B est à (0,312).

Par conséquent, les options --pos appropriées sont --pos 1366x0 pour HDMI et --pos 0,312 pour LVDS. Vous n'avez plus besoin de spécifier la taille de l'écran virtuel, il est redimensionné automatiquement.

Notez que cela --pospeut être abusé, par exemple pour créer un trou entre vos deux écrans, ou créer des chevauchements. La plupart (tous?) WM ne pourront pas gérer cela.

EDIT: oh, vous voulez l'inverse, corrigez cela.

BatchyX
la source
Hé, j'ai compris ça juste avant de poster. Pourriez-vous expliquer comment fonctionne l'indicateur --pos?
elynnaie
Merci, cela a beaucoup de sens! Je pense que vous voulez remplacer 1600 par 1080 dans votre exemple, cependant.
elynnaie
@denaje: corrigé.
BatchyX
2
N'y a-t-il aucun moyen de le faire dans xrandr sans utiliser de valeurs magiques? J'aimerais avoir un script qui fonctionne quelle que soit la résolution de l'écran que je branche. Sinon, je suppose que je pourrais extraire les valeurs de la sortie de xrandr, mais cela semble un peu fastidieux ...
Khaur
6

En plus de l'excellente réponse de @ BatchyX , une option alternative - et IMO plus pratique - pourrait utiliser ARandR (qui signifie "Another XRandR GUI"):

ARandR est conçu pour fournir une interface visuelle simple pour XRandR. Les positions relatives du moniteur sont représentées graphiquement et peuvent être modifiées par glisser-déposer.

Vous devrez peut-être l'installer d'abord, mais il est disponible dans la plupart des référentiels de distributions . Voici à quoi cela ressemble pour moi sur LXDE, pour une configuration avec un moniteur externe connecté via VGA, ci-dessus, et le moniteur natif (de taille netbook) en dessous:

Capture d'écran ARandR

waldyrious
la source
3

Si vous recherchez une solution basée sur une interface graphique par glisser-déposer, je peux recommander ARandR .

Il vous permet de définir les paramètres XRandR les plus importants, par exemple la position et la résolution de l'écran, qui peuvent ensuite être enregistrés sous la forme d'un script shell qui appelle xrandravec les paramètres correspondants.

Florian Franzen
la source