Libxrandr库:如何改变连接监视器的属性

libxrandr library: how to change properties of connected monitors?

本文关键字:连接 监视器 属性 改变 何改变 Libxrandr      更新时间:2023-10-16

我使用c++/Qt和libxrandr库编写了一个应用程序来改变监视器的分辨率和方向。但是我必须扩展它的功能。请帮助我了解如何做到以下几点:

  1. 获取连接的监视器列表
  2. 改变它们的分辨率和方向
  3. 将它们相对放置(例如,第一个监视器在左边,第二个从右边)
问题解决
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++;
            }
        }