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

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

Я объясню на примере системы с Ubuntu 12.04 с Gnome Classic и монитором с разрешением 1680x1050. Мои начальные настройки: 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.