Глобальная переменная среды масштабирования Qt работает некорректно

Глобальная переменная среды масштабирования Qt работает некорректно

Я столкнулся с одной из тех проблем, которые возникают непоследовательно и которые трудно воспроизвести даже мне.

У меня экран 4K (3840x2160), и поэтому я использую масштабирование HiDPI, когда это возможно, с коэффициентом 2. Однако, поскольку я использую пользовательскую настройку, объединяющую Xfce (для панели, настроек и менеджера сеансов) с bspwm (мозаичным оконным менеджером) и picom (духовным преемником Compton в качестве композитора), мне обычно приходится немного пачкать руки, чтобы масштабировать приложения Qt. Настройки Xfce управляют только приложениями GTK.

Чтобы включить масштабирование Qt, я обычно следуюАрх вики, добавляя export QT_SCALE_FACTOR=2в свой .bashrcили пробуя альтернативы ( QT_AUTO_SCREEN_SCALE_FACTOR, QT_SCREEN_SCALE_FACTORS) пока это не заработает. И это работало, когда я запускал Ubuntu 20.04.

Однако с тех пор, как я перешел на Debian 11 "Bullseye", масштабирование Qt теперь непоследовательно на основе сеанса. Когда оно работает, оно работает просто отлично, для каждого приложения. Но в других случаях оно вообще не работает. Кажется, мне нужно перезагрузиться, пока не заработает. И это как подбрасывание монеты, оба результата появляются относительно часто.

В качестве обходного пути я могу указать переменную окружения локально, при запуске приложения, вместо того, чтобы запускать его глобально. Например, env QT_SCALE_FACTOR=2 qpdfviewзапускает qpdfview с соответствующим масштабированием.

Это, конечно, не удобно, и я бы предпочел, чтобы глобальная переменная окружения, определенная в .bashrc, вела себя так, как должна. Кстати, я также пробовал создать .bash_profileвместо этого , но это не улучшило ситуацию.

Итак, что происходит? Я подозреваю проблемы с порядком запуска. Даже когда я не получаю свое масштабирование, printenvпоказывает, что QT_SCALE_FACTOR(или любая альтернатива) указана... так что она там есть, но что-то с ней, должно быть, не так. Я упоминаю порядок запуска, поскольку моя (признанно необычная) настройка, по-видимому, чувствительна к тому, какие процессы уже запущены (или нет); иногда (правда, редко) я загружаюсь с испорченной панелью и окнами, которые не могут занять больше четверти экрана. Поэтому я просто перезагружаюсь, и все в порядке.

В любом случае, я буду признателен за вашу помощь. Спасибо заранее!


EDIT: проблема решена! Lightdm был виновником. Как и объяснялосьздесь, .bashrcи связанные файлы не берутся при входе из lightdm, так как дисплей не запускается оболочкой. Lightdm анализирует несколько файлов для запуска скриптов, и именно здесь вы можете хранить переменные окружения. Их точное имя может зависеть от дистрибутива. Archwiki говорит ~/.xprofile, нона Debianвы бы использовали ~/.xsessionrc.

Итак, я создал ~/.xsessionrcконтейнер export QT_SCALE_FACTOR=2, и теперь он работает.

Связанный контент