Come posso ottenere le dimensioni del monitor del mio laptop?


Risposte:


47

Un'altra opzione, utilizzando xrandr, è il comando:

xrandr | grep ' connected'

Produzione:

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

(attenzione allo spazio precedente connected, altrimenti disconnectedverrà incluso)

Differenze importanti tra xdpyinfoexrandr

  • Mentre xrandrelenca le schermate separatamente (nel caso di più monitor), xdpyinfogenera insieme un unico set di dimensioni per tutte le schermate ("dimensioni del desktop" anziché dimensioni dello schermo)
  • Come notato da @agold c'è (abbastanza) una differenza tra i due, che sembra troppo grande per essere una semplice differenza di arrotondamento:

    xrandr: 473mm x 296mm
    xdpyinfo: 445x278
    

Sembra correlato a un bug in xdpyinfo. Vedi anche qui .

Se insisti per i pollici

Usa il piccolo script qui sotto; genera la dimensione del tuo schermo (s) in pollici; larghezza / altezza / diagonale (pollici)

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

Per usarlo:

Copia lo script in un file vuoto, salvalo come get_dimensions.py, eseguilo con il comando:

python3 /path/to/get_dimensions.py

Uscita sui miei due schermi:

width - height - diagonal (inches)

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



modificare

Versione elaborata dello stesso script (con alcuni miglioramenti e un output migliore), simile a:

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

Il copione:

#!/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 (maggio 2019)

"Kind of" su richiesta (in un commento), una versione modernizzata / più avanzata / migliorata (nessuna chiamata di sistema, nessuna analisi ma usando Gdk.Display), facendo praticamente la stessa cosa:

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

Produzione:

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

Lascerò la risposta originale, poiché sembra inappropriato rimuovere la risposta dopo così tanto tempo, che ha generato i voti esistenti.


Solo una nota a xdpyinfomargine , ma entrambe le risposte mi danno risultati diversi: mi dà "474x303 millimetri" e xrandr"473mm x 296mm".
Agold

1
@agold Questo è interessante. Una differenza di arrotondamento. Un'altra cosa interessante è che xdpyinfogenera le dimensioni del desktop (entrambi gli schermi), non le dimensioni dello schermo!
Jacob Vlijm,

@agold la differenza è troppo grande per una differenza di arrotondamento !! Vedi la mia modifica.
Jacob Vlijm,

sì, è abbastanza grande, ma come fanno questi programmi a ottenere queste informazioni? Sono alcune meta informazioni provenienti dal monitor o sono stimate in base ad altri parametri ...?
Agold

@agold Sembra essere correlato a un bug in xdpyinfo: bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/201491 Anche se il rapporto è piuttosto vecchio, non lo vedo corretto. Vedi anche: bbs.archlinux.org/viewtopic.php?id=204823
Jacob Vlijm

14

Nel caso in cui desideri una risposta più generale, puoi tagliare il nodo gordiano e usare un righello fisico non geek per quello. Secondo questa wiki , la "dimensione di uno schermo è solitamente descritta dalla lunghezza della sua diagonale ":

inserisci qui la descrizione dell'immagine

Se hai un righello che mostra solo centimetri , puoi usare la semplice conversione :

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

Quindi, se il tuo righello misura 30 centimetri , lo schermo è 11,811 pollici. Puoi anche utilizzare google con una query del modulo 30 cm to in.


Crediti immagine: https://en.wikipedia.org/wiki/File:Display_size_measurements.png


Chiedi a Ubuntu un sito per soluzioni software, quindi la tua risposta è un po 'fuori tema qui ... D'altra parte, è corretta, ben scritta, molto leggibile e divertente! :-) Così votato!
Fabby,

1
@ dn-ʞɔɐqɹW: In realtà, si basa su un errore dalla mia parte. Ho letto la domanda "Come posso ottenere le dimensioni del monitor del mio laptop?", E il mio primo pensiero è stato "bene, con un righello", e prima di leggere la domanda completa, ho avuto la mia risposta scolpita nel blocco di pietra.
galleria

Come nota a margine, un pollice equivale esattamente a 25,4 mm.
Paddy Landau,

6

Xdpyinfoè un'utilità per visualizzare informazioni su un server X. Viene utilizzato per esaminare le capacità di un server, i valori predefiniti per vari parametri utilizzati nella comunicazione tra client e server e i diversi tipi di schermate e elementi visivi disponibili.

Il comando per ottenere le dimensioni del monitor è:

xdpyinfo | grep dimensions

Risultato

dimensions:    1366x768 pixels (361x203 millimeters)

1
Ciao Parto, mi piace molto la tua risposta +1, tuttavia, guarda qui: bbs.archlinux.org/viewtopic.php?id=204823 c'è un'enorme differenza nei xdpyinforapporti sulle dimensioni e xrandr.
Jacob Vlijm,

@Jacob Qualcosa di interessante - askubuntu.com/questions/378386/…
Parto

1
Quando si misura con una buona qualità fisica tape-measure vecchio, salgo sul mio schermo più o meno esattamente l'output di xrandr: 473 millimetri, mentre xdpyinfoi rapporti modo troppo breve ( 445mm). Questa domanda risulta essere più interessante di quanto OP abbia ipotizzato immagino :)
Jacob Vlijm,

0

Questo era qualcosa con cui anch'io stavo lottando (quando volevo passare a un nuovo monitor per me stesso e volevo sapere quale era la dimensione del mio vecchio monitor), quindi ho scritto uno script di shell che trova la dimensione del monitor per te.

Ho usato la xdpyinfoprima risposta per ottenere le dimensioni dello schermo e costruirci sopra. Lo script calcola essenzialmente la diagonale dalle dimensioni dello schermo, convertendola da millimetri a pollici e visualizza il risultato.

URL del repository: https://github.com/abhishekvp/WhatsMyScreenSize

Spero che sia di aiuto!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.