Linux 获取Xlib中所有屏幕的编号

Linux 获取Xlib中所有屏幕的编号,linux,x11,xlib,Linux,X11,Xlib,我在谷歌上搜索了很长一段时间,我就是找不到任何关于如何获取连接到计算机的每个屏幕的屏幕号的信息。我找到了一个宏列表,其中一些宏例如ScreenOfDisplay、screen_number使用参数screen_number。然而,没有这样的宏可以给我一个列表,每个连接的屏幕一个数字。我知道如何获取默认屏幕的数量DefaultScreen和所有屏幕的计数ScreenCount,但其他屏幕呢?我注意到默认屏幕的屏幕数是0,尽管我只有一个屏幕连接到我的计算机,所以我无法真正测试当有更多屏幕时会发生什么

我在谷歌上搜索了很长一段时间,我就是找不到任何关于如何获取连接到计算机的每个屏幕的屏幕号的信息。我找到了一个宏列表,其中一些宏例如ScreenOfDisplay、screen_number使用参数screen_number。然而,没有这样的宏可以给我一个列表,每个连接的屏幕一个数字。我知道如何获取默认屏幕的数量DefaultScreen和所有屏幕的计数ScreenCount,但其他屏幕呢?我注意到默认屏幕的屏幕数是0,尽管我只有一个屏幕连接到我的计算机,所以我无法真正测试当有更多屏幕时会发生什么。我认为screen_number可以用一种非常简单的方式分配,第一个screen_number=0,第二个screen_number=1,第三个screen_number=2,依此类推,但正如我所说。。。我无法测试它是否正确,即使我有多个屏幕,我如何才能确保它在所有计算机上都是这样工作的。请告诉我,如果你们中的任何人对X11有更多的经验,并且知道它如何工作的所有细节,请告诉我我是否正确。

您的来源提供了足够的信息。通常默认屏幕号为0,例如,当连接到本地主机时,您可以使用:0.0,如文档中所示

这是正常的。如果运行VNC,则通常在不同的显示器上运行,显示简单连接字符串中的前0

但是在阅读文档时,当应用程序调用XOpenDisplay时,它会询问给定的屏幕号码,X服务器可能会/可能不会接受该号码:

屏幕编号 指定要在该服务器上使用的屏幕。多个屏幕可以由单个X服务器控制。屏幕编号设置了一个内部变量,如果您使用的是C以外的语言,则可以使用宏或函数访问该变量。请参见

你的消息来源提供了足够的信息。通常默认屏幕号为0,例如,当连接到本地主机时,您可以使用:0.0,如文档中所示

这是正常的。如果运行VNC,则通常在不同的显示器上运行,显示简单连接字符串中的前0

但是在阅读文档时,当应用程序调用XOpenDisplay时,它会询问给定的屏幕号码,X服务器可能会/可能不会接受该号码:

屏幕编号 指定要在该服务器上使用的屏幕。多个屏幕可以由单个X服务器控制。屏幕编号设置了一个内部变量,如果您使用的是C以外的语言,则可以使用宏或函数访问该变量。请参见

ScreenCountdpy宏和int XScreenCountDisplay*函数都返回连接到显示器的屏幕数。有效的屏幕编号为0到ScreenCountdpy-1。Xlib.h中的宏确认:

ScreenCountdpy宏和int XScreenCountDisplay*函数都返回连接到显示器的屏幕数。有效的屏幕编号为0到ScreenCountdpy-1。Xlib.h中的宏确认:

#define ScreenCount(dpy)    (((_XPrivDisplay)dpy)->nscreens)
#define ScreenOfDisplay(dpy, scr)  (&((_XPrivDisplay)dpy)->screens[scr])