Dpi монитора: как посмотреть, какие проги как отображаются

Display scaling в Linux. Часть 1 — системные настройки / Хабр

Дисплеи с высокой плотностью пикселей уже давно не редкость. И для того, чтобы UI не выглядел слишком мелко, применяется масштабирование. В разных системах используются разные подходы и имеются различные возможности настроек. Но одно объединяет их все — безмерное количество кривизны, костылей и глюков. Посмотрим как на сегодняшний день обстоит ситуация в лагере Linux.

Цель первой части — обрисовать ситуацию с настройками масштабирования в системе из коробки, без лишних плясок с бубном — так, как ее видит обычный пользователь.

Десктопных окружений великое множество, проверить все займет огромное количество времени, поэтому критерии выбора такие — находится в активной разработке и не требует отдельной установки, т.е. идет в комплекте с каким-н дистрибутивом. Ну и конечно оно должно быть более мене известным, потому выбирал просто из перечня в таблице.

Дистрибутивы для обзора были использованы следующие: Ubuntu и Fedora для Gnome, openSUSE для KDE, Manjaro для XFCE, Debian для MATE, Mint для Cinnamon, Ubuntu для LXQt и Deepin с его одноименным окружением.

Gnome

Поддерживает независимые настройки масштабирования для каждого монитора.

Окно настроек Settings -> Displays

Доступные коэффициенты рассчитываются в зависимости от разрешения монитора, для 4K возможны варианты от 100% до 400%, для FullHD — 100% и 200%.

Дробное масштабирование (Fractional scaling) поддерживается частично. Возможность установки дробного масштабирования в различных дистрибутивах либо присутствует в настройках дисплея (например в Ubuntu), либо скрыта (как в Fedora). Но даже если опция скрыта, включить этот режим можно с помощью команды

gsettings set org.gnome.mutter experimental-features "['scale-monitor-framebuffer']"

Доступные коэффициенты также рассчитываются в зависимости от разрешения монитора, для 4K возможны варианты от 100% до 400% с шагом 25%, для FullHD — от 100% до 225%.

Поскольку актуальная версия Gnome использует протокол Wayland, то для полноценной работы приложения должны поддерживать эту технологию. Для обычных X11 приложений написанных с использованием UI-фреймворков, которые не поддерживают Wayland используется реализация X Server под названием XWayland. К сожалению дробное масштабирование среди того что не поддерживается в режиме совместимости, в этом случае X11 приложения отрисовываются в 100% масштабе а затем просто растягиваются до необходимых размеров, даже если в этом режиме выбран целочисленный коэффициент. Когда то за подобное ругали Windows… лет десять назад.

Изменения настроек применяются сразу, log out не требуется.

В окне справа все размытоВ обычном режиме все в порядке

KDE

System Settings -> Display and Monitor

В сессии X11 не поддерживает независимые настройки масштабирования для нескольких мониторов.

Дробное масштабирование поддерживается, доступные коэффициенты от 100% до 300% (не зависят от разрешения) с шагом 25%.

С ходу бросается в глаза что высота панели задач не меняется.

Изменения требуют сделать restart, по факту достаточно перелогиниться.

В Wayland сессии можно указать независимые настройки для разных мониторов, масштабирование дробное и по умолчанию X11 приложения будут отображаться с размытием так же как и в Gnome. Но начиная с Plasma 5.26 добавилась опция позволяющая X11 приложениям масштабироваться самостоятельно, в этом случае все работает прекрасно и никакого размытия. С панелью задач тоже все в порядке.

Новая опция в 5.26

XFCE

Тут все плохо. Поддержка с виду как бы есть но лучше бы ее совсем не было, такое впечатление что код не то что не тестировали, а даже не запускали.

Settings -> DisplaySettings -> Appearance

Независимые настройки для каждого монитора есть, также есть секретная опция Window Scaling в Appearance.

Дробное масштабирование с виду поддерживается, но теперь самое интересное — ставим в первом окне коэффициент 1.5x вместо 1x и… весь UI уменьшается. Причем чем больше коэффициент тем мельче будет UI

Вот так выглядит масштаб 2x на 15» 4K экране ноутбука

