Ответы:
Другой вариант, использующий 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иxrandrxrandrсписки экранов отображаются отдельно (в случае нескольких мониторов), 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]]))
«Вид» по запросу (в комментарии), модернизированная / более продвинутая / улучшенная (без системных вызовов, без разбора, но с использованием 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«473 мм x 296 мм».
xdpyinfoвывод на экран размера рабочего стола (обоих экранов), а не размера экрана!
xdpyinfo: bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/201491 AL Хотя отчет довольно старый, я не вижу его исправленным. См. Также: bbs.archlinux.org/viewtopic.php?id=204823
На всякий случай, если вам нужен более общий ответ, вы можете разрубить гордиев узел и использовать для этого не-гиковскую физическую линейку . Согласно этой вики , «размер экрана обычно описывается длиной его диагонали »:
Если у вас есть линейка, отображающая только сантиметры , вы можете использовать простое преобразование :
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)
xdpyinfoотчетах измерений и xrandr.
xrandr: 473mm, в то время как xdpyinfoотчеты пути слишком короткий ( 445mm). Этот вопрос оказывается более интересным, чем предположил ОП, я думаю :)
С этим я тоже боролся (когда я захотел перейти на новый монитор для себя и хотел узнать, какого размера был мой старый монитор), поэтому я написал сценарий оболочки, который найдет для вас размер монитора.
Я использовал xdpyinfoпервый ответ, чтобы получить размеры экрана и опередил его. Сценарий, по сути, вычисляет диагональ по размерам экрана, конвертирует из миллиметров в дюймы и отображает результат.
URL репозитория: https://github.com/abhishekvp/WhatsMyScreenSize
Надеюсь это поможет!