RandR
The X Resize, Rotate and Reflect Extension (RandR)[2] is a X Window System extension, which allows clients to dynamically change X screens, so as to resize, rotate and reflect the root window of a screen. The initial X11 design did not anticipate the need for dynamic resizing and it was necessary to restart the X server to bring about the changes. However, changing the screen resolution on the fly without changing the desktop size had been available under XFree86 since the beginning. RandR extension framework brought the ability to change display characteristics without restarting the X session. The extension framework allows laptops and handheld computers to change their screen size to drive external monitors at different resolutions than their built in screens.[3]
If one's desktop environment doesn't provide a graphical tool for interfacing with this functionality, the xrandr command line tool may be used.
Key terms
The X window system (q.v.) has nuanced usage of a number of terms when compared to common usage, particularly "display" and "screen", a subset of which is given here for convenience:
- device
- A graphics device such as a computer graphics card or a computer motherboard's integrated graphics chipset.
- monitor
- A physical device such as a CRT or a flat screen computer display.
- screen
- An area into which graphics may be rendered, either through software alone into RAM as with VNC, or within a graphics device, some of which support rendering into more than one screen simultaneously, either viewable simultaneously or interchangeably. Interchangeable screens are often set up to be notionally left and right from one another, flipping from one to the next as the mouse pointer reaches the edge of the monitor.
- virtual screen
- Two different meanings are associated with this term:
-
-
- A technique allowing panning a monitor around a screen running at a larger resolution than the monitor is currently displaying.
- An effect simulated by a window manager by maintaining window position information in a larger coordinate system than the screen and allowing panning by simply moving the windows in response to the user.
- display
- A collection of screens, often involving multiple monitors, generally configured to allow the mouse to move the pointer to any position within them. Linux-based workstations usually support having multiple displays, which are switched by special keyboard combinations such as control-alt-function-key, simultaneously flipping all the monitors from showing the screens of one display to the screens in another.
The term "display" should not be confused with the more specialized jargon "Zaphod display". The latter is a rare configuration allowing multiple users of a single computer to each have an independent set of display, mouse, and keyboard, as though they were using separate computers, but at a lower per-seat cost.
Limitations and criticisms of RandR
RandR 1.2
RandR 1.2 only permits one virtual screen per display device. It is not possible to assign each monitor on a device to a different screen (sometimes called "Zaphod" mode), or to combine monitors from multiple devices into a single screen.[4]
One practical limiting effect of this is that it is not possible to run a different WM on each monitor, since window managers are limited to one per screen.
Some of these specific issues are resolved in RandR 1.3[5], but the Xorg Foundation has been criticised for removing useful, and widely used, functionality before an effective substitute is available.
Release history
RandR 1.3
Some of the features in version 1.3[6]:
- querying state without output probing
- multi-monitor panning (still limited to one separate screen per GPU[7])
- display transformations (translation, scaling, rotation, projection)
- support for standard outputs
RandR 1.4
Some of the proposed features in 1.4:[8]
- Per-CRTC pixmaps for providing multiple scan-out buffers. [9]
- Support for sprite position and image transforms. [10]
- Request change for CRTC configurations (to reduce screen flickering and allow NVIDIA to implement RandR 1.2 support in the binary driver) [11]
1.4 does not contain the following:
- Per-output DPMS controls
- Multi-GPU support
References
- ^ http://cgit.freedesktop.org/xorg/app/xrandr/tag/?id=xrandr-1.3.5
- ^ The X Resize, Rotate and Reflect Extension Version 1.3.1
- ^ The X Resize and Rotate Extension (Jim Gettys and Keith Packard, Usenix Technical Conference 2001)
- ^ Debian XStrikeForce (documentation and information on Xrandr 1.2)
- ^ Freedesktop.org GIT Repository Browser - XRandR Protocol Headers - "Add unicode art pictures for panning"
- ^ RandR 1.3 Explained, Demonstrated
- ^ Overview of the GPU object implementation state
- ^ http://www.phoronix.com/scan.php?page=news_item&px=OTE1Nw
- ^ "multiple scan-out buffers which applications can create and assign to arbitrary collections of CRTCs. These pixmaps can be associated with a window for use with OpenGL or drawn to directly." - http://www.phoronix.com/scan.php?page=news_item&px=ODg3Mg
- ^ http://lists.x.org/archives/xorg-devel/2010-December/016605.html
- ^ http://lists.x.org/archives/xorg-devel/2011-July/023888.html
External links