Вопрос или проблема
$ xrandr --prop | grep mm
eDP-1 подключен основной 2160x1440+0+0 (нормальный левый перевернутый правый x ось y ось) 296мм x 197мм
$ xdpyinfo | grep millimeters
размеры: 2160x1440 пикселей (572x381 миллиметров)
$ echo '2k2160 296 25.4//p' | dc
185.40
$ echo '2k2160 572 25.4//p' | dc
95.95
$
С точки зрения размера монитора в мм, первый вывод правильный, и мы можем вывести значение DPI равное 185, второй неправильный, но он согласуется с ненужным(?) значением по умолчанию в 96 DPI.
Это можно рассматривать как любопытный случай, но он имеет важное последствие: все клиенты X считают, что шрифт размером 10pt (например, xterm -fa mono-10
) должен иметь высоту 13px, в то время как чтобы визуально соответствовать 10pt на физическом экране, он должен иметь высоту 26px – другими словами, xterm
в приведенном примере имеет шрифт размером 5pt, почти нечитаемым.
Как я могу убедить сервер X, что реальный DPI, который должен использоваться клиентами, составляет 185?
Ответ или решение
Чтобы убедительно объяснить X-серверу, что реальное разрешение (DPI) вашего дисплея составляет 185, необходимо внести изменения в конфигурацию вашего X-сервера. В данной ситуации расхождение между фактическим DPI и тем, который использует X-сервер (по умолчанию 96 DPI), приводит к неверному отображению шрифтов, что существенно влияет на читаемость. Вот пошаговая инструкция по исправлению данной проблемы.
1. Определите фактическое разрешение вашего дисплея
Из вывода команды xrandr видно, что ваше разрешение составляет 2160×1440 пикселей и размер экрана составляет 296mm x 197mm. Для расчета DPI можно использовать следующую формулу:
[
DPI = \frac{Диагональ \, (пиксели)}{Диагональ \, (дюймы)}
]
Для этого сначала находим диагональ в пикселях с помощью теоремы Пифагора:
[
Диагональ = \sqrt{(2160^2) + (1440^2)} \approx 2594 \, \text{пикселей}
]
Следующим шагом находим диагональ в дюймах:
[
Диагональ_{дюймы} = \frac{\sqrt{(296^2) + (197^2)}}{25.4} \approx 11.38 \, дюймов
]
Теперь можно подсчитать DPI:
[
DPI \approx \frac{2594}{11.38} \approx 228.4 \, DPI
]
Однако вам был нужен DPI 185, с учетом ваших измерений и настроек вы можете подтвердить этот параметр.
2. Установка параметров DPI в X-сервере
Для изменения разрешения DPI выполните следующие шаги:
- Создайте или измените файл конфигурации X-сервера. Обычно это необходимо делать в файле
/etc/X11/xorg.conf
или/etc/X11/xorg.conf.d/
. Вам нужно добавить секциюMonitor
и задать параметры.
Section "Monitor"
Identifier "Monitor0"
Option "DPI" "185 x 185"
EndSection
Section "Screen"
Identifier "Screen0"
Device "Device0"
Monitor "Monitor0"
SubSection "Display"
Depth 24
Modes "2160x1440"
EndSubSection
EndSection
- Генерация нового файла конфигурации. Если у вас нет файла
xorg.conf
, вы можете создать его, выполнив команду:
sudo X -configure
После этого переместите сгенерированный файл в директорию /etc/X11/
.
3. Перезапустите X-сервер
После внесения изменений вам необходимо перезапустить X-сервер. Это можно сделать несколькими способами:
- Выйдите из текущей сессии и вернитесь, или
- Используйте команду:
sudo systemctl restart display-manager
Или перезагрузите компьютер.
4. Проверка изменения
После перезагрузки системы вы можете проверить установленное значение DPI снова с помощью:
xdpyinfo | grep resolution
Убедитесь, что значение DPI теперь отображается как 185.
Заключение
Следуя описанным шагам, вы сможете убедить X-сервер использовать правильное значение DPI, что обеспечит корректное отображение шрифтов и улучшит читаемость на вашем дисплее. Важно помнить, что корректная настройка графических параметров играет важную роль в восприятии информации и комфорте работы пользователя.