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

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.