Для Арбичева, некоторые советы.
Когда будете смотреть dpi и реальные размеры экрана, не доверяйте безоглядно выводу xdpyinfo.
Местами он несёт полный бред:
(при верном dpi, xdpyinfo выдал неверный размер экрана и это даёт повод не доверять его коду)
$ xdpyinfo | grep resolution: -B2
screen #0:
dimensions: 1366x768 pixels (346x195 millimeters)
resolution: 100x100 dots per inch
Потому что реальный размер экрана в миллиметрах, в соответствии со спецификацией на матрицу, например LP156WHB-TPC1:
$ echo '1366*0.252' | bc -l
344.232
$ echo '768*0.252' | bc -l
193.536
Который до целых миллиметра, содержится тремя байтами в edid.
И вывод edid-decode, это уже профессиональный уровень:
$ xrandr --props | edid-decode -e | grep 'Detailed Timing Descriptors:' -A10
Detailed Timing Descriptors:
DTD 1: 1366x768 60.005 Hz 683:384 47.404 kHz 76.320 MHz (344 mm x 194 mm)
Hfront 48 Hsync 32 Hback 164 Hpol N
Vfront 3 Vsync 5 Vback 14 Vpol N
Empty Descriptor
Alphanumeric Data String: 'LG Display'
Alphanumeric Data String: 'LP156WHB-TPC1'
Checksum: 0xb3
(вывод, в котором указан точный размер экрана до целых миллиметра)
Вывод, в котором строка Alphanumeric Data String, содержит модель дисплея.
Гугл-поиск по модели
LP156WHB-TPC1 specification pdf
выдаст ссылки на спецификацию в pdf.
Спецификация на дисплей, содержит размер точки матрицы дисплея.
Это даст возможность высчитать dpi, который должен устанавливать Xorg для дисплея.
Рассчитывается этот dpi по формуле:
Дюйм в сантиметрах перевести в миллиметры и разделить на размер точки матрицы дисплея. Размер которой, в спецификации на дисплей приводится до тысячных миллиметра. А в спецификации мониторов с большим разрешением, может быть указан до десятитысячных миллиметра.
Пример расчёта dpi для дисплея LP156WHB-TPC1 с квадратной точкой матрицы дисплея 0.252x0.252:
$ echo '2.54*10/0.252' | bc -l
100.79365079365079365079
А для монитора PHL 222V8, с размером точки матрицы экрана 0.2493 x 0.241 мм, этот DPI должен быть (101, 105):
$ echo '2.54*10/0.2493' | bc -l
101.88527878058563979141
$ echo '2.54*10/0.241' | bc -l
105.39419087136929460580
Устанавливаемый же Xorg dpi по-умолчанию в системе, содержится в логе:
/var/log/Xorg.0.log
И он не всегда совпадает с тем, который должен устанавливаться для конкретного дисплея.
И если в конфигурационном файле, опцией DisplaySize размер экрана не указан явно, то часто, dpi устанавливаемый Xorg, в логе /var/log/Xorg.0.log будет ошибочным:
$ grep DPI /var/log/Xorg.0.log
[109975.581] (==) modeset(0): DPI set to (96, 96)
Верный DPI, Xorg будет устаналивать, если в альтератор в секции Дисплей, для генерации
/etc/X11/xorg.conf.d/10-monitor.conf,
в опциях alterator-x11
Драйвер:
Разрешение:
Указать размер экрана:
драйвер, разрешение и размер экрана, будут указаны явно.
И 10-monitor.conf будет представлен тремя секциями:
Section "Monitor"
Section "Device"
Section "Screen"
Выполнять перезагрузку после генерации 10-monitor.conf, как говорит альтератор, необязательно.
Достаточно выполнить релогин в X-сессию.
Это может быть исключительно полезно при загрузке лайв без сессии. Когда перезагрузка с сохранением параметров невозможна в принципе.