Respostas:
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 disconnected
será incluído)
xdpyinfo
exrandr
xrandr
lista as telas separadamente (no caso de vários monitores), xdpyinfo
gera 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 .
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]])
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]
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
#!/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]]))
"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.
xdpyinfo
"474x303 milímetros" e xrandr
"473mm x 296mm".
xdpyinfo
gera o tamanho da área de trabalho (ambas as telas), não o tamanho da tela!
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
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 ":
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
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)
xdpyinfo
relatórios de dimensões e xrandr
.
xrandr
: 473 milímetros, enquanto xdpyinfo
relatórios maneira muito curta ( 445mm
). Esta questão torna-se mais interessante OP, em seguida, assumiu Eu acho que :)
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 xdpyinfo
da 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!