RandR

Linux.fista
Versio hetkellä 20. joulukuuta 2011 kello 00.54 – tehnyt Pb (keskustelu | muokkaukset)
Siirry navigaatioon Siirry hakuun

RandR on X Window Systemin protokolla, joka mahdollistaa näyttöasetusten tekemisen dynaamisesti, ilman tarvetta X:n uudelleenkäynnistämiselle. Alun perin sitä käytettiin lähinnä näytön kuvan kääntämiseen ja kuvakoon muuttamiseen. X-palvelimen version 1.3 mukana julkaistun RandR 1.2:n myötä sen ominaisuusvalikoima kasvoi selvästi.

RandR 1.2:n avulla on mm mahdollista muuttaa näytön resoluutiota, virkistystaajuutta ja tarkuutta, automaattisesti asettaa ja tunnistaa näyttölaitteita, poistaa näyttöjä käytöstä sekä hallita monen näytön järjestelmiä. Asetusten teko RandRin avulla on mahdollista myös kokonaan ilman xorg.conf-asetustiedostoa.

RandRin asetuksia voidaan hallita joko xrandr-komentorivityökalulla tai erilaisilla graafisilla käyttöliittymillä. KDE:n näyttöasetustyökalu on versiosta 4.0 lähtien tukenut RandR 1.2:ta. Gnomeen sisältyy versiosta 2.24 lähtien niin ikään RandR 1.2:ta tukeva gnome-display-properties-työkalu.

Monen näytön järjestelmät

RandR 1.2:een sisältyvä monen näytön tuki korvaa X:n aikaisemman Xinerama-laajennoksen. Useimmissajakelupaketeissa useamman näytön tuki toteutetaan nykyään oletuksena RandRin avulla. Xineraman kehittäminen on lopetettu 2007.

RandRin avulla on mahdollista toteuttaa sekä tila, jossa näyttöjen kuvat ovat kopioita toisistaan että yhden suuren työpöydän malli. Näyttöjä on mahdollista lisätä ja poistaa käytöstä kesken ajon. Näyttöjen asetukset eivät myöskään ole riippuvaisia toisistaan, vaan niillä voi olla esimerkiksi eri värimääräasetus.

Käytettäessä yhtenäisen työpöydän mallia näyttöjen sijainnit voidaan vapaasti määritellä koordinaateilla tai suhteellisilla oikealla puolella, yläpuolella ym määreillä. Näyttöjen sijainnit voivat myös olla osittain päällekkäisiä, jolloin tietty osa työpöydästä näkyy molemmilla näytöillä.

Graafisissa käyttöliittymissä näyttöjen koordinaatit määritellään yleensä vetämällä niitä kuvaavia suorakulmioita hiirellä.

Xrandr

Xrandr on X:n mukana tuleva komentoriviohjelma RandRin hallintaan.

Näyttölaitteiden tietojen tarkastelu

Komennolla xrandr (tai xrandr -q) saadaan tietoja koneeseen liitetyistä näytöistä:

Screen 0: minimum 320 x 200, current 2304 x 1024, maximum 2304 x 1024
VGA-0 connected 1280x1024+0+0 (normal left inverted right x axis y axis) 376mm x 301mm
   1280x1024      60.0*+   75.0     59.9
   1152x864       74.8
   1024x768       75.1     60.0
   800x600        75.0     60.3
   640x480        75.0     60.0
   720x400        70.1
DVI-0 disconnected (normal left inverted right x axis y axis)
LVDS connected 1024x768+1280+0 (normal left inverted right x axis y axis) 0mm x 0mm
   1024x768       60.0*+   60.0
   800x600        60.3
   640x480        59.9
S-video disconnected (normal left inverted right x axis y axis)

Ensimmäisellä rivillä näytetään nykyisen screenin (screen ei tässä viittaa fyysiseen näyttöön, vaan X:n screen-käsitteeseen) tukema minimiresoluutio, nykyinen resoluutio sekä maksimiresoluutio.

VGA-0 tarkoittaa tässä ensimmäisessä VGA-portissa kiinniolevaa näyttölaitetta, DVI-0 ensimmäisessä DVI-portissa olevaa, LVDS kannettavan sisäistä näyttöä ja S-video TV-out-liitäntää.

Liitäntöjen nimet eivät ole standardisoituja, vaan eri näytönohjainajurit käyttävät niistä omia nimityksiään. Esimerkiksi LVDS voi olla myös PANEL, VGA-0 Analog-0, DVI-0 Digital-0 ja S-video TV, TMDS-1 tai TV_7PIN_DIN.