Взяв линейку легко выявить что все размеры не умножаются на scale factor, а делятся на него т.е. Вместо 150% получаем 66%, вместо 200% — 50% и.т.п. Что интересно, настройки позволяют указывать произвольное значение от 0. 1 до 10.0 с шагом 0.1. Если указать значение меньше единицы то UI таки увеличится (например 0.7 даст примерно 143%), но размыто будет абсолютно все. Ситуацию немного улучшает секретная опция Window scale, там всего два варианта 1x и 2x, если выбрать 2x, то размер окон будет умножен на 2 и поделен на коэффициент из настроек дисплея. Тогда коэффициент 1.5 даст масштаб 133%, а коэффициент 2 сократится до 100% и в этом случае проще оставить везде единицы.

Применение настроек требует перелогиниться. Причем делать это придется видимо с клавиатуры, потому что кнопки на панели задач отваливаются (видно на первом скриншоте) и не реагируют на нажатия. Короче это не лучший выбор для дисплеев с высокой плотностью пикселей.

MATE

Не поддерживает независимые настройки масштабирования для нескольких мониторов.

Также нет гибкости выбора коэффициентов, только Regular (x1) или HiDPI (x2).

Среди настроек дисплея эту опцию искать бесполезно, она запрятана довольно далеко и неочевидно в System -> Preferences -> Look And Feel -> MATE Tweak.

Изменения применяются сразу.

System -> Preferences -> Look And Feel -> MATE Tweak

Cinnamon

System Settings -> Hardware -> Display

Поддерживает независимые настройки масштабирования для нескольких мониторов.

Поддерживает дробное масштабирование, эта опция помечена как experimental, но по умолчанию включена. Отключение дробного масштабирования отключит также и возможность независимой настройки для разных мониторов. Для дробного масштабирования диапазон настроек от 100% до 200% с шагом 25% независимо от разрешения монитора. При отключенном дробном масштабировании диапазон зависит от разрешения, так же как и на Gnome — от 100% до 400% для 4K и 100% и 200% для FullHD.

Изменения применяются сразу.

System Settings -> Hardware -> Display

LXQt

Preferences -> LXQt Settings -> Session Settings

Не поддерживает независимые настройки масштабирования для нескольких мониторов.

Настройки здесь снова бесполезно искать среди конфигурации дисплея, они запрятаны далеко. Можно указать дробный коэффициент — произвольное значение от 1.0 до 4.0 с точностью в два знака. Заголовки окон не масштабируются.

Применение изменений требует перелогиниться.

Deepin

Control center -> Display

Окружение используется в одноименном китайском дистрибутиве. До недавних пор не знал о его существовании, включил в список только потому что он фигурирует в таблице из Википедии, оказалось что по визуальному оформлению пожалуй один из лучших среди перечисленного.

Не поддерживает независимые настройки масштабирования для нескольких мониторов.

Дробное масштабирование поддерживается, доступные коэффициенты зависят от подключенных мониторов. Например если использовать только 4К то коэффициенты от 1.0 до 3.0 с шагом 0.25, а если в дополнение к 4К подключить FullHD, то доступные коэффициенты только 1.0 и 1.25.

Применение настроек требует перелогиниться.

Вывод

Из всех рассматриваемых окружений только Cinnamon и KDE (начиная с Plasma 5. 26) масштабируют наиболее адекватно, можно настроить например 150% для High-DPI монитора (мне например 200% слишком много), и оставить 100% для второго Low-DPI монитора, и это будет работать.

Вторая часть будет о том, как программно определить системные настройки масштабирования из приложения. Поскольку в Linux нет единого API для этого, то зоопарк с этим творится еще похлеще.

Как найти и изменить разрешение экрана DPI? — Yodo.im

Maxx

#2

Это обновленная версия моего предыдущего ответа, который был связан с Ubuntu 12.04. В версии 16.04 (Ubuntu) для правильной установки DPI требуется 3 шага вместо 2.

Я объясню на примере системы с Ubuntu 12.04 с Gnome Classic и монитором с разрешением 1680×1050. Мои начальные настройки: xdpyinfo | grep dots сообщается 96x96 dots , xrdb -query | grep dpi сообщается Xft. dpi: 96 , grep DPI /var/log/Xorg.0.log сообщил о каких-то странных настройках NOUVEAU(0): DPI set to (90, 88).

