Qt スケーリング グローバル環境変数が一貫して機能しない

Qt スケーリング グローバル環境変数が一貫して機能しない

私は、一貫性なく発生し、そのため私にとっても再現が難しい問題の 1 つに遭遇しています。

私は 4K (3840x2160) 画面を使用しているため、可能な限り HiDPI スケーリング (係数 2) を使用しています。ただし、Xfce (パネル、設定、セッション マネージャー用) と bspwm (タイル ウィンドウ マネージャー)、picom (コンポジターとしての compton の精神的後継者) を組み合わせたカスタム セットアップを実行しているため、通常、Qt アプリケーションをスケーリングするには少し手間がかかります。Xfce 設定は GTK アプリケーションのみを制御します。

Qtスケーリングを有効にするには、通常、アーチウィキ、 を追加するexport QT_SCALE_FACTOR=2.bashrc、代替案 ( QT_AUTO_SCREEN_SCALE_FACTORQT_SCREEN_SCALE_FACTORS) を試して、動作するまで試しました。Ubuntu 20.04 を実行していたときは動作しました。

しかし、Debian 11 "Bullseye" に移行してから、Qt のスケーリングはセッションごとに一貫性がなくなりました。動作するときには、すべてのアプリケーションで問題なく動作します。しかし、それ以外のときにはまったく動作しません。動作するようになるまで再起動する必要があるようです。そして、コイン投げのように、両方の結果が比較的頻繁に発生します。

回避策として、アプリケーションをグローバルに実行するのではなく、起動時に環境変数をローカルに指定することができます。たとえば、env QT_SCALE_FACTOR=2 qpdfview適切なスケーリングで qpdfview を起動します。

.bashrcもちろん、これは便利ではないので、 で定義されているグローバル環境変数が適切に動作する方がよいでしょう。.bash_profileちなみに、代わりに を作成することも試みましたが、状況は改善されませんでした。

それで、何が起こっているのでしょうか? 起動順序に問題があるのではないかと考えています。スケーリングが取得されない場合でも、 (または代替手段)printenvがリストされていると表示されますQT_SCALE_FACTOR... つまり、そこにありますが、何かがおかしくなっているに違いありません。起動順序について言及しているのは、私の (確かに珍しい) セットアップが、すでに実行されているプロセス (または実行されていないプロセス) に敏感であるようです。ときどき (まれですが)、起動すると、パネルがおかしくなり、画面の 4 分の 1 以上を占めることができないウィンドウが表示されます。そのため、再起動すると、問題は解決します。

とにかく、ご協力いただければ幸いです。よろしくお願いします!


編集:問題は解決しました!犯人はLightdmでした。説明した通りここ.bashrcおよび関連ファイルは、lightdmからログインするときにはソース化されません。これは、ディスプレイがシェルによって起動されないためです。lightdmはスクリプトを開始するためにいくつかのファイルを解析し、ここに環境変数を保存できます。正確な名前はディストリビューションによって異なります。Archwikiには~/.xprofile、と書かれていますが、Debianでを使用します~/.xsessionrc

そこで、~/.xsessionrccontainingを作成しexport QT_SCALE_FACTOR=2、動作するようになりました。

関連情報