system_profiler SPDisplaysDataType
даст вам физическое разрешение дисплея Retina, но оно не даст вам эффективное (масштабированное) разрешение. Если вам это нужно, вы можете получить этоosascript
:
$ osascript -e 'tell application "Finder" to get bounds of window of desktop'
0, 0, 2048, 1280
Обратите внимание, что если вы используете установку с несколькими мониторами, это может потребовать некоторой интерпретации. Например, у меня Retina iMac 21 "с физическим разрешением 4096x2304 и масштабированным разрешением 2560x1440; у меня также есть внешний портретный монитор с разрешением 1440x2560:
┌───────┐┌─────────────┐
│ 1440 ││ 2560x1440 │
│ x2560 ││ │
│ ││ │
│ │└─────────────┘
│ │
│ │
└───────┘
Когда я запускаю команду выше, она сообщает:
-1440, 0, 2560, 2560
Это границы рабочего стола относительно верхнего левого угла основного монитора :
x = -1440 0 2560
┌───────┐┌─────────────┐ y = 0
│ ││ │
│Monitor││ Monitor 0 │
│ 1 ││ │
│ │└─────────────┘
│ │
│ │
└───────┘ 2560
Как вы можете видеть, это само по себе не дает масштабированного вертикального разрешения основного монитора (хотя вы можете выяснить это из физического соотношения сторон).
Другой вариант - разрешение экрана утилиты GPL (которое доступно через Homebrew, если вы не хотите создавать его самостоятельно). Командная строка не похожа ни на что другое на этой земле, но она работает:
$ screenresolution get
2018-04-20 10:00:14.935 screenresolution[12084:518367] starting screenresolution argv=screenresolution get
2018-04-20 10:00:14.938 screenresolution[12084:518367] Display 0: 2560x1440x32@0
2018-04-20 10:00:14.939 screenresolution[12084:518367] Display 1: 1440x2560x32@60
В качестве бонуса он также дает вам глубину цвета в битах и, если возможно, частоту обновления в Гц.