Add xrandr 1.2.2.

This commit is contained in:
Julien Cristau 2007-07-06 22:33:41 +02:00
parent 413f6c501a
commit 13ae540b6f
5 changed files with 295 additions and 129 deletions

6
debian/changelog vendored
View File

@ -1,3 +1,9 @@
x11-xserver-utils (7.2-2) experimental; urgency=low
* Add xrandr 1.2.2.
-- Julien Cristau <jcristau@debian.org> Fri, 06 Jul 2007 22:27:11 +0200
x11-xserver-utils (7.2-1) experimental; urgency=low x11-xserver-utils (7.2-1) experimental; urgency=low
* Change versioning scheme, base it on the latest X katamari release. * Change versioning scheme, base it on the latest X katamari release.

20
xrandr/configure vendored
View File

@ -1,6 +1,6 @@
#! /bin/sh #! /bin/sh
# Guess values for system-dependent variables and create Makefiles. # Guess values for system-dependent variables and create Makefiles.
# Generated by GNU Autoconf 2.61 for xrandr 1.2.1. # Generated by GNU Autoconf 2.61 for xrandr 1.2.2.
# #
# Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>. # Report bugs to <https://bugs.freedesktop.org/enter_bug.cgi?product=xorg>.
# #
@ -574,8 +574,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
# Identity of this package. # Identity of this package.
PACKAGE_NAME='xrandr' PACKAGE_NAME='xrandr'
PACKAGE_TARNAME='xrandr' PACKAGE_TARNAME='xrandr'
PACKAGE_VERSION='1.2.1' PACKAGE_VERSION='1.2.2'
PACKAGE_STRING='xrandr 1.2.1' PACKAGE_STRING='xrandr 1.2.2'
PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg' PACKAGE_BUGREPORT='https://bugs.freedesktop.org/enter_bug.cgi?product=xorg'
ac_subst_vars='SHELL ac_subst_vars='SHELL
@ -1194,7 +1194,7 @@ if test "$ac_init_help" = "long"; then
# Omit some internal or obsolete options to make the list less imposing. # Omit some internal or obsolete options to make the list less imposing.
# This message is too long to be a string in the A/UX 3.1 sh. # This message is too long to be a string in the A/UX 3.1 sh.
cat <<_ACEOF cat <<_ACEOF
\`configure' configures xrandr 1.2.1 to adapt to many kinds of systems. \`configure' configures xrandr 1.2.2 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]... Usage: $0 [OPTION]... [VAR=VALUE]...
@ -1264,7 +1264,7 @@ fi
if test -n "$ac_init_help"; then if test -n "$ac_init_help"; then
case $ac_init_help in case $ac_init_help in
short | recursive ) echo "Configuration of xrandr 1.2.1:";; short | recursive ) echo "Configuration of xrandr 1.2.2:";;
esac esac
cat <<\_ACEOF cat <<\_ACEOF
@ -1359,7 +1359,7 @@ fi
test -n "$ac_init_help" && exit $ac_status test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then if $ac_init_version; then
cat <<\_ACEOF cat <<\_ACEOF
xrandr configure 1.2.1 xrandr configure 1.2.2
generated by GNU Autoconf 2.61 generated by GNU Autoconf 2.61
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@ -1373,7 +1373,7 @@ cat >config.log <<_ACEOF
This file contains any messages produced by compilers while This file contains any messages produced by compilers while
running configure, to aid debugging if configure makes a mistake. running configure, to aid debugging if configure makes a mistake.
It was created by xrandr $as_me 1.2.1, which was It was created by xrandr $as_me 1.2.2, which was
generated by GNU Autoconf 2.61. Invocation command line was generated by GNU Autoconf 2.61. Invocation command line was
$ $0 $@ $ $0 $@
@ -2043,7 +2043,7 @@ fi
# Define the identity of the package. # Define the identity of the package.
PACKAGE='xrandr' PACKAGE='xrandr'
VERSION='1.2.1' VERSION='1.2.2'
cat >>confdefs.h <<_ACEOF cat >>confdefs.h <<_ACEOF
@ -4239,7 +4239,7 @@ exec 6>&1
# report actual input values of CONFIG_FILES etc. instead of their # report actual input values of CONFIG_FILES etc. instead of their
# values after options handling. # values after options handling.
ac_log=" ac_log="
This file was extended by xrandr $as_me 1.2.1, which was This file was extended by xrandr $as_me 1.2.2, which was
generated by GNU Autoconf 2.61. Invocation command line was generated by GNU Autoconf 2.61. Invocation command line was
CONFIG_FILES = $CONFIG_FILES CONFIG_FILES = $CONFIG_FILES
@ -4292,7 +4292,7 @@ Report bugs to <bug-autoconf@gnu.org>."
_ACEOF _ACEOF
cat >>$CONFIG_STATUS <<_ACEOF cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\ ac_cs_version="\\
xrandr config.status 1.2.1 xrandr config.status 1.2.2
configured by $0, generated by GNU Autoconf 2.61, configured by $0, generated by GNU Autoconf 2.61,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"

View File

@ -22,7 +22,7 @@ dnl
dnl Process this file with autoconf to create configure. dnl Process this file with autoconf to create configure.
AC_PREREQ([2.57]) AC_PREREQ([2.57])
AC_INIT(xrandr,[1.2.1], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],xrandr) AC_INIT(xrandr,[1.2.2], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],xrandr)
AM_INIT_AUTOMAKE([dist-bzip2]) AM_INIT_AUTOMAKE([dist-bzip2])
AM_MAINTAINER_MODE AM_MAINTAINER_MODE

View File

@ -72,6 +72,22 @@ static char *order[6] = {
"vertical bgr", "vertical bgr",
"no subpixels"}; "no subpixels"};
static const struct {
char *string;
unsigned long flag;
} mode_flags[] = {
{ "+HSync", RR_HSyncPositive },
{ "-HSync", RR_HSyncNegative },
{ "+VSync", RR_VSyncPositive },
{ "-VSync", RR_VSyncNegative },
{ "Interlace", RR_Interlace },
{ "DoubleScan", RR_DoubleScan },
{ "CSync", RR_CSync },
{ "+CSync", RR_CSyncPositive },
{ "-CSync", RR_CSyncNegative },
{ NULL, 0 }
};
static void static void
usage(void) usage(void)
{ {
@ -120,8 +136,8 @@ usage(void)
fprintf(stderr, " <vdisp> <vsync-start> <vsync-end> <vtotal>\n"); fprintf(stderr, " <vdisp> <vsync-start> <vsync-end> <vtotal>\n");
fprintf(stderr, " [+HSync] [-HSync] [+VSync] [-VSync]\n"); fprintf(stderr, " [+HSync] [-HSync] [+VSync] [-VSync]\n");
fprintf(stderr, " --rmmode <name>\n"); fprintf(stderr, " --rmmode <name>\n");
fprintf(stderr, " --addmode <output> <mode>\n"); fprintf(stderr, " --addmode <output> <name>\n");
fprintf(stderr, " --delmode <output> <mode>\n"); fprintf(stderr, " --delmode <output> <name>\n");
#endif #endif
exit(1); exit(1);
@ -244,6 +260,7 @@ struct _output {
name_t crtc; name_t crtc;
crtc_t *crtc_info; crtc_t *crtc_info;
crtc_t *current_crtc_info;
name_t mode; name_t mode;
float refresh; float refresh;
@ -1220,6 +1237,56 @@ mark_changing_crtcs (void)
} }
} }
/*
* Test whether 'crtc' can be used for 'output'
*/
Bool
check_crtc_for_output (crtc_t *crtc, output_t *output)
{
int c;
int l;
output_t *other;
for (c = 0; c < output->output_info->ncrtc; c++)
if (output->output_info->crtcs[c] == crtc->crtc.xid)
break;
if (c == output->output_info->ncrtc)
return False;
for (other = outputs; other; other = other->next)
{
if (other == output)
continue;
if (other->mode_info == NULL)
continue;
if (other->crtc_info != crtc)
continue;
/* see if the output connected to the crtc can clone to this output */
for (l = 0; l < output->output_info->nclone; l++)
if (output->output_info->clones[l] == other->output.xid)
break;
/* not on the list, can't clone */
if (l == output->output_info->nclone)
return False;
}
if (crtc->noutput)
{
/* make sure the state matches */
if (crtc->mode_info != output->mode_info)
return False;
if (crtc->x != output->x)
return False;
if (crtc->y != output->y)
return False;
if (crtc->rotation != output->rotation)
return False;
}
return True;
}
crtc_t * crtc_t *
find_crtc_for_output (output_t *output) find_crtc_for_output (output_t *output)
{ {
@ -1228,42 +1295,12 @@ find_crtc_for_output (output_t *output)
for (c = 0; c < output->output_info->ncrtc; c++) for (c = 0; c < output->output_info->ncrtc; c++)
{ {
crtc_t *crtc; crtc_t *crtc;
int l;
output_t *other;
crtc = find_crtc_by_xid (output->output_info->crtcs[c]); crtc = find_crtc_by_xid (output->output_info->crtcs[c]);
if (!crtc) fatal ("cannot find crtc 0x%x\n", output->output_info->crtcs[c]); if (!crtc) fatal ("cannot find crtc 0x%x\n", output->output_info->crtcs[c]);
for (other = outputs; other; other = other->next) if (check_crtc_for_output (crtc, output))
{ return crtc;
if (other == output)
continue;
if (other->mode_info == NULL)
continue;
if (other->crtc_info != crtc)
continue;
/* see if the output connected to the crtc can clone to this output */
for (l = 0; l < output->output_info->nclone; l++)
if (output->output_info->clones[l] == other->output.xid)
break;
/* not on the list, can't clone */
if (l == output->output_info->nclone) break;
}
if (other) continue;
if (crtc->noutput)
{
/* make sure the state matches */
if (crtc->mode_info != output->mode_info) continue;
if (crtc->x != output->x) continue;
if (crtc->y != output->y) continue;
if (crtc->rotation != output->rotation) continue;
}
return crtc;
} }
return NULL; return NULL;
} }
@ -1417,6 +1454,124 @@ set_screen_size (void)
#endif #endif
void
disable_outputs (output_t *outputs)
{
while (outputs)
{
outputs->crtc_info = NULL;
outputs = outputs->next;
}
}
/*
* find the best mapping from output to crtc available
*/
int
pick_crtcs_score (output_t *outputs)
{
output_t *output;
int best_score;
int my_score;
int score;
crtc_t *best_crtc;
int c;
if (!outputs)
return 0;
output = outputs;
outputs = outputs->next;
/*
* Score with this output disabled
*/
output->crtc_info = NULL;
best_score = pick_crtcs_score (outputs);
if (output->mode_info == NULL)
return best_score;
best_crtc = NULL;
/*
* Now score with this output any valid crtc
*/
for (c = 0; c < output->output_info->ncrtc; c++)
{
crtc_t *crtc;
crtc = find_crtc_by_xid (output->output_info->crtcs[c]);
if (!crtc)
fatal ("cannot find crtc 0x%x\n", output->output_info->crtcs[c]);
/* reset crtc allocation for following outputs */
disable_outputs (outputs);
if (!check_crtc_for_output (crtc, output))
continue;
my_score = 1000;
/* slight preference for existing connections */
if (crtc == output->current_crtc_info)
my_score++;
output->crtc_info = crtc;
score = my_score + pick_crtcs_score (outputs);
if (score > best_score)
{
best_crtc = crtc;
best_score = score;
}
}
/*
* Reset other outputs based on this one using the best crtc
*/
if (output->crtc_info != best_crtc)
{
output->crtc_info = best_crtc;
(void) pick_crtcs_score (outputs);
}
return best_score;
}
/*
* Pick crtcs for any changing outputs that don't have one
*/
void
pick_crtcs (void)
{
output_t *output;
/*
* First try to match up newly enabled outputs with spare crtcs
*/
for (output = outputs; output; output = output->next)
{
if (output->changes && output->mode_info && !output->crtc_info)
{
output->crtc_info = find_crtc_for_output (output);
if (!output->crtc_info)
break;
}
}
/*
* Everyone is happy
*/
if (!output)
return;
/*
* When the simple way fails, see if there is a way
* to swap crtcs around and make things work
*/
for (output = outputs; output; output = output->next)
output->current_crtc_info = output->crtc_info;
pick_crtcs_score (outputs);
for (output = outputs; output; output = output->next)
{
if (output->mode_info && !output->crtc_info)
fatal ("cannot find crtc for output %s\n", output->output.string);
if (!output->changes && output->crtc_info != output->current_crtc_info)
output->changes |= changes_crtc;
}
}
int int
main (int argc, char **argv) main (int argc, char **argv)
{ {
@ -1762,21 +1917,6 @@ main (int argc, char **argv)
if (sscanf (argv[i++], "%d", &m->mode.vTotal) != 1) usage(); if (sscanf (argv[i++], "%d", &m->mode.vTotal) != 1) usage();
m->mode.modeFlags = 0; m->mode.modeFlags = 0;
while (i < argc) { while (i < argc) {
static const struct {
char *string;
unsigned long flag;
} mode_flags[] = {
{ "+HSync", RR_HSyncPositive },
{ "-HSync", RR_HSyncNegative },
{ "+VSync", RR_VSyncPositive },
{ "-VSync", RR_VSyncNegative },
{ "Interlace", RR_Interlace },
{ "DoubleScan", RR_DoubleScan },
{ "CSync", RR_CSync },
{ "+CSync", RR_CSyncPositive },
{ "-CSync", RR_CSyncNegative },
{ NULL, 0 }
};
int f; int f;
for (f = 0; mode_flags[f].string; f++) for (f = 0; mode_flags[f].string; f++)
@ -2003,18 +2143,7 @@ main (int argc, char **argv)
set_positions (); set_positions ();
set_screen_size (); set_screen_size ();
/* pick_crtcs ();
* Pick crtcs for any changing outputs that don't have one
*/
for (output = outputs; output; output = output->next)
{
if (output->changes && output->mode_info && !output->crtc_info)
{
output->crtc_info = find_crtc_for_output (output);
if (!output->crtc_info)
fatal ("cannot find crtc for output %s\n", output->output.string);
}
}
/* /*
* Assign outputs to crtcs * Assign outputs to crtcs
@ -2118,6 +2247,8 @@ main (int argc, char **argv)
mode_width (mode, output->rotation), mode_width (mode, output->rotation),
mode_height (mode, output->rotation), mode_height (mode, output->rotation),
output->x, output->y); output->x, output->y);
if (verbose)
printf (" (0x%x)", mode->id);
if (output->rotation != RR_Rotate_0 || verbose) if (output->rotation != RR_Rotate_0 || verbose)
{ {
printf (" %s", printf (" %s",
@ -2265,10 +2396,15 @@ main (int argc, char **argv)
for (j = 0; j < output_info->nmode; j++) for (j = 0; j < output_info->nmode; j++)
{ {
XRRModeInfo *mode = find_mode_by_xid (output_info->modes[j]); XRRModeInfo *mode = find_mode_by_xid (output_info->modes[j]);
int f;
printf (" %s (0x%x) %6.1fMHz\n", printf (" %s (0x%x) %6.1fMHz",
mode->name, mode->id, mode->name, mode->id,
(float)mode->dotClock / 1000000.0); (float)mode->dotClock / 1000000.0);
for (f = 0; mode_flags[f].flag; f++)
if (mode->modeFlags & mode_flags[f].flag)
printf (" %s", mode_flags[f].string);
printf ("\n");
printf (" h: width %4d start %4d end %4d total %4d skew %4d clock %6.1fKHz\n", printf (" h: width %4d start %4d end %4d total %4d skew %4d clock %6.1fKHz\n",
mode->width, mode->hSyncStart, mode->hSyncEnd, mode->width, mode->hSyncStart, mode->hSyncEnd,
mode->hTotal, mode->hSkew, mode_hsync (mode) / 1000); mode->hTotal, mode->hSkew, mode_hsync (mode) / 1000);

View File

@ -26,132 +26,156 @@
xrandr \- primitive command line interface to RandR extension xrandr \- primitive command line interface to RandR extension
.SH SYNOPSIS .SH SYNOPSIS
.B "xrandr" .B "xrandr"
[-help] [-display \fIdisplay\fP] [\-help] [\-display \fIdisplay\fP]
[-q] [-v] [\-q] [\-v]
[--verbose] [\-\-verbose]
[--screen \fIsnum\fP] [\-\-screen \fIsnum\fP]
.br .br
.B RandR version 1.2 options .B RandR version 1.2 options
.br .br
[--prop] [\-\-prop]
[--fb <width>x<height>] [\-\-fb <width>x<height>]
[--fbmm <width>x<height>] [\-\-fbmm <width>x<height>]
[--dpi <dpi>] [\-\-dpi <dpi>]
.br .br
.B Per-output options .B Per-output options
.br .br
[--output <output>] [\-\-output <output>]
[--auto] [\-\-auto]
[--mode <mode>] [\-\-mode <mode>]
[--preferred] [\-\-preferred]
[--pos <x>x<y>] [\-\-pos <x>x<y>]
[--rate <rate>] [\-\-rate <rate>]
[--reflect \fIreflection\fP] [\-\-reflect \fIreflection\fP]
[--rotate \fIorientation\fP] [\-\-rotate \fIorientation\fP]
[--left-of <output>\] [\-\-left\-of <output>\]
[--right-of <output>\] [\-\-right\-of <output>\]
[--above <output>\] [\-\-above <output>\]
[--below <output>\] [\-\-below <output>\]
[--off] [\-\-same-as <output>\]
[--crtc <crtc>] [\-\-set <property> <value>]
[\-\-off]
[\-\-crtc <crtc>]
[\-\-newmode <name> \fImode\fP]
[\-\-rmmode <name>]
[\-\-addmode <output> <name>]
[\-\-delmode <output> <name>]
.br .br
.B RandR version 1.0 and version 1.1 options .B RandR version 1.0 and version 1.1 options
.br .br
[-o \fIorientation\fP] [\-o \fIorientation\fP]
[-s \fIsize\fP] [\-s \fIsize\fP]
[-x] [-y] [\-x] [\-y]
.SH DESCRIPTION .SH DESCRIPTION
.I Xrandr .I Xrandr
is used to set the size, orientation and/or reflection of the outputs for a is used to set the size, orientation and/or reflection of the outputs for a
screen. It can also set the screen size. screen. It can also set the screen size.
There are a few global options; the rest modify a particular output and There are a few global options; the rest modify a particular output and
follow the specification of that output on the command line. follow the specification of that output on the command line.
.IP --help .IP \-\-help
Print out a summary of the usage and exit. Print out a summary of the usage and exit.
.IP -v .IP \-v
Print out the RandR version reported by the X server and exit. Print out the RandR version reported by the X server and exit.
.IP --verbose .IP \-\-verbose
causes xrandr to be more verbose. When used with -q (or without other causes xrandr to be more verbose. When used with \-q (or without other
options), xrandr will display more information about the server state. When options), xrandr will display more information about the server state. When
used along with options that reconfigure the system, progress will be used along with options that reconfigure the system, progress will be
reported while executing the configuration changes. reported while executing the configuration changes.
.IP -q .IP \-q
When this option is present, or when no configuration changes are requested, When this option is present, or when no configuration changes are requested,
xrandr will display the current state of the system. xrandr will display the current state of the system.
.IP "-screen \fIsnum\fP" .IP "\-screen \fIsnum\fP"
This option selects which screen to manipulate. Note this refers to the X This option selects which screen to manipulate. Note this refers to the X
screen abstraction, not the monitor (or output). screen abstraction, not the monitor (or output).
.SH "RandR version 1.2 options" .SH "RandR version 1.2 options"
These options are only available for X server supporting RandR version 1.2 These options are only available for X server supporting RandR version 1.2
or newer. or newer.
.IP --prop .IP \-\-prop
This option causes xrandr to display the contents of properties for each This option causes xrandr to display the contents of properties for each
output. --verbose also enables --prop. output. \-\-verbose also enables \-\-prop.
.IP "--fb <width>x<height" .IP "\-\-fb <width>x<height>"
Reconfigures the screen to the specified size. All configured monitors must Reconfigures the screen to the specified size. All configured monitors must
fit within this size. When this option is not provided, xrandr computes the fit within this size. When this option is not provided, xrandr computes the
smallest screen size that will hold the set of configured outputs; this smallest screen size that will hold the set of configured outputs; this
option provides a way to override that behaviour. option provides a way to override that behaviour.
.IP "--fbmm <width>x<height" .IP "\-\-fbmm <width>x<height>"
Sets the reported values for the physical size of the screen. Normally, Sets the reported values for the physical size of the screen. Normally,
xrandr resets the reported physical size values to keep the DPI constant. xrandr resets the reported physical size values to keep the DPI constant.
This overrides that computation. This overrides that computation.
.IP "--dpi <dpi>" .IP "\-\-dpi <dpi>"
This also sets the reported physical size values of the screen, it uses the This also sets the reported physical size values of the screen, it uses the
specified DPI value to compute an appropriate physical size using whatever specified DPI value to compute an appropriate physical size using whatever
pixel size will be set. pixel size will be set.
.PP .PP
.B "Per-output options" .B "Per-output options"
.IP "--output <output>" .IP "\-\-output <output>"
Selects an output to reconfigure. Use either the name of the output or the Selects an output to reconfigure. Use either the name of the output or the
XID. XID.
.IP --auto .IP \-\-auto
For connected but disabled outputs, this will enable them using their For connected but disabled outputs, this will enable them using their
preferred mode (or, something close to 96dpi if they have no preferred preferred mode (or, something close to 96dpi if they have no preferred
mode). For disconnected but enabled outputs, this will disable them. mode). For disconnected but enabled outputs, this will disable them.
.IP "--mode <mode>" .IP "\-\-mode <mode>"
This selects a mode. Use either the name or the XID for <mode> This selects a mode. Use either the name or the XID for <mode>
.IP "--preferred" .IP "\-\-preferred"
This selects the same mode as --auto, but it doesn't automatically enable or This selects the same mode as \-\-auto, but it doesn't automatically enable or
disable the output. disable the output.
.IP "--pos <x>x<y>" .IP "\-\-pos <x>x<y>"
Position the output within the screen using pixel coordinates. Position the output within the screen using pixel coordinates.
.IP "--rate <rate> .IP "\-\-rate <rate>"
This marks a preference for refresh rates close to the specified value, when This marks a preference for refresh rates close to the specified value, when
multiple modes have the same name, this will select the one with the nearest multiple modes have the same name, this will select the one with the nearest
refresh rate. refresh rate.
.IP "--reflect \fIreflection\fP" .IP "\-\-reflect \fIreflection\fP"
Reflection can be one of 'normal' 'x', 'y' or 'xy'. This causes the output Reflection can be one of 'normal' 'x', 'y' or 'xy'. This causes the output
contents to be reflected across the specified axes. contents to be reflected across the specified axes.
.IP "--rotate \fIrotation\fP" .IP "\-\-rotate \fIrotation\fP"
Rotation can be one of 'normal', 'left', 'right' or 'inverted'. This causes Rotation can be one of 'normal', 'left', 'right' or 'inverted'. This causes
the output contents to be rotated in the specified direction. the output contents to be rotated in the specified direction.
.IP "--left-of, --right-of, --above, --below <another output>" .IP "\-\-left\-of, \-\-right\-of, \-\-above, \-\-below, \-\-same-as <another output>"
Use one of these options to position the output relative to the position of Use one of these options to position the output relative to the position of
another output. This allows convenient tiling of outputs within the screen. another output. This allows convenient tiling of outputs within the screen.
The position is always computed relative to the new position of the other The position is always computed relative to the new position of the other
output, so it is not valid to say --output a --left-of b --output output, so it is not valid to say \-\-output a \-\-left\-of b \-\-output
b --left-of a. b \-\-left\-of a.
.IP "--off" .IP "\-\-set <property> <value>"
Sets an output property. Integer properties may be specified as a valid
(see \-\-prop) decimal or hexadecimal (with a leading 0x) value. Atom properties
may be set to any of the valid atoms (see \-\-prop). String properties may be
set to any value.
.IP "\-\-off"
Disables the output. Disables the output.
.IP "--crtc <crtc>" .IP "\-\-crtc <crtc>"
Uses the specified crtc (either as an index in the list of CRTCs or XID). Uses the specified crtc (either as an index in the list of CRTCs or XID).
In normal usage, this option is not required as xrandr tries to make In normal usage, this option is not required as xrandr tries to make
sensible choices about which crtc to use with each output. When that fails sensible choices about which crtc to use with each output. When that fails
for some reason, this option can override the normal selection. for some reason, this option can override the normal selection.
.IP "\-\-newmode <name> \fImode\fP"
New modelines can be added to the server and then associated with outputs.
This option does the former. The \fImode\fP is specified using the ModeLine
syntax for xorg.conf: hdisp hsyncstart hsyncend htotal vdisp vsyncstart
vsyncend vtotal \fIflags\fP. \fIflags\fP can be zero or more of +HSync,
-HSync, +VSync, -VSync, Interlace, DoubleScan, CSync, +CSync, -CSync.
.IP "\-\-rmmode <name>"
This removes a mode from the server if it is otherwise unused.
.IP "\-\-addmode <output> <name>"
Add a mode to the set of valid modes for an output.
.IP "\-\-delmode <output> <name>"
Remove a mode from the set of valid modes for an output.
.PP .PP
.SH "RandR version 1.1 options" .SH "RandR version 1.1 options"
These options are available for X server supporting RandR version 1.1 or These options are available for X servers supporting RandR version 1.1 or
older. They are still valid for newer X servers, but they don't older. They are still valid for newer X servers, but they don't interact
.IP "-s <size index> or -s <width>x<height>" sensibly with version 1.2 options on the same command line.
.IP "\-s <size index> or \-s <width>x<height>"
This sets the screen size, either matching by size or using the index into This sets the screen size, either matching by size or using the index into
the list of available sizes. the list of available sizes.
.IP "-o \fIrotation\fP" .IP "\-o \fIrotation\fP"
This specifies the orientation of the screen, This specifies the orientation of the screen,
and can be one of normal, inverted, left or right. and can be one of normal, inverted, left or right.
.IP -x .IP \-x
Reflect across the X axis. Reflect across the X axis.
.IP -y .IP \-y
Reflect across the Y axis. Reflect across the Y axis.
.SH "SEE ALSO" .SH "SEE ALSO"
Xrandr(3) Xrandr(3)