Konfiguracja podwójnego monitora z xrandr: rozszerzanie bez / z wyłączonym przewijaniem


11

To nie jest pytanie, ale raczej rozwiązanie problemu z Ubuntu, z którym się spotkałem.

Konfiguracja:
Biorąc pod uwagę ekran laptopa (np. „LVDS-1-0”) i drugi ekran (np. „DP-1”), przy czym drugi ekran jest ekranem głównym, a monitor znajduje się po prawej stronie ekranu głównego ( lub w lewo) jako rozszerzenie (patrz zdjęcie). Pierwszy ekran był zawsze rozszerzany wirtualnie, pomimo wyraźnych instrukcji xrandr, aby tego nie robić. Wchodząc w to, byłem w stanie uniknąć irytującego przewijania podczas przesuwania kursora myszy w prawo na głównym monitorze.

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

Następnie po prostu przechodzi z jednego monitora do drugiego bez przewijania ekranu.

Aktualizacja

Po przejściu na dyskretną kartę graficzną (NVIDIA jest dyskretna, a Intel jest zintegrowany z moim laptopem), kolejność wyjść musiała zostać zmieniona:

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

Dla większej wygody sprawiłem, że zmienne te mają większą elastyczność, ponieważ przełączanie między dyskretnymi i zintegrowanymi kartami graficznymi zmienia oznaczenie urządzeń wyjściowych (np. LVDS-1-0 vs LVDS-1).

Układ monitora

Odpowiedzi:


6

Spotkałem ten sam błąd. Twoje obejście nie zadziałało dla mnie. Twoja sztuczka jest po prostu wyzwalaczem, który sprawia, że ​​błąd nie wpada. Wkopałem się trochę i znalazłem miłego faceta z rozwiązaniem, które może pomóc innym tutaj.

Główny problem polega na tym, że napotkany tutaj błąd powoduje, że monitor przewijający się na drugi ma wirtualny ekran o zsumowanym rozmiarze obu ekranów. Dlatego rozwiązanie może wydawać się wyłączać tę dodatkową przestrzeń wirtualną na tym ekranie, aby pasowała do rozdzielczości monitorów. Zwykle odbywa się to za pomocą --panning AxBargumentu - używamy go do ustawiania wielkości przestrzeni wirtualnej.

Oto jak możesz to zrobić:

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

( \Dodano cięcie ukośne, aby użyć nowego wiersza w poleceniu.)

Niestety problemem jest to, że sterownik (to jest błąd) zdaje się zastępować panoramowanie, które ustawiliśmy (lub nie ustawiliśmy). Ale to, czego nie robi, to ustawienie innej części przesuwania: Obszar śledzenia! Obszar śledzenia to tak naprawdę ta część ekranu, w której kamera podąża za kursorem na tym monitorze.

tl; dr: Pomysł polega więc na ustawieniu panoramowania jako sterownika, ale ograniczeniu obszaru śledzenia.

Odbywa się to za pomocą następującego polecenia:

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

„Pierwsze cztery parametry [ panningargumentu] określają całkowity obszar panoramowania, następne cztery obszar śledzenia wskaźnika (domyślnie ten sam obszar). Ostatnie cztery parametry określają granicę i domyślnie 0.” [ man xrandr ]


Ostatnie polecenie wstawiam do skryptu powłoki, który wywołuję za pomocą klawiatury (podczas przełączania sprzętu wyświetlającego) i kilka sekund po zalogowaniu automatycznie.
Sebastian Barth

Ustawienie obszaru śledzenia było również kluczowe w mojej konfiguracji.
krlmlr

W końcu twoje rozwiązanie mi nie pomogło, ale znalazłem rozwiązanie, pozostawiając rezolucje w spokoju. Polecenie dotyczące xrandr --output HDMI1 --same-as Laptop1xrandr --output Laptop1 --auto --output HDMI1 --auto --left-of Laptop1
kopii
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.