在桌面应用程序中,我需要不时检测显示器分辨率。代码如下:
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