habrahabr

Настройка GUI в линуксе для мониторов с High DPI

  • воскресенье, 17 августа 2014 г. в 03:11:00
http://habrahabr.ru/post/233551/

В последнее время появилось достаточно много мониторов с высоким разрешением, 150 dbi и выше, особенно в ноутбуках. И при этом всё выглядит жутко маленьким.
Причина этого — система думает что у Вашего монитора разрешение 96..100 dpi.
Решать это только увеличением размера шрифта неправильно, т.к. размеры всех остальных элеменов интерфейса остаются маленькими. Надо чтобы графическая оболочка сама это делала.

Мне с решением этой проблемы пришлось весьма долго рыться в интернете, собирая мелкие заметки, т.к. не оказалось места где бы это можно было увидеть всё вместе.

Ниже будет идти список где что поправить, все параметры привожу для своего монитора — 13,3" при 2560x1600, это даёт 226 dpi. Более высокое разрешение сейчас я видел только в ноутбуке Fujistu U904 — 262 dpi.

Параметры монитора: в xorg.conf в параметрах монитора дописать:
Option «DPI» «226 x 226»
или
DisplaySize 286 179 # это тоже самое, но размер экрана задаётся в миллиметрах
Если у Вас нет xorg.conf и монитор у Вас только 1, то можно задать это монитору по умолчанию. Для этого в каталоге конфига иксов создаётся файл xorg.conf.d/90-monitor.conf с таким содержимым:
Section "Monitor"
    Identifier     "<default monitor>"
    Option        "DPI" "226 x 226"
EndSection


В ключи запуска иксов надо дописать -dpi 226, в kdm это строка параметра ServerArgsLocal

Для шрифтов в /etc/X11/Xresourse или ~/.Xresourse:
Xft.dpi 96 заменить на 226

После перезапуска исков можно проверить что это вступило в силу:
— в логе иксов должны быть такие строки /var/log/Xorg.0.log
intel(0): clock: 268.5 MHz Image Size: 286 x 179 mm
intel(0): DPI set to (226, 226)
— xdpyinfo | grep -B2 resolution
screen #0:
dimensions: 2560x1600 pixels (287x179 millimeters)
resolution: 227x227 dots per inch
— xrdb -query | grep dpi
Xft.dpi: 226

Но есть куча программ и GUI которые не смотрят на параметры иксов. Поэтому продолжаем.

Для KDE: Параметры системы => Основные параметры внешнего вида => Шрифты => Использовать другой DPI: 226.
Но значки придётся увеличить отдельно: Параметры системы => Основные параметры внешнего вида => Значки, вкладка Дополнительно.

Для Gnome: в gconf прописать в /desktop/gnome/font_rendering/dpi (нужно ли тут ещё что-то дополнительно — я не знаю, т.к. не пользуюсь Гномом).

Для Firefox: в about:config: layout.css.PixelsPerPx=2.26, layout.css.dpi=226.
Но нередко для броузере не нужно 100% соответствие, поэтому я себе чтобы больше влазило на экран прописал layout.css.PixelsPerPx=2. Хотя firefox и даёт при этом самое точное соответсвие картинке при 100 dpi, но использует странное масштабирование растровых изображений. Сначала внутри получает изображение которое должно было бы быть при 100 dpi, а потом растягивает в 2 раза. Из-за этого картинки получаеются мыльными даже если они имеют высокое разрешение

Для Opera: достаточно установить 200% мастабирование — опера это делает достаточно корректно.

Для Chrome в chrome://flags/ есть параметр «Режим высокого разрешения», но для linux он не доступен. Поэтому остаётся только поставить 200% и «очень крупный» размер шрифта. К сожалению, это не влияет на flash.
Но я у себя поставил в нём 120% и использую для просмотра карт (maps.yandex.ru, maps.google.ru) для высокой детализации картинки.

Konqueror пока не понимает high dpi, и масштабирует неверно, хотя akregator, используя тот же движок, показывает всё правильно без дополнительных указаний.

Проверить что Ваш dpi понят системой корректно лучше всего открыв страницу формата A4 в офисной программе, например OpenOffice, и при 100% масштабировании приложив бумажный лист. Если всё работает правильно, то размеры совпадут.
Так же в OpenOffice в настройках стоит поставить размер значков «большие».

После всех настроек нашлись конфликты жёстко заданных растровых картинок и увеличившихся шрифтов.
Я такое увидел в kdm и в Opera: работать можно, но выглядит не очень приятно — края букв вылазят за отведённые для надписей поля. Поэтому я в xorg.conf.d/90-monitor.conf и в Xresourse заменил 226 на 175. (Вообще странно что opera, считывая размер dpi для меню и других надписей, не использует этот же dpi для отображения html страницы).

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