Відповіді:
Іншим варіантом використання 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
"473mm x 296mm".
xdpyinfo
виводить розмір робочого столу (обидва екрани), а не розмір екрана!
xdpyinfo
: bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/201491 Хоча звіт є досить старим, я не вважаю його виправленим. Також дивіться: 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
Сподіваюся, це допомагає!