Это обновленная версия моего предыдущего ответа, который был связан с 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.