Liitetyn näytön rivin (connected) alapuolella näytetään sen tukemat resoluutiot ja virkistystaajuudet. Suositeltu (yleensä oletuksena toimiva) resoluutio ja virkistystaajuus on merkitty +-merkillä.

Yleisimpien asetusten tekeminen

Asetetaan näyttölaitteen VGA-0 resoluutioksi 1024x768 ja virkistystaajuudeksi 85.0 Hz:

xrandr --output VGA-0 --mode 1024x768 --rate 85.0

Käännetään näyttölaitteen DVI-0 kuva osoittamaan vasemmalle. Valitsin --rotate tukee määreitä normal (tavallinen), left (vasen), right (oikea) ja inverted (ylösalaisin).

xrandr --output DVI-0 --rotate left

Peilataan näyttölaitteen TV kuva pysty- ja vaakasuunnassa. Valitsin --reflect tukee määreitä x (vaakasuunnassa), y (pystysuunnassa) ja xy (pysty- ja vaakasuunnassa).

xrandr --output TV --reflect xy

Otetaan kaikki järjestelmään liitetyt näytöt käyttöön ja etsitään niille oletusasetukset:

xrandr --auto

Etsitään vain oletusasetukset koskematta näyttöjen päälläolotilaan:

xrandr --preferred

Otetaan näyttö LVDS pois käytöstä (varmista toki ensin, ettei tämä ole ainoa päälläoleva näyttö):

xrandr --output LVDS --off

Tietoja muista valitsimista saa komennolla man xrandr.

Monen näytön tuki

Sama kuva kaikissa näytöissä

Jos tarkoituksena on vain saada sama kuva näkymään kaikissa näyttölaitteissa, riittää yleensä komennon

xrandr --auto

antaminen, mikä etsii ja tunnistaa käytössä olevat näytöt sekä määrittää ne näyttämään samaa kuvaa. Koska tämä tapahtuu oletuksena aina X:n käynnistyessä, ei xorg.confissa tarvitse välttämättä mainita näytöistä mitään. Jos automaattiasetukset myös muuten tyydyttävät, voi xorg.conf hyvin jopa puuttua kokonaan.

Kannattaa kuitenkin ottaa huomioon, että monet näytönohjaimet eivät tue videokuvan näyttämistä usealla näytöllä samanaikaisesti. Näyttöä, jolla videokuva näkyy, voi tarvittaessa muuttaa komennolla

xvattr -a XV_CRTC -v 1

missä 1 on näytön numero. 0 tarkoittaa ensimmäistä näyttöä, 1 toista, 2 kolmatta ym. Xvattr-työkalu löytyy useimmissa jakeluissa paketista xvattr.

Yhtenäinen työpöytä

Jos tavoitteena on yhtenäisen työpöydän aikaansaaminen (ikkunoita voidaan siirrellä näytöltä toiselle), muuttuu asia astetta monimutkaisemmaksi. Komennon xrandr tulosteen ensimmäisellä rivillä näkyvän screenin maksimaalisen koon on näet oltava niin iso, että kaikki näyttölaitteet resoluutioineen saadaan soviteltua sen sisään.

Mikäli screenin koko riittää, voidaan yhtenäinen työpöytä toteuttaa xrandr-työkalulla koskematta xorg.confiin.

Esimerkiksi seuraavassa yhtenäinen työpöytä luotaisiin sijoittamalla näyttö DVI-2 näytön LVDS yläpuolelle (valitsin --above).

xrandr --output DVI-2 --above LVDS

Sama koordinaatteja käyttämällä, mikäli molempien näyttöjen resoluutioiden oletetaan olevan 1024x768.

xrandr --output DVI-2 --pos 0x0
xrandr --output LVDS --pos 1024x0

Valitsinten --above ja --pos lisäksi sijoittelussa voidaan hyödyntää valitsimia --below (alapuolella), --left-of (vasemmalla), --right-of (oikealla) ja --same-as (sama kuin jokin toinen näyttö).

 
Kaaviokuva 2304x1024-kokoisesta screenistä ja sen sisään sijoitelluista näytöistä. Ikkunointiohjelmat eivät (oikein toimiessaan) sijoita näyttöjä vaaleankeltaisella merkittyyn hukkatilaan.

Varsinaisen screenin koko ei kuitenkaan usein riitä haluttuun näyttöasetteluun. Tällöin screenin koosta on tehtävä virtuaalinen. Tämä ei ainakaan toistaiseksi onnistu komentoriviltä, vaan vaatii xorg.confin muokkaamista ja X:n uudelleenkäynnistyksen.

Suurempi virtuaalinen screen vaatii aina lisää muistia. Näytönohjaimet eivät välttämättä myöskään tue DRI:tä tiettyä arvoa suuremmilla screeneillä (esimerkiksi Intelin i945-piirillä ja sitä vanhemmilla 2048x2048).

