有没有办法从命令行查询监视器信息?例如,获取监视器模型,类似于lspci图形卡信息的作用,或者它当前是打开还是关闭,诸如此类。
如果可能的话,像上面这样的哪些基本信息可以很容易地收集到?例如,是否可以确定显示器是纵向还是横向?或者它是否有内置扬声器?
命令行是首选,但如果有 GUI 方法,我也想听听。
tho*_*hom 46
是的,有用于 VESA PnP 显示器的read-edid 硬件信息收集工具。该工具有两个命令:get-edid和parse-edid: 使用 VESA VBE DDC 协议检索和解释监视器规范的工具。EDID(扩展显示标识数据)是显示设备向视频源描述其功能的元数据格式。
第一的:
sudo apt-get install read-edid
Run Code Online (Sandbox Code Playgroud)
然后尝试:
sudo get-edid | parse-edid
Run Code Online (Sandbox Code Playgroud)
tho*_*hom 22
$ grep "NVIDIA(GPU-0)" /var/log/Xorg.0.log |head -17| cut -d\: -f2
Display (Samsung SA300/SA350 (DFP-0)) does not support NVIDIA
3D Vision stereo.
The EDID for Samsung SA300/SA350 (DFP-0) contradicts itself
mode "1920x1080" is specified in the EDID; however, the
EDID's valid VertRefresh range (56.000-75.000 Hz) would
exclude this mode's VertRefresh (50.0 Hz); ignoring
VertRefresh check for mode "1920x1080".
The EDID for Samsung SA300/SA350 (DFP-0) contradicts itself
mode "1280x720" is specified in the EDID; however, the
EDID's valid VertRefresh range (56.000-75.000 Hz) would
exclude this mode's VertRefresh (50.0 Hz); ignoring
VertRefresh check for mode "1280x720".
The EDID for Samsung SA300/SA350 (DFP-0) contradicts itself
mode "720x576" is specified in the EDID; however, the
EDID's valid VertRefresh range (56.000-75.000 Hz) would
exclude this mode's VertRefresh (50.0 Hz); ignoring
VertRefresh check for mode "720x576".
Run Code Online (Sandbox Code Playgroud)
use*_*.dz 16
get-edid不显示所有显示器像我一样,我有:
$ lshw -c display
*-display
description: VGA compatible controller
product: 3rd Gen Core processor Graphics Controller
vendor: Intel Corporation
physical id: 2
bus info: pci@0000:00:02.0
version: 09
width: 64 bits
clock: 33MHz
capabilities: vga_controller bus_master cap_list rom
configuration: driver=i915 latency=0
resources: irq:27 memory:f6400000-f67fffff memory:e0000000-efffffff ioport:f000(size=64)
Run Code Online (Sandbox Code Playgroud)
get-edid 仅显示插入 VGA 端口的外接显示器。
安装 read-edid
sudo apt-get install read-edid
Run Code Online (Sandbox Code Playgroud)
直接从 SYSFS 树读取 EDID 信息,它应该显示所有检测到的监视器
ls /sys/class/drm/*/edid | xargs -i{} sh -c "echo {}; parse-edid < {}"
Run Code Online (Sandbox Code Playgroud)
小智 13
尝试
xrandr
(我在 Archlinux 上玩双显示器设置时使用过该程序一次。)
您可以在x11-server-utils包中找到它。该软件包包含其他可玩的东西,例如:
小智 9
这为您提供了所需的所有信息:
dbus-send --session --print-reply --dest=org.gnome.Mutter.DisplayConfig /org/gnome/Mutter/DisplayConfig org.gnome.Mutter.DisplayConfig.GetCurrentState
xrandr,xrandr --prop并且xrandr --verbose会给你不同详细程度的一些信息。
制造商提供的信息可以在EDID格式中找到。
要获取和解码 EDID,首先检查xrandr输出以找出使用的接口(例如eDP-1)和apt install edid-decode,然后:
edid-decode </sys/class/drm/card0-eDP-1/edid
Run Code Online (Sandbox Code Playgroud)
您可以在此处找到示例输出。eDP-1如果需要,请替换为您的接口。
或者,xrandr --prop以十六进制格式输出 EDID,您可以将其提供给此在线EDID 解码器。
我不建议使用read-edid包,因为我对它有负面体验(版本3.0.2)。在我的情况下,get-edid在结束后输出额外的字符,导致警告edid-decode并parse-edid在ModelName和Identifier字段中输出随机垃圾。
这在 Ubuntu 18.04 上对我有用。
使用 HDMI 连接显示器:
grep -i "monitor name" /var/log/syslog
Run Code Online (Sandbox Code Playgroud)