Hatred's Log Place

DON'T PANIC!

May 14, 2024 - 3 minute read - Linux

KDE 6 и HiDPI

Дошёл до Manjaro и переезд на KDE6. В лучших традициях жанра, альтернативы в виде KDE5 не оставили.

Но не так страшен чёрт оказался. Правда, при моих 141 DPI (1080p при мониторе 15.6", скрипт для Octave для расчёта тут) пришлось повозиться.

Если ничего не менять, то всё мелко. Если следовать рекомендациям и ставил глобальное масштабирование в 150%, которое и даёт DPI 144, то всё становится адово огромным. При этом установка DPI меняет не только шрифты, но и размеры элементов интерфейса (б$@). В результате вспомнил, что как только у меня QtC стал собираться с Qt6 в какой-то апдейт он тоже стал на моих 141, полез в мой родной .qtc-override (это моя самодеятельность, не обращайте внимание) и выставил теперь для всей системы то, что стояло для Qt Creator:

export QT_SCALE_FACTOR_ROUNDING_POLICY=RoundPreferFloor

что дало то, что мне прямо вот нужно!

Прописал этот параметр в ~/.config/plasma-workspace/env/dpi.sh. Для других окружений можно, например, в ~/.profile или в ~/.config/environment.d/dpi-plasma.conf, но в виде без export:

QT_SCALE_FACTOR_ROUNDING_POLICY=RoundPreferFloor

Детали:

При этом ложка дёгтя остаётся. Глобальное масштабирование рьяно требует шага в 6.25% (на X11). Как я выше писал: для 15.6" монитора при FullHD матрице - это 141 DPI. Два ближайшие значения глобального скалирования, кратные 6.25% это:

  • 150%, что даёт DPI 144
  • 143.75%, что даёт DPI 138

И мои 141 аккурат по середине: 3 пункта вверх и 3 пункта вниз. Ни туда, ни сюда. 138 DPI подходит, наиболее близко для новых матриц в 16". Но для X11 остаётся возможность вручную скорректировать DPI на вкладке Fonts, хотя они и не рекомендуют делать этого. На Wayland сессии этой возможности нет, но, вроде, нет и ограничения на кратность 6.25% (а ещё можно кратность меньше 100% задать). Wayland сильно не тыкал палочкой, так как там нужный мне VirtualBox тупо не работает (точнее гостевые OS с GUI, типа Windows 10).

Короче, что-то у них хреново с промежуточными DPI отличными от 100..200..300% но хоть такие ручки есть.

Ну и резюмируя:

  1. Указываем переменную QT_SCALE_FACTOR_ROUNDING_POLICY (у меня в RoundPreferFloor)
  2. На X11:
    1. Ставим глобальный масштаб (“Input & Output” → “Display & Monitor” → “Display Configuration”) в ближайшее значение, что даёт 141 DPI, для простоты пусть будет 150%
    2. Корректируем DPI в 141 в настройках шрифтов (“Appearance & Style” → “Fonts” → “Fonts” и “Force Font DPI” в нужное значение). Или не трогаем, если вас всё устраивает. Плюсом не трогать: per-monitor работа.
  3. На Wayland:
    1. Судя по всему, только ручками глобального масштаба.

ЗЫ да, напоминаю, что 100% - это 96 DPI, поэтому все множители отсюда и пляшут. Исторически сложилось. Хотя на странице со скриптом-калькулятором физически у мониторов может быть любая дичь.