Ustawienia parametrów pracy monitorów za pomocą xrandr
Kategoria: Artykuły, etykiety: x.org, xrandr
Dodany: 2012-12-03 17:04
(zmodyfikowany: 2013-01-21 16:12)
Przez: yossarian
Wyświetleń: 48540
Xrandr to konsolowe narzędzie do konfiguracji rozszerzenia X.Org RandR, które pozwala na ustawiania X serwera bez jego restartowania. Potrafi automatycznie wykryć rozdzielczości, częstotliwości odświeżania, itp.), a także dynamicznie je zmieniać, ponadto m.in. umożliwia zmiany rozmiaru, obracanie i przenoszenie obrazu na inny monitor. Ustawienia te są jednak aktywne tylko w bieżącej sesji.
Xrandr, wbrew nazwie (primitive command line interface to RandR extension) to całkiem rozbudowane narzędzie do podstawowej manipulacji wyświetlanym obrazem na jednym lub kilku monitorach. Znajomość podstawowych opcji jest szczególnie przydatna w przypadku korzystania z laptopów, gdzie liczba monitorów i ich parametry nie są stałe, a sztywna konfiguracja przy użyciu pliku /etc/X11/xorg.conf jest niewygodna.
Podstawowe informacje
Uzyskanie informacji o podłączonych monitorach
Najlepiej zacząć od zapoznania się z rozpoznanymi i obsługiwanymi trybami pracy podłączonych monitorów:
xrandr -q
Przykładowy wynik:
xrandr
Screen 0: minimum 320 x 200, current 1366 x 768, maximum 8192 x 8192
LVDS1 connected 1366x768+0+0 (normal left inverted right x axis y axis) 344mm x 194mm
1366x768 60.0*+
1360x768 59.8 60.0
1024x768 60.0
800x600 60.3 56.2
640x480 59.9
VGA1 disconnected (normal left inverted right x axis y axis)
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
Można łatwo zauważyć, że nie jest podłączony żaden dodatkowy ekran, widać również, że obsługiwane są rozdzielczości od 640x480 do 1366x768. Maksymalna, łączna rozdzielczość wszystkich monitorów (ekran wirtualny) to 8192x8192. * oznacza aktywne ustawienia, + oznacza preferowane.
Aby uzyskać bardziej szczegółowe informacje:
xrandr --verbose
Oznaczenia monitorów
- LVDS: matryca laptopa
- TMDS: monitor podłączony przy użyciu Digital Visual Interface (niektóre karty Intela)
- DVI: monitor podłączony przy użyciu Digital Visual Interface
- VGA: monitor podłączony przy użyciu Video Graphics Array
- HDMI: monitor podłączony przy użyciu High-Definition Multimedia Interface
- DP: monitor podłączony przy użyciu DispalyPort
- TV: monitor podłączony przy użyciu Composite Video
- S-video: monitor podłączony przy użyciu S-Video
Podstawowa składnia
xrandr --output [output] --rate [rate] --mode [mode]
Gdzie:
[output] jest oznaczeniem monitora (np. LVDS, VGA, HDMI)
[rate] jest częstotliwością odświeżania monitora (opcjonalnie)
[mode] jest rozdzielczością monitora (opcjonalnie)
Najprostszy przykład:
xrandr --output VGA --rate 75 --mode 1024x768
Najczęściej wykonywane operacje
Dodawanie obsługiwanych, ale nierozpoznanych przez xrandr rozdzielczości ekranu
Sprawdzenie parametrów dla oczekiwanej rozdzielczości np. 1024x768:
cvt 1024 768
Otrzymany wynik:
# 1024x768 59.92 Hz (CVT 0.79M3) hsync: 47.82 kHz; pclk: 63.50 MHz
Modeline "1024x768_60.00" 63.50 1024 1072 1176 1328 768 771 775 798 -hsync +vsync
Do utworzenia nowej rozdzielczości użyta zostanie uzyskana wcześniej wartość Modeline:
xrandr --newmode "1024x768_60.00" 63.50 1024 1072 1176 1328 768 771 775 798 -hsync +vsync
Dodanie do listy obsługiwanych rozdzielczości:
xrandr --addmode VGA1 1024x768_60.00
Jeśli nie wyskoczą żadne komunikaty błędów, to można włączyć tę rozdzielczość:
xrandr --output VGA1 --mode 1024x768_60.00
Używanie nieobsługiwanych rozdzielczości ekranu (powiększanie obrazu)
Niestety niemożliwy jest żaden magiczny sposób na pokonanie fizycznych ograniczeń matrycy. Jest to rzeczywisty problem dla użytkowników netbooków, gdzie okna potrafią być większe w pionie niż dostępna rozdzielczość 1024x600 i tym samym nie mieszczą się one na ekranie.
W tym przypadku pomocny będzie xrandr z parametrami --panning i --scale:
xrandr --output LVDS1 --mode 1024x600 --panning 1024x768 --scale 1.0x1.28
Tym sposobem można uzyskać dodatkowe 168 pikseli w pionie. Niestety kosztem wyraźnego pogorszenia jakości obrazu.
Lepszym wyjściem będzie podobne ustawienie, jednak bez dodatkowego skalowania:
xrandr --output LVDS1 --mode 1024x600 --panning 1024x768 --scale 1.0x1.0
Dodatkowy obszar w tym przypadku jest niewidoczny, ale jest dostępny po przewijaniu ekranu poprzez przesunięcie kursora do dolnej lub górnej krawędzi monitora.
Powrót do standardowej wielkości ekranu:
xrandr --output LVDS1 --mode 1024x600 --panning 1024x600 --scale 1.0x1.0
Inne przykładowe polecenia
xrandr --output LVDS1 --off
Wyłączenie ekranu w laptopie. Przydatne gdy jakaś aplikacja nie chce działać poprawnie przy pracy na kilku monitorach.
xrandr --output VGA1 --primary
Ustawienie głównego monitora, gdy podłączonych jest ich kilka.
xrandr --output LVDS1 --rotate left
Obrót ekranu w lewo. Do wyboru: normal, left, right, inverted
xrandr --output VGA1 --right-of LVDS1
Ustawienie zewnętrznego monitora po prawej stronie głównego ekranu. Można wskazać położenie dodatkowego monitora przy użyciu parametrów:
--left-of|--right-of|--above|--below|--same-as (output)
Oczywiście to tylko najbardziej podstawowe przykłady użycia xrandr. Po zapoznaniu się z dokumentacją można przy użyciu xrandr dostosować ustawienia ekranów do swoich specyficznych potrzeb.
Przy korzystaniu z zamkniętych sterowników NVidii lub AMD lepiej użyć narzędzi dostarczonych wraz ze sterownikami.
Wszelkie uwagi i zauważone błędy proszę zgłaszać na PW.