Oletetaan, että kannettavan tietokoneen sisäisen näytön (LVDS, resoluutio 1024x768) oikealle puolelle halutaan sijoittaa VGA-liitäntäinen ulkoinen näyttö (VGA-0, resoluutio 1280x1024). Esimerkkinäytönohjaimen sallima maksimaalinen screenin koko on kuitenkin vain 1280x1200, vaikka ylläkuvattu asettelu vaatii 2304x1024:ää (1024+1280=2304).

Screenistä pitää siis tässä tapauksessa tehdä virtuaalinen. Xorg.confin osion Screen alaosioon Display täytyy lisätä rivi

Virtual         2304 1024

jolloin virtuaalisen screenin kooksi tulee 2304x1024. Koko osio näyttäisi siis esimerkiksi seuraavalta

Section "Screen"
    Identifier      "oletus-screen"
    Device          "naytonohjain"
    DefaultDepth    24
    SubSection "Display"
        Depth           24
        Virtual         2304 1024
    EndSubSection
EndSection

Näytönohjainlaitteeksi on tässä määritelty naytonohjain, värimääräksi 24 bittiä ja screenin tunnisteeksi oletus-screen.

Jos näyttöjen asettelulle halutaan tehdä oletusasetus xorg.confiin, pitää Monitor-osioista tehdä seuraavan kaltaiset:

Section "Monitor"
    Identifier      "ulkoinen VGA"
    Option          "RightOf" "kannettavan LCD"
EndSection 

Section "Monitor"
    Identifier      "kannettavan LCD"
EndSection

Monitor-osiot sidotaan vuorostaan fyysisiin näyttöihin Device-kappaleessa seuraavasti:

Section "Device"
    Identifier      "naytonohjain"
    Driver          "ati"
    Option          "Monitor-VGA-0" "ulkoinen VGA"
    Option          "Monitor-LVDS"  "kannettavan LCD"
EndSection

Näytönohjaimen ajuriksi on tässä määritelty ati. Option-kenttien ensimmäinen kenttä koostuu sanasta Monitor- sekä fyysisen näytön tunnisteesta.

Koska esimerkkitapauksessa on kyseessä kannettava jossa on vain yksi näytönohjain (usealla portilla), ei Device-kappaleita tarvitse olla useampia eikä niiden tarvitse sisältää näytönohjaimen porttiosoitetta määrittävää BusID-riviä.

Jos oletetaan, että käytössä on suomalainen näppäimistö kbd-ajurilla eikä muille asetuksille ole tarvetta, voisi koko xorg.conf tällöin näyttää esimerkiksi seuraavalta:

Section "InputDevice"
        Identifier      "nappaimisto"
        Driver          "kbd"
        Option          "XkbModel"      "pc105"
        Option          "XkbLayout"     "fi"
EndSection 

Section "Monitor"
    Identifier      "ulkoinen VGA"
    Option          "RightOf" "kannettavan LCD"
EndSection 

Section "Monitor"
    Identifier      "kannettavan LCD"
EndSection

Section "Device"
    Identifier      "naytonohjain"
    Driver          "ati"
    Option          "Monitor-VGA-0" "ulkoinen VGA"
    Option          "Monitor-LVDS"  "kannettavan LCD"
EndSection

Section "Screen"
    Identifier      "oletus-screen"
    Device          "naytonohjain"
    DefaultDepth    24
    SubSection "Display"
        Depth           24
        Virtual         2304 1024
    EndSubSection
EndSection

Section "ServerLayout"
        Identifier      "oletusasettelu"
        Screen          "oletus-screen"
        InputDevice     "nappaimisto"
EndSection

Vaikka näyttöjen asettelu olisi määritelty xorg.confissa, voidaan sitä silti screenin koon puitteissa mukauttaa xrandr-työkalulla. Näyttöjä voidaan tarvittaessa poistaa käytöstä --off--valitsimella, jolloin ikkunointiohjelman pitäisi automaattisesti sopeutua uuteen tilanteeseen.

RandR 1.3

X.orgin version 1.6 mukana on julkaistu RandR-protokollan versio 1.3. Siinä on lisätty mm. tuki oletusnäytön asettamiselle (monen näytön järjestelmissä) sekä ns. panning-tilalle, jossa X-näytön koko asetetaan fyysistä näyttöä suuremmaksi ja fyysisen näytön kuvaa liikutellaan virtuaalisen näytön sisällä hiirellä.

Oletusnäyttö voidaan asettaa xrandr-työkalun valitsimilla --primary ja --noprimary sekä panning valitsimella --panning.

Katso myös

Aiheesta muualla