Add xrandr 1.2.2.
This commit is contained in:
parent
413f6c501a
commit
13ae540b6f
|
@ -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.
|
||||||
|
|
|
@ -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'`\\"
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
260
xrandr/xrandr.c
260
xrandr/xrandr.c
|
@ -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);
|
||||||
|
|
|
@ -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)
|
||||||
|
|
Loading…
Reference in New Issue