Jak wyrównać dolne krawędzie dwóch monitorów za pomocą xrandr?

21

Mam dwa wyjścia, które chciałbym wykorzystać na moim laptopie:

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

Ustawiłem monitory tak:

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

Wszystko dobrze i dobrze, ale mój laptop jest znacznie niżej niż monitor zewnętrzny, a przy wyrównaniu górnych krawędzi ekranów przeskakiwanie z jednego ekranu na drugi jest raczej nieintuicyjne. Czy istnieje sposób, aby zamiast tego wyrównać dolne krawędzie? Myślałem, że mogę użyć --posflagi, aby to zrobić, ale próbowałem i nie zauważyłem żadnej różnicy (być może nie wiem, jak prawidłowo go używać).

elynnaie
źródło

Odpowiedzi:

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

Zasadniczo --pos określa pozycję lewego górnego rogu ekranu w wirtualnym obszarze ekranu. Ekran wirtualny to ekran obejmujący całe ekrany fizyczne. Jest to bardzo ogólny sposób określania pozycji ekranu.

Chcesz tę konfigurację:

(virtual screen coordinates)
     0       1366                 1366+1920

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

I potrzebujesz współrzędnych A i B, aby użyć w --posopcji. xmożna łatwo rozwiązać jako 1080 - 768 = 312, więc A ma wartość (1366,0), a B ma wartość (0,312).

Dlatego odpowiednimi opcjami --pos są --pos 1366x0 dla HDMI i --pos 0,312 dla LVDS. Nie musisz już określać wirtualnego rozmiaru ekranu, rozmiar jest zmieniany automatycznie.

Pamiętaj, że --posmożna go nadużyć, na przykład, aby utworzyć dziurę między dwoma ekranami lub utworzyć nakładanie się. Większość (wszystkich?) WM nie będzie w stanie sobie z tym poradzić.

EDYCJA: och, chcesz na odwrót, naprawiłem to.

BatchyX
źródło
Heh, wymyśliłem to tuż przed wysłaniem. Czy byłbyś w stanie wyjaśnić, jak działa flaga --pos?
elynnaie
Dzięki, to ma sens! Myślę jednak, że chcesz zastąpić 1600 przez 1080 w swoim przykładzie.
elynnaie
@denaje: Naprawiono.
BatchyX
2
Czy nie można tego zrobić w Xrandr bez użycia magicznych wartości? Chciałbym mieć skrypt, który działa niezależnie od rozdzielczości ekranu, który podłączam. Jeśli nie, to chyba mógłbym wyodrębnić wartości z wyjścia
xrandra
6

Oprócz doskonałej odpowiedzi @ BatchyX , alternatywną - i wygodniejszą IMO - opcją może być użycie ARandR (co oznacza „Another GUI XRandR”):

ARandR został zaprojektowany, aby zapewnić prosty wizualny interfejs dla XRandR. Względne pozycje monitorów są wyświetlane graficznie i można je zmieniać metodą „przeciągnij i upuść”.

Być może trzeba go najpierw zainstalować, ale jest on dostępny w repozytoriach większości dystrybucji . Oto jak wygląda dla mnie w LXDE, dla konfiguracji z jednym zewnętrznym monitorem podłączonym przez VGA powyżej i natywnym (rozmiar netbooka) pod nim:

Zrzut ekranu ARandR

waldyrious
źródło
3

Jeśli szukasz rozwiązania opartego na „przeciągnij i upuść”, mogę polecić ARandR .

Pozwala ustawić najważniejsze ustawienia XRandR, np. Pozycję ekranu i rozdzielczość, które następnie można zapisać w postaci skryptu powłoki, który wywołuje xrandrz odpowiednimi parametrami.

Florian Franzen
źródło