RandR
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 kuitenkin 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 system-config-display-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. Useimmissa uusissa jakelupaketeissa useamman näytön tuki toteutetaan oletuksena RandRin avulla. Jotkin jakelut (kuten Fedora) ovat jopa kokonaan poistaneet Xineraman X-paketoinneistaan.
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ö).
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.