区分内部和外部显示器

区分内部和外部显示器

我正在寻找一种一致的方法来获取笔记本电脑中内置显示器的名称。准确地说,我正在寻找合上盖子时将关闭的显示器的名称。我只是想知道是否有一种方法无需对名称进行任何假设(不列出所有现有名称......)。

起初,似乎唯一的区别是显示器插入主板的方式,因此名称一定是相关线索,但我想知道如果没有它是否可能。

例如,我正在研究如何logind区分HandleSwitchLidHandleSwitchLidDocked,但我没有发现任何非常有用的东西,因为有时来源不太容易理解

答案1

没有通用且可靠的方法来判断屏幕是否为内置屏幕。

根本没有标准化的硬件标志可以告诉您“该屏幕在物理上与计算机的其余部分内置在同一机箱中”。因此,您需要猜测,并且接口的类型是一些提示的良好来源,只是因为没有任何内部和外部通用的视频接口。

你的想法看看logind是合理的。重要的部分manager_count_external_displays在 中logind-core.c,它使用了“可能的外部”接口列表:

"VGA-", "DVI-I-", "DVI-D-", "DVI-A-"
"Composite-", "SVIDEO-", "Component-",
"DIN-", "DP-", "HDMI-A-", "HDMI-B-", "TV-"

正如附带评论中提到的,他们宁愿错过一些外部显示器,也不愿将内部显示器误认为外部显示器(并无缘无故地阻止系统挂起)。如果您愿意以其他方式进行操作,则可能需要仅查找eDPLVDS作为“可能的内部”接口。

答案2

您也许可以使用它xrandr来为您提供所需的输出。例如,xrandr --query在我的机器上显示适配器(我的笔记本电脑上的第一个是eDP1,并xrandr --listmonitors显示显示器名称,就像我在Monitors屏幕 GUI 面板中看到的那样。

另外,如果您只想从输出中排除外部因素,您可以执行以下操作:

xrandr --query | grep ' connected' | grep -vEi '(hdmi|vga|virtual)'

华泰

相关内容