Ответы:
Другой вариант, использующий 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]]))
«Вид» по запросу (в комментарии), модернизированная / более продвинутая / улучшенная (без системных вызовов, без разбора, но с использованием 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
Надеюсь это поможет!