如何在Linux中获取显示设备名称

时间:2019-02-01 14:28:13

标签: c linux

我想找到EnumDisplayDevicesEnumDisplaySettingsEx WinAPI函数的Linux类似物。

我需要获取的信息是显示名称和状态(无论是否激活),宽度,高度,每像素位数和频率。 如何使用C(C ++)获取此信息? 谢谢。

2 个答案:

答案 0 :(得分:1)

正如“一些程序员伙计”在评论中提到的那样,您可能必须通过X窗口系统。最具体地说,一种选择是RandR协议。这是protocol specification以及命令xrandr的源代码,该命令调用XRR函数并在终端上输出您想要的大多数信息。寻找

XRRScreenResources  *res

被填充,然后使用find_mode()函数从中获取模式。

其他可能会帮助您并且不通过RandR扩展的命令可能是xprop(1),xdpyinfo(1),xwininfo(1)

答案 1 :(得分:1)

一些程序员花花公子和ramrunner是绝对正确的。对于大多数Linux系统,图形化“桌面”基于X Windows。用于查询X“显示”的命令行工具包括xrandrxdpyinfo。两者的C语言源代码都是免费提供的。您可以通过Google搜索找到许多示例程序。

...但是...

X Windows是“客户端/服务器”。您的Linux“桌面”不需要在物理PC上安装;您的X“显示器”可以很容易地成为Windows桌面。在这种情况下-xrandr和xdpyinfo仍然适用:它们指的是您正在显示的 (例如Windows上的XMing客户端),而不是物理主机Linux正在运行上。

如果您想要查询您的物理服务器上的图形设备,则可以使用lshw -c display或{{3}之类的命令}