Original author(s) | Platform X Window System | |
![]() | ||
Stable release 1.5.0 / May 16, 2015; 21 months ago (2015-05-16) License Implementations available under various licenses Website www.x.org/wiki/Projects/XRandR/ |
RandR ("resize and rotate") is a communications protocol written as an extension to the X11 protocol. XRandR provides the ability to resize, rotate and reflect the root window of a screen. RandR is also responsible for setting the screen refresh rate.
Contents
Implementations of the protocol
An implementation of RandR is part of the X.Org Server.
A user can typically use applications with a graphical front-end provided by the desktop environment to control RandR, but the additional command line tool xrandr exists. xrandr tells the display controller what resolution and refresh rate it should output on which of its outputs (e.g. VGA1, HDMI3). The name of the output is determined by the device driver for the display controller (KMS driver).
History
The initial X11 design did not anticipate the need for dynamic resizing and it was necessary to restart the X display server to bring about the changes. However, XFree86 has, since its first release, allowed the user to change the screen resolution on the fly without changing the desktop size. The 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.
The RandR extension was initially implemented in the XFree86's TinyX server, and partial support for version 1.0 was added to XFree86 4.3.
RandR 1.2
RandR 1.2 permits only 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. 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.
RandR 1.3
Some of the features in version 1.3:
RandR 1.4
Some of the features in 1.4:
RandR 1.5
Some of the features in 1.5:
Screenshots
There are numerous graphical programs, that make use of RandR to change the settings of connected screens. As can be seen in the examples, such offer less choices when compared to the available command-line programs.
The gnome-display-properties of the GNOME Control Center does not allow to set the refresh rate of a screen, the corresponding Xfce program allows configuring resolution, refresh rate, rotation and even reflection. The lxrandr program only allows to set screen resolution and refresh rate but not rotation nor reflection.
As can be seen in the example below "#Mirroring Laptop screen on Beamer and scaling", the command-line tools xrandr enables far more interesting and useful settings.
arandr is not a graphical program for xrandr, but a graphical front-end for xrandr. It enables the user to configure the monitor in a graphical manner and outputs the corresponding options for xrandr for that particular setup.
Clone means match largest common resolution between two monitors. Overlay can show part of other wayport (think presentations, maybe).
Examples
Calling xrandr
without parameters outputs the current state of the output ports:
In this example, there are two monitors connected: one to "eDP1", which is a DisplayPort-Connector, and one to "HDMI1", which is a HDMI-Connector. The other outputs are detected as "disconnected". The current active modes for "eDP1" is a resolution of 1920x1080 at 60 Hz, while "HDMI1" is at 1920x1080 pixels in "interlaced" mode (hence the "i" next to the resolution).
The position of the displays (see next section) is not immediately visible. The current resolution, for example "1920x1080+1920+0" for "eDP1" contains that information. In this example, the monitor's X-Position is shifted to the right by 1920 pixels—the X-resolution of "HDMI1"—which is "left-of" "eDP1". To aid with visualizing, there are tools like KRandRTray which show a graphical representation of the current setup. The preferred mode is denoted by the "+" sign next to a mode in the above xrandr output and is automatically selected when using "--auto", see the examples below.
Screen position
A common setup is to have one screen left or right of another screen. This example assumes that the output named "eDP1" is the primary screen, while VGA1 is a monitor that is placed on the left of "eDP1".
xrandr --output VGA1 --auto --left-of eDP1The "--auto" parameter enables all connected but disabled outputs with their preferred mode (denoted by the "+" sign in the above xrandr output), because of that it is not always required to explicitly set parameters like resolution or refresh rate.
Disabling an output
Disabling an output requires the parameter "--off"
xrandr --output VGA1 --off