В 16.04 выходные данные всех этих 3 команд были согласованы и равнялись 96. Хотя такой консенсус лучше, чем беспорядок 12.04, сообщаемое значение жестко задано и далеко от реального значения DPI.

Давайте рассчитаем оптимальный DPI для моего монитора. Фактический размер экрана можно найти с помощью команды xrandr | grep -w connected (преобразуйте выходные данные в сантиметры) или с помощью длинной линейки вручную. В моем случае: X = 47.4cm ; Y = 29.6cm. Разделите их на 2,54, чтобы получить размер в дюймах: X ~ 18.66in ; Y ~ 11.65in. Наконец, разделите фактическое количество точек (в зависимости от вашего разрешения) на размер в дюймах: X = 1680/18.66 ~ 90dpi ; Y = 1050/11.65 ~ 90dpi. Итак, мой реальный dpi равен 90.

Будьте предупреждены, ручной метод измерения может быть более точным, чем вывод команды xrandr | grep -w connected поскольку более новые версии X server игнорируют размер, указанный EDID, и вычисляют размер, используя разрешение экрана и жестко заданное значение DPI (дополнительная информация здесь).


Другой способ определения размера монитора — это прямое считывание его EDID. Устанавливать read-edid упакуйте и запустите команду sudo get-edid | parse-edid | grep DisplaySize в терминале. Его выходные данные выдадут вам фактический размер вашего монитора в миллиметрах. Если нет — используйте линейку.

Давайте начнем исправлять DPI:

1) В 12.04 запуск gksudo gedit, открыть /etc/lightdm/lightdm.conf и добавьте параметр в разделе [SeatDefaults] раздел:

xserver-command=X -dpi 90

По умолчанию в 16.04 такого файла нет, поэтому вы должны создать lightdm.conf вручную и поместите его в /etc/lightdm/lightdm.conf.d/. Содержимое этого файла такое же:

[SeatDefaults]xserver-command=X -dpi 90

Перезагрузите компьютер или перезапустите X. Сейчас grep DPI /var/log/Xorg.0.log покажет желаемую настройку.

2) В моем предыдущем ответе я предложил создать файл в /etc/X11/Xsession. d/ содержащая строку xrandr --dpi 90. Это работало в 12.04, но в 16.04 этот параметр не является постоянным. В более новых системах мы можем добавить желаемое значение при запуске сеанса. Запустите «Startup Applications», нажмите кнопку «Add», назовите ее «Fix DPI» и задайте команду xrandr --dpi 90 в полевых условиях. Сохраните изменения и повторно войдите в систему. Сейчас xdpyinfo | grep dots будет сообщать 90x90 dots.

Если xdpyinfo по-прежнему показывает 96, затем добавьте тайм-аут перед запуском xrandr. Отредактируйте команду в разделе «Запуск приложений» и измените ее на:

bash -c "sleep 15; xrandr --dpi 90"

Ссылка

Шаг 2 является необязательным для версии 12.04, поскольку в старых системах Шаг 1 исправляет оба Xorg.0.log и xdpyinfo ценности.

3) В GNOME3 значение DPI жестко задано равным 96 и не может быть изменено напрямую, но вместо этого текст можно масштабировать. Вычислите желаемый множитель: desired_DPI / 96 (в моем случае 90/96 = 0.9375). Теперь запустите команду (или используйте dconf если вы предпочитаете):

gsettings set org.gnome.desktop.interface text-scaling-factor 0.9375

Изменения будут применены сразу же. xrdb -query | grep dpi сообщит о желаемом Xft.dpi: 90.

P.S. Существует другой способ исправить настройку DPI, который намного сложнее, и он описан в этот руководство. Я тоже попробовал, и результат был тот же (по крайней мере, в 12.04).

Послесловие: Только разработчики Ubuntu могут с уверенностью сказать, действительно ли значения, измененные шагами 1 и 2, имеют значение в современной Ubuntu или они молча игнорируются. Только шаг 3 приводит к изменениям, которые сразу заметны. Тем пользователям, которые считают, что некоторые приложения все еще могут полагаться на настройки X server, рекомендуется выполнить все 3 шага, описанные выше. В остальном достаточно шага 3 — это единственный способ настройки, принятый в современных дистрибутивах Ubuntu.

