问题描述
什么是Ubuntu linux命令来查找笔记本电脑的显示器尺寸?如果可能的话,我想用英寸知道。
谢谢
最佳解决思路
使用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
会同时为所有屏幕输出一组尺寸(“desktop size”而不是屏幕尺寸) -
正如@agold所注意到的那样,两者之间存在着(相当)的差异,这看起来太大而不是一个简单的舍入差异:
xrandr: 473mm x 296mm xdpyinfo: 445x278
它似乎与xdpyinfo
中的a bug有关。另请参见here。
如果你坚持英寸
使用下面的小脚本;它以英寸为单位输出屏幕尺寸;宽度/高度/对角线(英寸)
#!/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]
Edit
同一个脚本的精美版本(有一些改进和更好的输出),看起来像:
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月)
“Kind of”根据要求(在评论中),现代化/更高级/改进(没有系统调用,没有解析但使用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
我会留下原来的答案,因为在如此长的时间之后删除答案似乎是不合适的,这产生了现有的选票。
次佳解决思路
如果您想要更一般的答案,可以切割the gordian knot,并使用non-geeky物理ruler。根据this wiki,“屏幕大小通常用其diagonal的长度来描述”:
如果您的标尺只显示centimeters,则可以使用简单的conversion:
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
第三种解决思路
Xdpyinfo
是用于显示有关X服务器的信息的实用程序。它用于检查服务器的功能,客户端和服务器之间通信中使用的各种参数的预定义值,以及可用的不同类型的屏幕和视觉效果。
获取监视器大小的命令是:
xdpyinfo | grep dimensions
结果
dimensions: 1366x768 pixels (361x203 millimeters)