Feb 262011
 

randrHo comprato un nuovo monitor a casa ed aggiunto un secondo monitor in ufficio, quindi ho avuto un bel po da fare con i setup grafici dei miei Linux.
Cosa si utilizza in questi casi ? Il mio tool preferito per tutte queste operazioni è sicuramente xrandr.

In particolare mi sono abituato ad usarlo da linea di comando sul terminale e dopo aver fatto alcuni test utilizzare la sintassi trovata allo startup dell’ambiente grafico.

In questo articolo vedremo qualche caso d’uso comune.

Da Wikipedia:

X Resize, Rotate and Reflect Extension (RandR) consente ai client di modificare dinamicamente gli schermi X, in modo da ridimensionare, ruotare e riflettere la finestra principale di uno schermo. Il progetto iniziale X11 non ha previsto la necessità di un ridimensionamento dinamico ed era necessario riavviare il server X per realizzare i cambiamenti. Tuttavia, cambiare la risoluzione dello schermo al volo senza modificare le dimensioni del desktop era disponibile con XFree86 fin dall’inizio. Il framework di estensioni RandR ha portato la capacità di cambiare le caratteristiche di visualizzazione senza riavviare la sessione di X. Il framework di estensione permette ai computer portatili e palmari di cambiare la loro dimensione dello schermo per guidare monitor esterni a risoluzioni diverse degli schermi integrati con cui sono costruiti.

Se il proprio ambiente desktop non fornisce uno strumento grafico per interfacciarsi con questa funzionalità, il comando xrandr a riga di comando può essere utilizzato.

La maggior parte delle distribuzioni Linux hanno nel loro repository il pacchetto xrandr, quindi installatelo con il vostro gestore di pacchetti, per ubuntu: aptitude install libxrandr2

Versione

Come prima cosa verificate che versione avete con il comando:

#xrandr -v
 
xrandr program version       1.3.3
Server reports RandR version 1.3

Nei miei esempi io utilizzerò sempre la versione 1.3, alcune funzionalità potrebbero non andare su versioni precedenti.

Query

Per sapere quali monitor sono collegati è possibile interrogare con il seguente comando:

#xrandr -q
 
Screen 0: minimum 320 x 200, current 1440 x 900, maximum 4096 x 4096
VGA-0 connected 1440x900+0+0 (normal left inverted right x axis y axis) 476mm x 268mm
   1920x1080      60.0 +
   1600x1200      65.0     60.0
   1680x1050      69.9     60.0
   1600x1024      60.2
   1400x1050      74.8     70.0     60.0     60.0
   1280x1024      75.0     60.0
   1440x900       75.0*    59.9
   1280x960       60.0
   1360x768       60.0     59.8
   1280x800       74.9     59.8
   1152x864       75.0     75.0     70.0     60.0
   1280x768       74.9     59.9
   1024x768       75.1     75.0     70.1     60.0
   832x624        74.6
   800x600        72.2     75.0     60.3     56.2
   848x480        60.0
   640x480        72.8     75.0     72.8     75.0     66.7     60.0     59.9     59.9
   720x400        70.1
DVI-0 connected 1440x900+0+0 (normal left inverted right x axis y axis) 476mm x 268mm
   1920x1080      60.0 +
   1600x1200      65.0     60.0
   1680x1050      69.9     60.0
   1600x1024      60.2
   1400x1050      74.8     70.0     60.0     60.0
   1280x1024      75.0     60.0
   1440x900       75.0*    59.9
   1280x960       60.0
   1360x768       60.0     59.8
   1280x800       74.9     59.8
   1152x864       75.0     75.0     70.0     60.0
   1280x768       74.9     59.9
   1024x768       75.1     75.0     70.1     60.0
   832x624        74.6
   800x600        72.2     75.0     60.3     56.2
   848x480        60.0
   640x480        72.8     75.0     72.8     75.0     66.7     60.0     59.9     59.9
   720x400        70.1
LVDS connected (normal left inverted right x axis y axis)
   1024x768       60.0 +   60.0
   1360x768       59.8
   800x600        60.3     59.9
   848x480        59.7
   720x480        59.7
   640x480        59.9     59.4
S-video disconnected (normal left inverted right x axis y axis)

Nel mio output si può vedere che ho collegato sia VGA e DVI (sto ancora facendo test con il mio nuovo monitor), mentre LVDS (lo schermo del computer portatile) è spento e l’uscita S-video non è collegata.

Inoltre si può vedere che con questo semplice comando si possono vedere tutte le risoluzione e frequenza di aggiornamento supportate dagli schermi.

Uso base con gli schermi

L’uso base per dare comandi con gli schermi è xrandr --output SCREEN COMANDO,quindi per esempio per spegnere lo schermo VGA è possibile utilizzare:

xrandr --output VGA-0 --off

La disattivazione di una uscita è utile a volte, per esempio al lavoro ho uno schermo con risoluzione 1600×1200, mentre il mio schermo del laptop è 1680×1050, io uso il portatile in una docking station con lo schermo chiuso così spegnere l’uscita LVDS aiuta ad ottenere una buona risoluzione sullo schermo.

Cambiare la risoluzione di uno schermo

Per cambiare la risoluzione dello schermo è possibile utilizzare xrandr con l’opzione –mode:

xrandr --output DVI-0 --mode 1440x900 --refresh 75

Con questo comando cambierete la risoluzione dello schermo DVI a 1440×900 ed imposterete la frequenza di aggiornamento a 75.

Clonazione di uno schermo

Ipotizzate di attaccare una uscita VGA al vostro portatile e di voler clonare il vostro schermo del portatile, ovvero tutto quello che appare sullo schermo principale sarà mostrato anche sullo schermo esterno, niente di più facile con xrandr:

 xrandr --output LVDS --auto --output VGA --auto --same-as LVDS

In generale usate $ xrandr -q per scoprire i nomi di uscita appropriati per la vostra configurazione. L’opzione -auto sarà la risoluzione desiderata per ogni uscita, questa risoluzione è contrassegnata con un più (+) nella lista mostrata $ xrandr -q ed è normalmente la migliore risoluzione disponibile.

2 monitor affiancati

E’ possibile creare un desktop virtuale mettendo 2 schermi fianco a fianco, è possibile impostare le posioni degli schermi come –left-of, –right-of, –above e –below. Supponendo che le dimensioni del display LVDS siano 1024×768 e 1200×1600 per il VGA è possibile utilizzare uno di questi 2 comandi:

$  xrandr --output LVDS --auto --output VGA --auto --right-of LVDS
and
$  xrandr --output LVDS --mode 1024x768 --pos 0x0 --output VGA  --mode 1600x1200 --pos 1024x0

Questi comandi danno lo stesso risultato, quindi suggerisco di imparare ad utilizzare il primo in quanto è più facile da ricordare ed utilizzare.

Automazione al login

È possibile automatizzare le operazioni con xrandr mettendole nella directory /etc/X11/Xsession.d/, così per esempio si potrebbe aggiungere un file: /etc/X11/Xsession.d/45custom_xrandr-settings

# If an external monitor is connected, place it with xrandr
 
# External output may be "VGA" or "VGA-0" or "DVI-0" or "TMDS-1"
EXTERNAL_OUTPUT="VGA"
INTERNAL_OUTPUT="LVDS"
# EXTERNAL_LOCATION may be one of: left, right, above, or below
EXTERNAL_LOCATION="right"
 
case "$EXTERNAL_LOCATION" in
       left|LEFT)
               EXTERNAL_LOCATION="--left-of $INTERNAL_OUTPUT"
               ;;
       right|RIGHT)
               EXTERNAL_LOCATION="--right-of $INTERNAL_OUTPUT"
               ;;
       top|TOP|above|ABOVE)
               EXTERNAL_LOCATION="--above $INTERNAL_OUTPUT"
               ;;
       bottom|BOTTOM|below|BELOW)
               EXTERNAL_LOCATION="--below $INTERNAL_OUTPUT"
               ;;
       *)
               EXTERNAL_LOCATION="--left-of $INTERNAL_OUTPUT"
               ;;
esac
 
xrandr |grep $EXTERNAL_OUTPUT | grep " connected "
if [ $? -eq 0 ]; then
    xrandr --output $INTERNAL_OUTPUT --auto --output $EXTERNAL_OUTPUT --auto $EXTERNAL_LOCATION
    # Alternative command in case of trouble:
    # (sleep 2; xrandr --output $INTERNAL_OUTPUT --auto --output $EXTERNAL_OUTPUT --auto $EXTERNAL_LOCATION) &
else
    xrandr --output $INTERNAL_OUTPUT --auto --output $EXTERNAL_OUTPUT --off
fi

GUIs

Esistono diverse interfaccie grafiche per xrandr (queste sono tutte per GTK):

  • Grandr
  • URandR
  • ARandR
  • Zarfy — Una GUI per libxrandr. Si presenta all’utente con una rappresentazione visiva del display attivo su una mappa interattiva della memoria video.Le caratteristiche sono il posizionamento libero, il risparmio di configurazione, script per la R & R e una gui alternativo per il passaggiotra i monitor.

Riferimenti: http://www.thinkwiki.org/wiki/Xorg_RandR_1.2#Overview

Popular Posts:

Flattr this!

  5 Responses to “Panoramica su Xrandr”

  1. “You can automate your xrandr operation putting them in the directory /etc/X11/Xsession.d/, so for example you could add a file: /etc/X11/Xsession.d/45custom_xrandr-settings”

    A rather more sensible way to do this is to specify the layout in xorg.conf , as per:

    http://wiki.debian.org/XStrikeForce/HowToRandR12

  2. I have tried xrandr before and it really cool. Now I want triple monitor on Linux, do you know a good hardware solution for this? I have a plan to buy a new dekstop computer.

  3. If you want three (or more) monitor on one card look into amd’s 5000 or 6000 series cards. You will also want a modern distro. I have seen it work with hardward acc and all. Things like compiz start to break so I would disable it.

  4. You may also want to mention things like
    xrandr –prop
    xrandr –output LVDS1 –set “scaling mode” “Full”
    for those using LVDS1 and who want to play around with the hardware scaling modes. Why “scaling mode” and not PANEL_FITTING? Because that is seemingly what the property became known as in later versions of kernel… (so for xrandr purpose the intel man page is wrong about PANEL_FITTING on recent systems – https://bugs.freedesktop.org/show_bug.cgi?id=24331 )

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*