ディスプレイのリストを取得する唯一の方法は、/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 ディスプレイを一覧表示するより良い方法は見つかりませんでした。より良い代替手段が存在するかどうかを知りたいです。