Как я могу получить размер монитора моего ноутбука?

42

Что такое команда Ubuntu Linux для определения размера монитора ноутбука? Я хочу знать в дюймах, если это возможно.

Благодарность

user111
источник
Привет user111, пожалуйста, смотрите это: 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]]))

РЕДАКТИРОВАТЬ 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«473 мм x 296 мм».
agold
1
@agold Теперь это интересно. Разница округления. Еще одна интересная вещь - xdpyinfoвывод на экран размера рабочего стола (обоих экранов), а не размера экрана!
Джейкоб Влейм
@ agold разница слишком большая для округления !! Смотрите мое редактирование.
Джейкоб Влейм
да, он довольно большой, но как эти программы получают эту информацию? Это какая-то мета информация, поступающая с монитора, или она рассчитывается на основе каких-то других параметров ...?
agold
@agold Похоже, это связано с ошибкой в xdpyinfo: bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/201491 AL Хотя отчет довольно старый, я не вижу его исправленным. См. Также: 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

phresnel
источник
Спросите Ubuntu - это сайт, посвященный программным решениям, поэтому ваш ответ здесь немного не по теме ... С другой стороны, он правильный, хорошо написанный, очень читаемый и забавный! :-) Так что проголосовали!
Fabby
1
@ dn-ʞɔɐqɹW: На самом деле, это связано с ошибкой с моей стороны. Я прочитал вопрос «Как я могу получить размер монитора моего ноутбука?», И моя первая мысль была «хорошо, с линейкой», и, прежде чем прочитать полный вопрос, я вырезал свой ответ из каменного блока.
Френель
Как примечание стороны, один дюйм равен 25,4 мм точно.
Пэдди Ландау
6

Xdpyinfoутилита для отображения информации о X-сервере Он используется для проверки возможностей сервера, предопределенных значений для различных параметров, используемых при обмене данными между клиентами и сервером, а также различных типов экранов и визуальных элементов, которые доступны.

Команда для получения размера монитора:

xdpyinfo | grep dimensions

Результат

dimensions:    1366x768 pixels (361x203 millimeters)
Parto
источник
1
Привет, Парто, мне очень нравится твой ответ +1, однако, посмотри здесь: bbs.archlinux.org/viewtopic.php?id=204823 существует огромная разница в xdpyinfoотчетах измерений и xrandr.
Джейкоб Влейм
@Jacob Что-то интересное - askubuntu.com/questions/378386/…
Parto
1
При измерении с хорошей старой физического качеством рулеткой, я получаю на моем экране в значительной степени именно на выходе xrandr: 473mm, в то время как xdpyinfoотчеты пути слишком короткий ( 445mm). Этот вопрос оказывается более интересным, чем предположил ОП, я думаю :)
Джейкоб Влейм
0

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

Я использовал xdpyinfoпервый ответ, чтобы получить размеры экрана и опередил его. Сценарий, по сути, вычисляет диагональ по размерам экрана, конвертирует из миллиметров в дюймы и отображает результат.

URL репозитория: https://github.com/abhishekvp/WhatsMyScreenSize

Надеюсь это поможет!

Абхишек Потнис
источник