решено. изменить положение, ориентацию и режим (из списка определившихся разрешений) можно так:
XRROutputInfo *output_first_info = XRRGetOutputInfo(dpy, sr, sr->outputs[X]);
XRRSetCrtcConfig(dpy, sr, output_first_info->crtc, CurrentTime, XM, YM, sr->modes[M].id, R, &sr->outputs[X], 1);
где X - номер монитора, параметры которого меняем
XM, YM - координаты расположения в виртуальном экране
M - номер режима
получить список всех известных режимов для каждого из подключенных мониторов можно так:
int jj = 0;
for (int i = 0; i < sr->noutput; i++)
{
XRROutputInfo *output_info = XRRGetOutputInfo (dpy, sr, sr->outputs[i]);
XRRCrtcInfo *crtc_info = XRRGetCrtcInfo(dpy, sr, output_info->crtc);
for (int j = jj; j < output_info->nmode; j++)
{
qDebug() << output_info->name << sr->modes[j].name << j;
jj++;
}
}