Xrandr

From ICO wiki
Jump to navigationJump to search

Autor

Nimi: Rene Rünt Rühm: A21 2013

Ülevaade

xrandr on ametlik Linuxi operatsioonisüsteemi käsurea konfiguratsioonitööriist RandR X Window System'i jaoks ning on senini kõige lihtsam ning võimsam tööriist mitme monitori süsteemi haldamiseks. Selle abil saab määrata millised väljundpordid on aktiivsed (nt LCD, VGA, DVI) ning ka ekraanil kuvatava pildi suurust, orientatsiooni, resolutsiooni või peegeldust. X serveri ümberseadistamine ei vaja arvuti taaskäivitamist ning muudatused viiakse väljundseadmetesse dünaamiliselt. [1]

Paigaldus

Paigalda xorg-xrandr pakett ametlikust repositooriumist.

Graafilised kasutajaliidesed

[2] [3]

xrandr tööriista jaoks on olemas mitu erinevat graafilist kasutajaliidest:

  • ARandR - Lihtsa ja mugava kasutajaliidesega.

http://christian.amsuess.com/tools/arandr/

  • LXrandR - Vaikimisi kasutatav kasutajaliides LXDE töökeskkonnas.

http://lxde.org/

  • Kephal - Vaikimisi kasutatav kasutajaliides KDE töökeskkonnas

http://kde.org/

  • Grandr - Sõbralik kasutajaliides ning palju võimalusi.

http://dekorte.homeip.net/download/grandr-applet/

  • Urandr - Võimalikult lihtsa ülesehitusega, vähekogenud kasutajate jaoks.

http://www.albertomilone.com/urandr.html

  • zarfy - Kuvab aktiivsed väljundseadmed visuaalselt ning võimaldab kuvada ekraanimälu interaktiivse kaardina.

http://sourceforge.net/projects/zarfy/


Sätete testimine

[4]

Ilma lisakäskudeta näitab xrandr süsteemis olevaid väljundseadmeid (LVDS, VGA-0, jne.) ning nende võimaldatavaid resolutsioone:

xrandr
Screen 0: minimum 320 x 200, current 1280 x 800, maximum 4096 x 4096
VGA1 disconnected (normal left inverted right x axis y axis)
LVDS1 connected 1280x800+0+0 inverted X and Y axis (normal left inverted right x axis y axis) 261mm x 163mm
   1280x800       59.8*+
   1024x768       60.0
   800x600        60.3     56.2
   640x480        59.9
DVI1 disconnected (normal left inverted right x axis y axis)
TV1 disconnected (normal left inverted right x axis y axis)

Tulemist näeme nelja väljundseadet VGA1, LVDS1, DVI1, TV1. Ühendatud on vaid sisemine paneel (LVDS1), mis toetab nelja erinevat lahutusvõimet 60 Hz ja ühte lahutusvõimet 56 Hz. Tärniga (*) tähistatud resolutsioon on hetkel aktiivne. Plussiga (+) tähistatud resolutsioon on soovitatav ning vaikimisi aktiviseeritav.

Xrandr võimaldab olemasolevate seadmete resolutsiooni muuta:

xrandr --output LVDS1 --mode 1024x768

Kui värskenduskiiruseid on antud monitoril mitu, saab neid muuta --rate käsuga (korraga või ükshaaval):

xrandr --output LVDS1 --mode 1024x768 --rate 75

Uue monitori lisamisel ei ole enam vaja X serverit taaskäivitada, vaid käsk --auto lülitab väljundi sisse ja määrab sellele ka vaikimisi soovitatava resolutsiooni:

xrandr --output LVDS --auto

Väljundi väljalülitamiseks saab kasutada käsku:

xrandr --output LVDS1 --off

Ühte käsuritta saab koondada ka mitu käsku, näiteks lülita välja LVDS ja lülita sisse HDMI-0 vaikimisi resolutsiooniga:

xrandr --output LVDS --off --output HDMI-0 --auto

Märkus

  • ei vaja juurkasutaja õigusi
  • xrandr’iga tehtavad muudatused kehtivad ainult aktiivse sessiooni ajal.
  • xrandr’i teiste võimalustega saab tutvuda man xrandr käsu abil.
  • Kuigi xrandr kasutab monitori EDID informatsiooni ning vigane riistvara võib edastada vale info ning osad vanemad Nvidia ja AMD graafikakaardid ei toeta xrandr’i, on katse-ekitus meetodil siiski võimalik luua toimiv seadistus

