gpt4 book ai didi

c - 获取所有 Xorg 显示的列表

转载 作者:IT王子 更新时间:2023-10-28 23:53:09 25 4
gpt4 key购买 nike

我想知道如何获得我系统上所有 Xorg 显示的列表,以及与每个显示关联的屏幕列表。我花了一些时间查看 Xlib 文档,但没能找到满足我要求的函数。请假设除了符合 POSIX 规范的操作系统和 X(例如,没有 GTK)之外,我没有其他依赖项。如果假设这些最小的依赖关系不可能实现我的要求,那么使用其他库的解决方案就可以了。

非常感谢您的帮助!

最佳答案

我知道的获取显示列表的唯一方法是检查 /tmp/.X11-unix 目录。

完成后,您可以使用 Xlib 查询每个显示器以获取更多信息。

例如:

#include <stdio.h>
#include <dirent.h>
#include <string.h>
#include <X11/Xlib.h>

int main(void) {
DIR* d = opendir("/tmp/.X11-unix");

if (d != NULL) {
struct dirent *dr;
while ((dr = readdir(d)) != NULL) {
if (dr->d_name[0] != 'X')
continue;

char display_name[64] = ":";
strcat(display_name, dr->d_name + 1);

Display *disp = XOpenDisplay(display_name);
if (disp != NULL) {
int count = XScreenCount(disp);
printf("Display %s has %d screens\n",
display_name, count);

int i;
for (i=0; i<count; i++)
printf(" %d: %dx%d\n",
i, XDisplayWidth(disp, i), XDisplayHeight(disp, i));

XCloseDisplay(disp);
}
}
closedir(d);
}

return 0;
}

运行上面的代码会给我当前显示/屏幕的输出:

Display :0 has 1 screens
0: 3046x1050
Display :1 has 2 screens
0: 1366x768
1: 1680x1050

再也找不到比这更好的列出 X 显示器的方法了。我非常想知道是否存在更好的选择。

关于c - 获取所有 Xorg 显示的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11367354/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com