我使用 C++/Qt 和 libxrandr 库编写了一个应用程序来更改显示器的分辨率和方向。但我必须扩展功能。请帮助我了解如何执行以下操作:
- 获取连接的监视器列表
- 改变它们每个的分辨率和方向
- 将它们彼此相对放置(例如,左侧的第一台显示器,右侧的第二台显示器)
问题解决了
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++;
}
}