在没有 lightdm 服务的情况下如何获得显示器分辨率?

在没有 lightdm 服务的情况下如何获得显示器分辨率?

在桌面应用程序中,我需要不时检测显示器分辨率。代码如下:

Display *d;
Screen *s;
d = XOpenDisplay(":0");
if (NULL == d) {
    g_print("XOpenDisplay failed\n");
    return;
}
s = DefaultScreenOfDisplay(d);
if (NULL == s) {
    g_print("DefaultScreenOfDisplay failed\n");
    return;
}

g_print("Display size: %dx%d\n", s->width, s->height);

但另一个要求需要我也关闭 lightdm 服务和 X 服务器,这是这段代码所依赖的。

是否有其他方法在没有 Xlib 支持的情况下检测分辨率?谢谢

答案1

即使没有 X 服务器,也可以通过直接查询 EDID 信息来查找(本机/最大)显示器分辨率。看如何获取单个显示器的 EDID?。根据显卡和驱动程序的不同,体验可能会有所不同。

答案2

你可以尝试一下命令xrandr

相关内容