Як я можу отримати розмір монітора ноутбука?


42

Що таке команда Ubuntu linux для пошуку розміру монітора ноутбука? Я хочу знати в дюймах, якщо це можливо.

Дякую


Привіт користуваче111, дивіться це: meta.askubuntu.com/q/15051/72216 . Чи могли б ви хоча б надати трохи відгуків?
Яків Влійм

Відповіді:


47

Іншим варіантом використання 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]]))

EDIT 2 (травень 2019)

"Вигляд" на запит (у коментарі), модернізована / більш вдосконалена / вдосконалена (без системних викликів, без розбору, але використання 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 Здається, це пов’язано з помилкою у xdpyinfo: bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/201491 Хоча звіт є досить старим, я не вважаю його виправленим. Також дивіться: bbs.archlinux.org/viewtopic.php?id=204823
Яків Влійм

14

На всякий випадок, якщо ви хочете отримати більш загальну відповідь, ви можете вирізати гордіанський вузол і використовувати для цього фізичну лінійку, яка не є примхливою . Відповідно до цієї вікі , "розмір екрана зазвичай описується довжиною його діагоналі ":

введіть тут опис зображення

Якщо у вас є лінійка, яка відображає лише сантиметри , ви можете скористатися простим перетворенням :

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


Запитайте Ubuntu - це сайт для програмних рішень, тому ваша відповідь тут трохи поза темою ... З іншого боку, це правильно, добре написано, дуже читабельно і смішно! :-) Так прихильно!
Fabby

1
@ dn-ʞɔɐqɹW: Насправді, це засноване на помилці з мого боку. Я прочитав запитання "Як я можу отримати розмір монітора свого ноутбука?", І моя перша думка була "добре, з лінійкою", і перш ніж прочитати повне запитання, у мене відповідь була вирізана з кам'яного блоку.
френель

Як бічна примітка, один дюйм рівно дорівнює 25,4 мм.
Падді Ландау

6

Xdpyinfo- це утиліта для відображення інформації про X-сервер. Він використовується для вивчення можливостей сервера, заздалегідь заданих значень для різних параметрів, що використовуються для спілкування між клієнтами та сервером, та різних типів екранів та візуальних засобів, які є в наявності.

Команда отримати розмір монітора:

xdpyinfo | grep dimensions

Результат

dimensions:    1366x768 pixels (361x203 millimeters)

1
Привіт Парто, мені дуже подобається ваша відповідь +1, однак, дивіться тут: bbs.archlinux.org/viewtopic.php?id=204823 Існує величезна різниця у xdpyinfoзвітах про розміри та xrandr.
Яків Влійм

@Jacob Щось цікаве - askubuntu.com/questions/378386/…
Парто

1
При вимірі з хорошою старої фізичного якістю рулеткою, я отримую на моєму екрані в значній мірі саме на виході xrandr: 473mm, в той час як xdpyinfoзвіти шляху занадто короткий ( 445mm). Це питання виявляється цікавішим, тоді як ОП припускає, мабуть :)
Яків Влійм

0

З цим я теж боровся (коли я хотів перейти на новий монітор для себе і хотів дізнатися, якого розміру мій старий монітор), тому я написав сценарій оболонки, який знаходить для вас розмір монітора.

Я використовував xdpyinfoз першої відповіді, щоб отримати розміри екрана і будувати його наперед. Сценарій по суті обчислює діагональ від розмірів екрана, перетворюючи з міліметрів на дюйми і відображаючи результат.

URL-адреса сховища: https://github.com/abhishekvp/WhatsMyScreenSize

Сподіваюся, це допомагає!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.