如何获得笔记本电脑的显示器尺寸?


Answers:


46

使用的另一个选择xrandr是命令:

xrandr | grep ' connected'

输出:

DVI-I-1 connected primary 1680x1050+0+0 (normal left inverted right x axis y axis) 473mm x 296mm
VGA-1 connected 1280x1024+1680+0 (normal left inverted right x axis y axis) 376mm x 301mm

(请注意之前的空格connected,否则disconnected将包括在内)

xdpyinfo和之间的重要区别xrandr

  • 虽然分别xrandr列出屏幕(如果有多个监视器),则同时xdpyinfo为所有屏幕输出一组尺寸(“桌面尺寸”而不是屏幕尺寸)
  • 正如@agold所注意到的,两者之间有一个(相当大的)差异,它似乎太大了,无法简单地四舍五入:

    xrandr: 473mm x 296mm
    xdpyinfo: 445x278
    

似乎与中的错误有关xdpyinfo。另请参阅此处

如果你坚持英寸

使用下面的小脚本;它输出以英寸为单位的屏幕尺寸;宽度/高度/对角线(英寸)

#!/usr/bin/env python3
import subprocess
# change the round factor if you like
r = 1

screens = [l.split()[-3:] for l in subprocess.check_output(
    ["xrandr"]).decode("utf-8").strip().splitlines() if " connected" in l]

for s in screens:
    w = float(s[0].replace("mm", "")); h = float(s[2].replace("mm", "")); d = ((w**2)+(h**2))**(0.5)
    print([round(n/25.4, r) for n in [w, h, d]])

要使用它:

将脚本复制到一个空文件中,另存为get_dimensions.py,然后通过以下命令运行该脚本:

python3 /path/to/get_dimensions.py

在我的两个屏幕上输出:

width - height - diagonal (inches)

[18.6, 11.7, 22.0]
[14.8, 11.9, 19.0]



编辑

花式同一个脚本的版本(有一些改进和一个更好的输出),看起来像:

Screen  width   height  diagonal
--------------------------------
DVI-I-1 18.6    11.7    22.0
VGA-1   14.8    11.9    19.0

剧本:

#!/usr/bin/env python3
import subprocess
# change the round factor if you like
r = 1

screens = [l.split() for l in subprocess.check_output(
    ["xrandr"]).decode("utf-8").strip().splitlines() if " connected" in l]

scr_data = []
for s in screens:
    try:
        scr_data.append((
            s[0],
            float(s[-3].replace("mm", "")),
            float(s[-1].replace("mm", ""))
            ))
    except ValueError:
        pass

print(("\t").join(["Screen", "width", "height", "diagonal\n"+32*"-"]))
for s in scr_data:
    scr = s[0]; w = s[1]/25.4; h = s[2]/25.4; d = ((w**2)+(h**2))**(0.5)
    print(("\t").join([scr]+[str(round(n, 1)) for n in [w, h, d]]))

编辑2(2019年5月)

根据请求(在注释中)的“种类”,是一个现代化的/更高级的/改进的(无需系统调用,无需解析,但使用Gdk.Display)版本,其功能几乎完全相同:

#!/usr/bin/env python3
import gi
gi.require_version('Gdk', '3.0')
from gi.repository import Gdk

dsp = Gdk.Display.get_default()
n_mons = dsp.get_n_monitors()

print(("\t").join(["Screen", "width", "height", "diagonal\n"+32*"-"]))

for i in range(n_mons):
    mon = dsp.get_monitor(i)
    mon_name = mon.get_model()
    w = mon.get_width_mm()/25.4
    h = mon.get_height_mm()/25.4
    d = ((w**2)+(h**2))**(0.5)
    print(("\t").join([mon_name]+[str(round(n, 1)) for n in [w, h, d]]))

输出:

Screen  width   height  diagonal
--------------------------------
eDP-1   20.0    11.3    23.0
HDMI-1  18.6    11.7    22.0

我将保留原始答案,因为经过如此长时间的讨论后删除该答案似乎不合适,因为这样会产生现有选票。


只是一个旁注,但是两个答案都给了我不同的结果:xdpyinfo给了我“ 474x303毫米”和xrandr“ 473mm x 296mm”。
agold

1
@agold现在很有趣。舍入差异。另一个有趣的事情是xdpyinfo输出桌面大小(两个屏幕),而不是屏幕的大小!
雅各布·弗利姆

@agold的差异对于四舍五入的差异太大了!!看到我的编辑。
雅各布·弗利姆

是的,它很大,但是这些程序如何获取此信息?它是来自监视器的一些元信息,还是根据其他一些参数估算的?
agold

@agold似乎与以下bug有关xdpyinfobugs.launchpad.net/ubuntu/+source/xorg-server/+bug/201491尽管该报告很旧,但我看不到它已修复。另请参阅:bbs.archlinux.org/viewtopic.php?id=204823
Jacob Vlijm'Feb 18''16

14

万一您需要一个更一般的答案,则可以切开gordian结,并为此使用非怪异的物理尺子。按照此Wiki,“屏幕的大小通常由对角线的长度来描述”:

在此处输入图片说明

如果您有只显示厘米的标尺,则可以使用简单的转换

1 cm = 0.393701 in
(or 2.54 cm = 1 in)

因此,如果您的标尺长30厘米,则屏幕为11.811英寸。您也可以将google与以下形式的查询一起使用30 cm to in


图片来源:https://en.wikipedia.org/wiki/File:Display_size_measurements.png


Ask Ubuntu是一个软件解决方案的网站,因此您的答案在这里有点题外话……另一方面,它是正确的,写得很好,非常可读和有趣的! :-) 这么赞!
Fabby

1
@dn-ʞɔɐqɹW:实际上,这是基于我这一边的错误。我读了一个问题:“如何获得笔记本电脑的显示器尺寸?”,我的第一个念头是“好,用一把尺子”,在阅读完整的问题之前,我已经将答案刻在了一块石头上。
phresnel '16

注意,一英寸等于25.4毫米。
Paddy Landau

6

Xdpyinfo是用于显示有关X服务器的信息的实用程序。它用于检查服务器的功能,在客户端与服务器之间进行通信时使用的各种参数的预定义值以及可用的不同类型的屏幕和视觉效果。

获取监视器大小的命令是:

xdpyinfo | grep dimensions

结果

dimensions:    1366x768 pixels (361x203 millimeters)

1
嗨,Parto,我真的很喜欢您的答案+1,但是,请看这里:bbs.archlinux.org/viewtopic.php?id=204823尺寸报告和中存在巨大差异。xdpyinfoxrandr
雅各布·弗利姆


1
当使用良好的旧物理质量卷尺进行测量时,我几乎完全在屏幕上看到xrandr:473mm 的输出,而xdpyinfo报告的距离太短(445mm)。结果这个问题变得更加有趣,然后假设我猜是OP :)
Jacob Vlijm

0

这也是我一直在努力的事情(当我想自己升级到新显示器并想知道旧显示器的尺寸时),所以我写了一个shell脚本来查找适合您的显示器尺寸。

我使用xdpyinfo第一个答案中的来获取屏幕尺寸并在其上进行构建。该脚本实质上是根据屏幕尺寸计算对角线,将毫米转换为英寸并显示结果。

资料库URL:https : //github.com/abhishekvp/WhatsMyScreenSize

希望这可以帮助!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.