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
(ocupe o espaço antes de connected
, senão disconnected
será incluído)
Diferenças importantes entre xdpyinfo
e xrandr
- Embora
xrandr
liste as telas separadamente (no caso de vários monitores),xdpyinfo
produz um único conjunto de dimensões para todas as telas juntas ("tamanho da área de trabalho" em vez do tamanho da tela) -
Como notado por @agold, há (bastante) uma diferença entre os dois, o que parece grande demais para ser uma simples diferença de arredondamento:
xrandr: 473mm x 296mm xdpyinfo: 445x278
Parece estar relacionado com um erro em xdpyinfo
. Veja também aqui .
Se você insistisse em polegadas
Use o pequeno script abaixo; Ele exibe o tamanho da sua tela 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 deFancy do mesmo script (com algumas melhorias e uma saída mais agradável), parecendo:
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]]))