Xorg DPI設定を変更したエンティティを確認するには?

Xorg DPI設定を変更したエンティティを確認するには?

Xubuntu 19.04をインストールし、ラップトップの画面解像度を考慮して/etc/lightdm/lightdm.conf次の行を追加しました。

xserver-command=X -dpi 166

その結果、XFCEパネル、端末、その他のGTK2およびGTK3プログラムは(私が設定したように)正しいフォントサイズを使用します。カスタムDPI設定存在する外観フォント166)、しかし他のすべて(例えば、Yakuake)はまだ96 DPIを表示します。また、xdpyinfo以下を試してみると、96 DPIが得られます。

$ xdpyinfo | grep dot
  resolution:    96x96 dots per inch

また、選択して選択を解除するとカスタムDPI設定オプションを使用すると、XFCEでもフォントが減ります(明らかにDPIはXサーバーから再クエリされます)。

したがって、セッションの開始中に一部のエンティティが実行するなど、画面のDPI設定を変更すると疑われますxrandr --dpi 96。手動で実行すると、xrandr --dpi 166プログラムは正常に実行を開始します。

リリース後に回避策を追加するのではなく、この問題をコアで解決できるように、そのエンティティが正確に何をしているのかを知りたいです。どうやって見つけることができますか?

ベストアンサー1

@ mosvyのコメントのおかげで、犯人が正しいという事実がわかりましたxfsettingsdxfce_displays_helper_normalize_crtcこの関数には、96 DPIのランダムハードコーディングされた選択肢が含まれています。

    /* The 'physical size' of an X screen is meaningless if that screen
     * can consist of many monitors. So just pick a size that make the
     * dpi 96.
     *
     * Firefox and Evince apparently believe what X tells them.
     */
    helper->mm_width = (helper->width / 96.0) * 25.4 + 0.5;
    helper->mm_height = (helper->height / 96.0) * 25.4 + 0.5;

0xC3最初のバイトを(x86 / x86_64ディレクティブ)に置き換えてバイナリからこの関数を削除した後、RET96 DPIを強制しなくなりました。

ただし、アップグレードはこのファイルを上書きする可能性があるため、これは完全に長期的な解決策ではありません。したがって、xfce4-settingsパッケージを維持したり(pass apt-mark hold xfce4-settings)、これらの誤動作を防ぐために他の作業を実行する必要があります。

おすすめ記事