Display scaling в Linux. Часть 1 — системные настройки

b838e2bc4c17b010c8f26ff3234a0ebc.jpg

Дисплеи с высокой плотностью пикселей уже давно не редкость. И для того, чтобы UI не выглядел слишком мелко, применяется масштабирование. В разных системах используются разные подходы и имеются различные возможности настроек. Но одно объединяет их все — безмерное количество кривизны, костылей и глюков. Посмотрим как на сегодняшний день обстоит ситуация в лагере Linux.

Цель первой части — обрисовать ситуацию с настройками масштабирования в системе из коробки, без лишних плясок с бубном — так, как ее видит обычный пользователь.

Десктопных окружений великое множество, проверить все займет огромное количество времени, поэтому критерии выбора такие — находится в активной разработке и не требует отдельной установки, т.е. идет в комплекте с каким-н дистрибутивом. Ну и конечно оно должно быть более мене известным, потому выбирал просто из перечня в таблице https://en.wikipedia.org/wiki/Comparison_of_X_Window_System_desktop_environments#Desktop_comparison_information.

Дистрибутивы для обзора были использованы следующие: Ubuntu и Fedora для Gnome, openSUSE для KDE, Manjaro для XFCE, Debian для MATE, Mint для Cinnamon, Ubuntu для LXQt и Deepin с его одноименным окружением.

Gnome

Поддерживает независимые настройки масштабирования для каждого монитора.

Окно настроек Settings -> Displays» />Окно настроек Settings → Displays</p>

<p>Доступные коэффициенты рассчитываются в зависимости от разрешения монитора, для 4K возможны варианты от 100% до 400%, для FullHD — 100% и 200%.</p>

<p>Дробное масштабирование (Fractional scaling) поддерживается частично. Возможность установки дробного масштабирования в различных дистрибутивах либо присутствует в настройках дисплея (например в Ubuntu), либо скрыта (как в Fedora). Но даже если опция скрыта, включить этот режим можно с помощью команды </p>

<pre><code>gsettings set org.gnome.mutter experimental-features

Доступные коэффициенты также рассчитываются в зависимости от разрешения монитора, для 4K возможны варианты от 100% до 400% с шагом 25%, для FullHD — от 100% до 225%.

Поскольку актуальная версия Gnome использует протокол Wayland, то для полноценной работы приложения должны поддерживать эту технологию. Для обычных X11 приложений написанных с использованием UI-фреймворков, которые не поддерживают Wayland используется реализация X Server под названием XWayland. К сожалению дробное масштабирование среди того что не поддерживается в режиме совместимости, в этом случае X11 приложения отрисовываются в 100% масштабе, а затем просто растягиваются до необходимых размеров, даже если в этом режиме выбран целочисленный коэффициент. Когда то за подобное ругали Windows… лет десять назад.

Изменения настроек применяются сразу, log out не требуется.

В окне справа все размытоВ окне справа все размытоВ обычном режиме все в порядкеВ обычном режиме все в порядке

KDE

System Settings -> Display and Monitor» />System Settings → Display and Monitor</p>

<p>Не поддерживает независимые настройки масштабирования для нескольких мониторов.</p>

<p>Дробное масштабирование поддерживается, доступные коэффициенты от 100% до 300% (не зависят от разрешения) с шагом 25%. </p>

<p>С ходу бросается в глаза что высота панели задач не меняется.</p>

<p>Изменения требуют сделать restart, по факту достаточно перелогиниться. </p>

<h2>XFCE</h2>

<p>Тут все плохо. Поддержка с виду как бы есть, но лучше бы ее совсем не было, такое впечатление что код не то что не тестировали, а даже не запускали.</p>

<p><img src=Вот так выглядит масштаб 2x на 15'' 4K экране ноутбука

Взяв линейку легко выявить что все размеры не умножаются на scale factor, а делятся на него т.е. Вместо 150% получаем 66%, вместо 200% — 50% и.т.п. Что интересно, настройки позволяют указывать произвольное значение от 0.1 до 10.0 с шагом 0.1. Если указать значение меньше единицы то UI таки увеличится (например 0.7 даст примерно 143%), но размыто будет абсолютно все. Ситуацию немного улучшает секретная опция Window scale, там всего два варианта 1x и 2x, если выбрать 2x, то размер окон будет умножен на 2 и поделен на коэффициент из настроек дисплея. Тогда коэффициент 1.5 даст масштаб 133%, а коэффициент 2 сократится до 100% и в этом случае проще оставить везде единицы.

Применение настроек требует перелогиниться. Причем делать это придется видимо с клавиатуры, потому что кнопки на панели задач отваливаются (видно на первом скриншоте) и не реагируют на нажатия. Короче это не лучший выбор для дисплеев с высокой плотностью пикселей.

MATE

Не поддерживает независимые настройки масштабирования для нескольких мониторов.

Также нет гибкости выбора коэффициентов, только Regular (x1) или HiDPI (x2).

Среди настроек дисплея эту опцию искать бесполезно, она запрятана довольно далеко и неочевидно в System → Preferences → Look And Feel → MATE Tweak.

Изменения применяются сразу.

System -> Preferences → Look And Feel → MATE Tweak» />System → Preferences → Look And Feel → MATE Tweak </p>

<h2>Cinnamon</h2>

<p><img src=© Habrahabr.ru