Jak mogę uzyskać rozmiar monitora laptopa?

42

Co to jest polecenie Linux Ubuntu, aby znaleźć rozmiar monitora laptopa? Chcę wiedzieć w calach, jeśli to możliwe.

Dzięki

użytkownik111
źródło
Cześć użytkownik 111, zobacz: meta.askubuntu.com/q/15051/72216 . Czy mógłbyś przynajmniej przekazać jakieś uwagi ?
Jacob Vlijm

Odpowiedzi:

47

Inną opcją przy użyciu xrandrjest polecenie:

xrandr | grep ' connected'

Wynik:

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

(uwaga na miejsce wcześniej connected, w przeciwnym razie disconnectedzostanie uwzględniona)

Ważne różnice między xdpyinfoixrandr

  • Podczas gdy xrandrwyświetla listę ekranów osobno (w przypadku wielu monitorów), xdpyinfowyświetla jeden zestaw wymiarów dla wszystkich ekranów razem („rozmiar pulpitu” zamiast rozmiaru ekranu)
  • Jak zauważył @agold, istnieje (całkiem) różnica między nimi, która wydaje się zbyt duża, aby była zwykłą różnicą zaokrąglania:

    xrandr: 473mm x 296mm
    xdpyinfo: 445x278
    

Wydaje się, że jest związany z błędem w xdpyinfo. Zobacz także tutaj .

Jeśli nalegasz na cale

Użyj małego skryptu poniżej; wyświetla rozmiar twoich ekranów w calach; szerokość / wysokość / przekątna (cale)

#!/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]])

Aby go użyć:

Skopiuj skrypt do pustego pliku, zapisz go jako get_dimensions.py, uruchom go za pomocą polecenia:

python3 /path/to/get_dimensions.py

Dane wyjściowe na moich dwóch ekranach:

width - height - diagonal (inches)

[18.6, 11.7, 22.0]
[14.8, 11.9, 19.0]



Edytować

Fantazyjna wersja tego samego skryptu (z kilkoma ulepszeniami i ładniejszym wyjściem), wyglądająca jak:

Screen  width   height  diagonal
--------------------------------
DVI-I-1 18.6    11.7    22.0
VGA-1   14.8    11.9    19.0

Scenariusz:

#!/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]]))

EDYCJA 2 (maj 2019)

„Rodzaj” na życzenie (w komentarzu), zmodernizowana / bardziej zaawansowana / ulepszona (bez wywołań systemowych, bez analizowania, ale przy użyciu Gdk.Display), wykonująca prawie dokładnie to samo:

#!/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]]))

Wynik:

Screen  width   height  diagonal
--------------------------------
eDP-1   20.0    11.3    23.0
HDMI-1  18.6    11.7    22.0

Pozostawię pierwotną odpowiedź, ponieważ usunięcie odpowiedzi po tak długim czasie, który wygenerował istniejące głosy, wydaje się niewłaściwe.

Jacob Vlijm
źródło
Na marginesie, ale obie odpowiedzi dają różne wyniki: „474 x xdpyinfo303 milimetry” i xrandr„473 mm x 296 mm ”.
ponownie
1
@agold To jest interesujące. Różnica w zaokrągleniu. Kolejną interesującą rzeczą jest to, że xdpyinfowyświetla rozmiar pulpitu (oba ekrany), a nie rozmiar ekranu!
Jacob Vlijm,
@agold różnica jest zbyt duża, aby zaokrąglić różnicę !! Zobacz moją edycję.
Jacob Vlijm
tak, jest dość duży, ale w jaki sposób te programy uzyskują te informacje? Czy to jakieś meta informacje pochodzące z monitora, czy szacuje się je na podstawie innych parametrów ...?
ponownie
@agold Wygląda na to, że jest to związane z błędem w xdpyinfo: bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/201491 AL Chociaż raport jest dość stary, nie widzę go naprawić. Zobacz także: bbs.archlinux.org/viewtopic.php?id=204823
Jacob Vlijm
14

Na wypadek, gdybyś chciał uzyskać bardziej ogólną odpowiedź, możesz odciąć węzeł gordiański i użyć do tego fizycznego władcy, który nie jest naukowy . Zgodnie z tą wiki „rozmiar ekranu jest zwykle opisywany przez długość jego przekątnej ”:

wprowadź opis zdjęcia tutaj

Jeśli masz linijkę wyświetlającą tylko centymetry , możesz użyć prostej konwersji :

1 cm = 0.393701 in
(or 2.54 cm = 1 in)

Więc jeśli linijka mierzy 30 centymetrów , ekran ma 11,811 cali. Możesz również użyć Google z zapytaniem w formularzu 30 cm to in.


Prawa do zdjęć: https://en.wikipedia.org/wiki/File:Display_size_measurements.png

fresnel
źródło
Zapytaj Ubuntu to strona z rozwiązaniami programowymi, więc twoja odpowiedź jest nieco nie na temat ... Z drugiej strony jest poprawna, dobrze napisana, bardzo czytelna i zabawna! :-) Tak gorąco!
Fabby
1
@ dn-ʞɔɐqɹW: Właściwie jest to spowodowane błędem po mojej stronie. Przeczytałem pytanie „Jak mogę uzyskać rozmiar monitora mojego laptopa?”, A moją pierwszą myślą było „no, z linijką”, a przed przeczytaniem pełnego pytania miałem swoją odpowiedź wyciętą kamienną bryłę.
fresnel
Na marginesie, jeden cal to dokładnie 25,4 mm.
Paddy Landau
6

Xdpyinfoto narzędzie do wyświetlania informacji o serwerze X. Służy do badania możliwości serwera, predefiniowanych wartości różnych parametrów używanych w komunikacji między klientami a serwerem oraz różnych dostępnych typów ekranów i elementów wizualnych.

Polecenie uzyskania rozmiaru monitora to:

xdpyinfo | grep dimensions

Wynik

dimensions:    1366x768 pixels (361x203 millimeters)
Parto
źródło
1
Cześć Parto, naprawdę podoba mi się twoja odpowiedź +1, jednak spójrz tutaj: bbs.archlinux.org/viewtopic.php?id=204823 jest ogromna różnica w xdpyinforaportach wymiarów i xrandr.
Jacob Vlijm
@Jobob Coś ciekawego - askubuntu.com/questions/378386/…
Parto
1
Podczas pomiaru za pomocą dobrej starej taśmy mierniczej o jakości fizycznej wyświetlam na ekranie prawie dokładnie wynik xrandr: 473 mm, a xdpyinforaporty są o wiele za krótkie ( 445mm). To pytanie okazuje się bardziej interesujące niż przypuszczam, że OP :)
Jacob Vlijm
0

To było coś, z czym również miałem problem (kiedy chciałem uaktualnić do nowego monitora dla siebie i chciałem wiedzieć, jaki rozmiar ma mój stary monitor), więc napisałem skrypt powłoki, który znajdzie dla ciebie rozmiar monitora.

Skorzystałem xdpyinfoz pierwszej odpowiedzi, aby uzyskać wymiary ekranu i zbudowałem na niej. Skrypt zasadniczo oblicza przekątną na podstawie wymiarów ekranu, konwertując z milimetrów na cale i wyświetla wynik.

Adres URL repozytorium: https://github.com/abhishekvp/WhatsMyScreenSize

Mam nadzieję że to pomoże!

Abhishek Potnis
źródło