Прежде чем говорить о мониторах с высоким разрешением надо сначала определиться что же считать этим самым «высоким разрешением». По умолчанию XOrg всегда настраивает монитор исходя из предполагаемого разрешения в 96dpi (96 dots per inch - 96 точек на дюйм).
Распространённые мониторы с диагональю 15.6 дюйма и разрешением 1366x768 точек имеют реальное разрешение около 100dpi и при настройке их как 96dpi особых проблем как правило не возникает. Проблемы обычно возникают если реальное разрешение монитора превышает 120dpi. В этом случае шрифты и элементы интерфейса начинают казаться мелкими и возникает потребность в настройке. Именно о таких мониторах и пойдёт речь далее.
Сразу уточним: этот текст не претендует на абсолютную истину, а скорее описывает опыт автора по настройке Kubuntu 18.04 на ноутбуке HP Probook 430 G6 с экраном диагональю 13.3 дюйма и разрешением 1920x1080, что примерно соответствует рарзрешению 165dpi.
Итак, мы имеем реальное разрешение экрана в 165dpi и выставляемое по умолчанию в 96dpi. Получается что все элементы на экране кажутся уменьшенными в 1.7 раза. Разработчики KDE предлагают простой способ решения проблемы в виде настройки доступной в центре управления. Она доступна по пути «Оборудование» -> «Экран» -> «Экраны» и называется «Масштабирование содержимого экрана»:
Сначала это даже кажется хорошим решением, однако эта настройка не меняет настройки dpi, а использует обходные пути. В итоге на экране появляются различные дефекты отрисовки, бывают проблемы со шрифтами и т.п. Если вас это не смущает то дальше можете не читать :-)
Более сложный путь это корректная настройка dpi в XOrg. На самом деле даже это не решит всех проблем, но по крайней мере снизит их количество. Первым делом нужно узнать физическую ширину и высоту монитора в миллиметрах. В редких случаях эти параметры можно узнать из технических характеристик устройства. В остальных можно воспользоваться линейкой и банально измерить экран. Кроме того зная соотношение сторон и диагональ экрана можно вычислить ширину и высоту и для этого более чем достаточно школьного курса геометрии. Для экранов с соотношением сторон 16:9 можно использовать следующие формулы:
- Ширина (мм) = 22.14 * Диагональ (дюйм)
- Высота (мм) = 12.45 * Диагональ (дюйм)
Далее нужно создать файл "/etc/X11/xorg.conf.d/90-monitor.conf" следующего содержания:
Section "Monitor" Identifier "<default monitor>" DisplaySize 290 170 EndSection
В строке DisplaySize нужно указать свои значения сначала ширины, а потом высоты экрана. Затем необходимо перезапустить XOrg и на первый взгляд работа завершена. Узнать текущие параметры экрана можно командой:
xdpyinfo|grep -B2 resolution
На данном этапе корректно работают все приложения, написанные с использованием библиотек KDE и GTK2, а так же большая часть приложений на QT4/QT5.
Очень большое количество приложений использует библиотеку GTK3. Эта библиотека игнорирует настройки DPI в X, однако «уважает» переменные окружения «GDK_SCALE» и «GDK_DPI_SCALE». Первая определяет во сколько раз будет масштабирован интерфейс приложений GTK3. Обязательно целое число. Вторая отвечает за масштабирование шрифтов. Подробнее можно прочитать тут.
Обычно рекоммендуется с помощью «GDK_SCALE» увеличить размер всех элементов, а потом с помощью «GDK_DPI_SCALE» корректируется размер шрифта. Однако если масштабировать надо менее чем в два раза то стоит воспользоваться тем фактом, что многие темы GTK3 подстраиваются под размер шрифта (например применяемая в Kubuntu тема «Breeze») и потому достаточно отрегулировать размер шрифта. При использовании в качестве оболочки bash нужно в файл &laqup;~/.bashrc» добавить строку:
export GDK_DPI_SCALE=1.4
Коэффициент здесь зависит от вашего dpi. В общем виде он получается по формуле: ваш_dpi/96. Однако если визуально кажется что приложения увеличены или уменьшены слишком сильно то его можно подкорректировать вручную.
Если используется оболочка fish то нужно в файл «~/.config/fish/config.fish» строку вида:
set -x GDK_DPI_SCALE 1.4
Если вы используете другую оболочку то действуйте в соответствии с её документацией. В любом случае после добавления переменной окружения необходимо перезапустить сеанс чтобы изменения вступили в силу.
Следующая проблема: значки на панелях инструментов. Независимо от используемой графической библиотеки в Linux они всегда имеют фиксированный размер (кроме отдельных приложений) и не масштабируются вместе с остальными элементами. Единственный путь это менять размер этих значков в настройках.
И даже на этом шаге остаются ещё приложения, которым требуется отдельная настройка. Единого рецепта тут нет и с каждым конкретным случаем надо разбираться отдельно.
Например в IDE sublimetext3 за масштабирование отвечает опция «ui_scale» в файле конфигурации. По умолчанию (и если не указана) её значение равно "1.0". Необходимо вписать желаемый коэффициент и перезапустить IDE.
RSS-читалка quiterss позволяет отдельно настроить разрмер шрифтов и значков панелей. В целом это решает проблему, хотя конечно это костыль.
Официальный клиент ICQ в разделе «Настройки» -> «Оформление» содержит ползунок управления машстабом интерфейса. Решение не идеальное, но достаточно разумное и удобное.
Очень логично настраивается wine: в утилите «winecfg» в разделе «Графмка» можно указать DPI. Однако следует помнить что не все Windows-приложения корректно работают с нестандартными разрешениями и им уже никак не помочь.
Отдельная история это Java-приложения. DBeaver сразу подхватывает настроки DPI и работает корректно, а во Arduino IDE корректно показывает меню, но самом редакторе требуется настроить размер шрифта.
Ladm 2020-01-09 19:12:27 (#)