我想知道如何在系统上获取所有Xorg显示的列表,以及与每个显示相关联的屏幕列表.我花了一些时间查看Xlib文档,但是找不到我想要的功能.请假设除了POSIX投诉操作系统和X(即没有GTK)之外,我没有其他依赖关系.如果我不能假设这些最小的依赖关系,那么使用其他库的解决方案是很好的.
非常感谢您的帮助!
解决方法
我知道得到显示列表的唯一方法是检查/tmp/.X11-unix目录.
每个例子:
#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显示.我非常想知道是否有更好的选择存在.