Seadistamine

[5] xrandr on RandR lisamooduli objekt ja ei oma iseseisvat konfiguratsioonifaili. Püsiva konfiguratsiooni saab salvestada näiteks::

  1. Staatilise konfiguratsiooni lisamiseks xorg.conf faili vaata Statically setup in xorg.conf
  2. Dünaamilise konfiguratsiooni saavutamiseks, tuleks xrandr käsk välja kutsuda iga kord kui X-server käivitub. See meetod käivitub aga arvuti alglaadimise ajal üsna hilja ning ei muuda Display Manager’is määratud resolutsiooni. Juhend seadistamiseks Dynamic setup with xrandr
  3. xrandr käsku väljakutsuvad skriptid saab siduda teatud sündmuste külge(näiteks välise monitori külge ühendamisel). #Skriptid’e peatükis on toodud selleks mõned näited.

Skriptid

Näide 1

[6] Skript võimaldab lülitust välimise monitori $EXT ja vaikimisi monitori vahel $IN, nii et korraga on aktiivne ainult üks monitor. Vaikimisi monitor $IN peab skripti käivitamise ajal olema ühendatud.

#!/bin/bash

IN="LVDS1"
EXT="VGA1"

if (xrandr | grep "$EXT disconnected"); then
    xrandr --output $EXT --off --output $IN --auto
else
    xrandr --output $IN --off --output $EXT --auto
fi

Näide 2

[7] Skript haldab ainult välimist monitori $EXT, vaikimisi monitor $IN on alati aktiivne.

Vaikimisi monitor $IN peab skripti käivitamise ajal olema ühendatud.

#!/bin/bash 

IN="LVDS1"
EXT="VGA1" 

if (xrandr | grep "$EXT disconnected"); then
    xrandr --output $IN --auto --output $EXT --off 
else
    xrandr --output $IN --auto --primary --output $EXT --auto --right-of $IN
fi

Näide 3

[8] Skript käib läbi kõik monitorid, selekteerib hetkel aktiivse, lülitab järjekorras järgmise tööle ning kõik teised välja:

# get info from xrandr
connectedOutputs=$(xrandr | grep " connected" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/")
activeOutput=$(xrandr | grep -e " connected [^(]" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/") 
connected=$(echo $connectedOutputs | wc -w)

# initialize variables
execute="xrandr "
default="xrandr "
i=1
switch=0

for display in $connectedOutputs
do
	# build default configuration 
	if [ $i -eq 1 ]
	then
		default=$default"--output $display --auto "
	else
		default=$default"--output $display --off "
	fi

	# build "switching" configuration
	if [ $switch -eq 1 ]
	then
		execute=$execute"--output $display --auto "
		switch=0
	else
		execute=$execute"--output $display --off "
	fi

	# check whether the next output should be switched on
	if [ $display = $activeOutput ]
	then
		switch=1
	fi

	i=$(( $i + 1 ))
done

# check if the default setup needs to be executed then run it
echo "Resulting Configuration:"
if [ -z "$(echo $execute | grep "auto")" ]
then
	echo "Command: $default"
	`$default`
else
	echo "Command: $execute"
	`$execute`
fi
echo -e "\n$(xrandr)"


Kokkuvõte

Mitme monitoride süsteemi haldamine on Linuxis olnud senimaani üsna piinarikas, kuid xrandr süsteemiga on loodetavasti see probleem lahendatud. Jah, Windowsi kasutajad võivad küll taaskordsest (vaikimisi pakutavast) käsurea utiliidist mitte eriti vaimustatud olla, kuid enamus Linuxi kasutajatest saavad sellega üsna lihtsasti hakkama. Antud wiki artikkel puudutas xrandr võimalusi vaid väga pealiskaudselt, tegelikkuses on tegu väga võimsa tööriistaga, mis võimaldab oma töökeskkonda väga täpselt ning oma vajadustele vastavalt seadistada. Julgeksin väita, et isegi rohkem/paremini kui Windowsi keskkkonnas.

Loe veel

Kasutatud allikad