DPI любовь ♥ Легко найти DPI / PPI любого экрана

DPI любовь ♥ Легко найти DPI / PPI любого экрана Разрешение: ×

Общий: ×

ДиагональШиринаВысота: ″

Общие диагонали:

пикселей на дюйм

Имя Диагональ Разрешение точек на дюйм дпкс
Нет результатов
» × [раунд((кв.(ш * ш + ч * ч)/д))]

Помогите расширить этот список: Нажмите здесь, чтобы изменить и отправить предложения по изменению

Для обоих терминов есть аргументы.

В целом PPI немного правильнее, но DPI более распространен, поэтому он используется на этом сайте (также ppi.lv не был доступен :P). Если вам интересно, вы можете прочитать больше об этом в статье Википедии о плотности пикселей.

В более поздней терминологии DPI часто используется для фактических пикселей устройства, а количество точек на пиксель (dppx) — для количества пикселей устройства на пиксель CSS (например, на дисплеях Retina это будет 2).

В контексте экранов DPI (точек на дюйм) или PPI (пикселей на дюйм) относятся к количеству пикселей устройства на дюйм, также называемому «плотностью пикселей». Чем выше число, тем меньше размер пикселей, поэтому графика воспринимаются как более четкие и менее пикселизированные. Понятие DPI также используется в полиграфии, хотя точки и их формирование там разные. Как правило, для качественной печати используется разрешение около 300 точек на дюйм, что выше, чем у большинства дисплеев. Вот почему векторная или растровая графика высокого разрешения обычно выглядят более четкими при печати.

Мне надоели маркетинговые разговоры и модные словечки, часто используемые для создания впечатления, что дисплей намного лучше, чем он есть на самом деле, поэтому я хотел помочь людям решить, что им делать с реальными цифрами, с помощью простого в использовании веб-приложения. Кроме того, это было довольно весело делать. 🙂

DPI/PPI — важный показатель для понимания того, насколько четким на самом деле является дисплей, но это лишь один из многих факторов. Помимо технических (на которые понадобилась бы целая книга), есть и те, которые зависят от человеческой природы.

Во-первых, расстояние просмотра может повлиять на воспринимаемый размер пикселя. Следовательно, если мобильный телефон и большой экран имеют одинаковую плотность пикселей, большой экран будет казаться более четким, так как он обычно просматривается с большего расстояния. Вот почему большие экраны могут обходиться значительно меньшей плотностью пикселей. Вот почему в печатном мире плакаты печатаются с гораздо более низким разрешением, чем журналы.

Во-вторых, наши глаза не могут различить разницу между плотностью пикселей выше определенного порога. Этот порог, кажется, варьируется в зависимости от источника, но вот несколько хороших статей, если вам интересно:

  • Руководство дизайнера по DPI
  • Заметки доктора Оптогласса: разрешение человеческого глаза
  • Примечания о разрешении и других деталях человеческого глаза
  • Острота зрения
  • Точек на дюйм Миф
Ручная работа Леа Веру с любовью Твитнуть

Как узнать разрешение экрана моего ноутбука

спросил

6 лет, 11 месяцев назад

Изменено 1 год, 3 месяца назад

Просмотрено 85 тысяч раз

Мой ноутбук — HP 250 G2 с диагональю 15,6 дюйма и антибликовым покрытием HD2 со светодиодной подсветкой (1366 x 768). Пожалуйста, как узнать значение dpi?

  • ноутбук
  • ноутбук-дисплей
  • dpi

1

1366 x 768 пикселей — это 1567 пикселей по диагонали (теорема Пифагора, √(1366 2 +768 2 )=1567; и вы думали, что никогда не будете использовать это).

Если размер экрана составляет 15,6 дюйма по диагонали, 1567 пикселей / 15,6 дюйма составляют примерно 100 пикселей на дюйм.

Вы не получите точное значение PPI, если производитель не опубликует его или вы не измерите экран. Рекламируемое диагональное измерение часто является номинальным числом и может включать небольшую часть панели дисплея за лицевой панелью.

2

Если вы используете Windows 7:

  • Перейти к Панель управления > Внешний вид и персонализация > Дисплей
  • В левом (синем) столбце нажмите Задать пользовательский размер текста (DPI)

Появится окно с названием Custom DPI Scaling .

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *