Como posso obter o tamanho do monitor do meu laptop?


Respostas:


47

Outra opção, usando xrandr, é o comando:

xrandr | grep ' connected'

Saída:

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

(lembre-se do espaço antes connected, mais disconnectedserá incluído)

Diferenças importantes entre xdpyinfoexrandr

  • Enquanto xrandrlista as telas separadamente (no caso de vários monitores), xdpyinfogera um único conjunto de dimensões para todas as telas juntas ("tamanho da área de trabalho" em vez do tamanho da tela)
  • Como observado pelo @agold, há (bastante) uma diferença entre os dois, que parece grande demais para ser uma simples diferença de arredondamento:

    xrandr: 473mm x 296mm
    xdpyinfo: 445x278
    

Parece relacionado a um bug no xdpyinfo. Veja também aqui .

Se você insistir em polegadas

Use o pequeno script abaixo; gera o tamanho da (s) tela (s) em polegadas; largura / altura / diagonal (polegadas)

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

Para usá-lo:

Copie o script em um arquivo vazio, salve-o como get_dimensions.py, execute-o pelo comando:

python3 /path/to/get_dimensions.py

Saída nas minhas duas telas:

width - height - diagonal (inches)

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



Editar

Versão sofisticada do mesmo script (com algumas melhorias e uma saída melhor), parecido com:

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

O script:

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

"Kind of", mediante solicitação (em um comentário), uma versão modernizada / mais avançada / aprimorada (sem chamadas do sistema, sem análise, mas usando o Gdk.Display), fazendo exatamente o mesmo:

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

Saída:

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

Deixarei a resposta original, pois parece inapropriado remover a resposta depois de tanto tempo que gerou os votos existentes.


Apenas uma observação, mas ambas as respostas me dão resultados diferentes: xdpyinfo"474x303 milímetros" e xrandr"473mm x 296mm".
agold

11
@agold Agora isso é interessante. Uma diferença de arredondamento. Outra coisa interessante é que xdpyinfogera o tamanho da área de trabalho (ambas as telas), não o tamanho da tela!
Jacob Vlijm

@agold a diferença é muito grande para uma diferença de arredondamento !! Veja minha edição.
Jacob Vlijm

sim, é bastante grande, mas como esses programas obtêm essas informações? São algumas metainformações provenientes do monitor ou são estimadas com base em outros parâmetros ...?
agold

@agold Ele parece estar relacionado a um bug no xdpyinfo: bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/201491 Embora o relatório é bastante antigo, eu não vê-lo fixo. Veja também: bbs.archlinux.org/viewtopic.php?id=204823
Jacob Vlijm

14

Caso queira uma resposta mais geral, você pode cortar o nó gordiano e usar uma régua física não nerd para isso. De acordo com este wiki , o "tamanho de uma tela é geralmente descrito pelo comprimento de sua diagonal ":

insira a descrição da imagem aqui

Se você possui uma régua que exibe apenas centímetros , pode usar a conversão simples :

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

Portanto, se sua régua medir 30 centímetros , sua tela terá 11,811 polegadas. Você também pode usar o google com uma consulta do formulário 30 cm to in.


Créditos da imagem: https://en.wikipedia.org/wiki/File:Display_size_measurements.png


O Ask Ubuntu é um site de soluções de software, então sua resposta é um pouco fora de tópico aqui ... Por outro lado, é correto, bem escrito, muito legível e engraçado! :-) Tão votado!
Fab22

11
@ dn-ʞɔɐqɹW: Na verdade, é baseado em um erro do meu lado. Li a pergunta "Como posso obter o tamanho do monitor do meu laptop?", E meu primeiro pensamento foi "bem, com uma régua" e, antes de ler a pergunta completa, tive minha resposta entalhada no bloco de pedra.
phresnel 22/02

Como nota lateral, uma polegada é igual a 25,4 mm exatamente.
Paddy Landau

6

Xdpyinfoé um utilitário para exibir informações sobre um servidor X. É usado para examinar os recursos de um servidor, os valores predefinidos para vários parâmetros usados ​​na comunicação entre clientes e o servidor e os diferentes tipos de telas e recursos visuais disponíveis.

O comando para obter o tamanho do monitor é:

xdpyinfo | grep dimensions

Resultado

dimensions:    1366x768 pixels (361x203 millimeters)

11
Oi Parto, eu realmente gosto da sua resposta +1, no entanto, veja aqui: bbs.archlinux.org/viewtopic.php?id=204823 há uma enorme diferença nos xdpyinforelatórios de dimensões e xrandr.
Jacob Vlijm

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

11
Ao medir com um bom old qualidade física fita métrica, eu fico na minha tela muito bonito exatamente a saída xrandr: 473 milímetros, enquanto xdpyinforelatórios maneira muito curta ( 445mm). Esta questão torna-se mais interessante OP, em seguida, assumiu Eu acho que :)
Jacob Vlijm

0

Isso era algo com o qual eu também estava lutando (quando eu queria atualizar para um novo monitor para mim e queria saber qual era o tamanho do meu monitor antigo), então escrevi um script de shell que encontra o tamanho do monitor para você.

Eu usei o xdpyinfoda primeira resposta para obter as dimensões da tela e construí-lo à frente. O script calcula essencialmente a diagonal das dimensões da tela, convertendo de milímetros em polegadas e exibe o resultado.

URL do repositório: https://github.com/abhishekvp/WhatsMyScreenSize

Espero que isto ajude!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.