C++/Qt と libxrandr ライブラリを使用して、モニターの解像度と向きを変更するアプリケーションを作成しました。しかし、機能を拡張する必要があります。次のことを行う方法を理解してください。
- 接続されているモニターのリストを取得する
- それぞれの解像度と向きを変更する
- それらを互いに向かい合わせて配置します (たとえば、最初のモニターを左に、右から 2 番目に)。
問題が解決しました
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++;
}
}